mySQL 5.0.11 sources for tomato
[tomato.git] / release / src / router / mysql / mysql-test / suite / parts / r / partition_alter4_myisam.result
blobc74a105306cf3068f8cf78017771115921bead15
1 SET @max_row = 20;
2 SET @@session.storage_engine = 'MyISAM';
4 #------------------------------------------------------------------------
5 #  0. Setting of auxiliary variables + Creation of an auxiliary tables
6 #     needed in many testcases
7 #------------------------------------------------------------------------
8 SELECT @max_row DIV 2 INTO @max_row_div2;
9 SELECT @max_row DIV 3 INTO @max_row_div3;
10 SELECT @max_row DIV 4 INTO @max_row_div4;
11 SET @max_int_4 = 2147483647;
12 DROP TABLE IF EXISTS t0_template;
13 CREATE TABLE t0_template (
14 f_int1 INTEGER,
15 f_int2 INTEGER,
16 f_char1 CHAR(20),
17 f_char2 CHAR(20),
18 f_charbig VARCHAR(1000) ,
19 PRIMARY KEY(f_int1))
20 ENGINE = MEMORY;
21 #     Logging of <max_row> INSERTs into t0_template suppressed
22 DROP TABLE IF EXISTS t0_definition;
23 CREATE TABLE t0_definition (
24 state CHAR(3),
25 create_command VARBINARY(5000),
26 file_list      VARBINARY(10000),
27 PRIMARY KEY (state)
28 ) ENGINE = MEMORY;
29 DROP TABLE IF EXISTS t0_aux;
30 CREATE TABLE t0_aux ( f_int1 INTEGER,
31 f_int2 INTEGER,
32 f_char1 CHAR(20),
33 f_char2 CHAR(20),
34 f_charbig VARCHAR(1000) )
35 ENGINE = MEMORY;
36 SET AUTOCOMMIT= 1;
37 SET @@session.sql_mode= '';
38 # End of basic preparations needed for all tests
39 #-----------------------------------------------
41 #========================================================================
42 #  1.1.1.12    ALTER TABLE <maintenance> PARTITION
43 #========================================================================
44 #------------------------------------------------------------------------
45 #  1   ALTER ... ANALYZE PARTITION
46 #------------------------------------------------------------------------
47 #  1.1 ALTER ... ANALYZE PARTITION part_1;
48 DROP TABLE IF EXISTS t1;
49 CREATE TABLE t1 (
50 f_int1 INTEGER,
51 f_int2 INTEGER,
52 f_char1 CHAR(20),
53 f_char2 CHAR(20),
54 f_charbig VARCHAR(1000)
57 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
58 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
60 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
61 ALTER TABLE t1 ANALYZE PARTITION part_1;
62 Table   Op      Msg_type        Msg_text
63 test.t1 analyze status  OK
64 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
65 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
67 # Start usability test (inc/partition_check.inc)
68 create_command
69 SHOW CREATE TABLE t1;
70 Table   Create Table
71 t1      CREATE TABLE `t1` (
72   `f_int1` int(11) DEFAULT NULL,
73   `f_int2` int(11) DEFAULT NULL,
74   `f_char1` char(20) DEFAULT NULL,
75   `f_char2` char(20) DEFAULT NULL,
76   `f_charbig` varchar(1000) DEFAULT NULL
77 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
78 /*!50100 PARTITION BY HASH (f_int1)
79 (PARTITION part_1 ENGINE = MyISAM,
80  PARTITION part_2 ENGINE = MyISAM) */
82 unified filelist
83 t1#P#part_1.MYD
84 t1#P#part_1.MYI
85 t1#P#part_2.MYD
86 t1#P#part_2.MYI
87 t1.frm
88 t1.par
90 # check prerequisites-1 success:    1
91 # check COUNT(*) success:    1
92 # check MIN/MAX(f_int1) success:    1
93 # check MIN/MAX(f_int2) success:    1
94 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
95 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
96 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
97 WHERE f_int1 IN (2,3);
98 # check prerequisites-3 success:    1
99 DELETE FROM t1 WHERE f_charbig = 'delete me';
100 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
101 # check read via f_int1 success: 1
102 # check read via f_int2 success: 1
103         
104 # check multiple-1 success:     1
105 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
106         
107 # check multiple-2 success:     1
108 INSERT INTO t1 SELECT * FROM t0_template
109 WHERE MOD(f_int1,3) = 0;
110         
111 # check multiple-3 success:     1
112 UPDATE t1 SET f_int1 = f_int1 + @max_row
113 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
114 AND @max_row_div2 + @max_row_div4;
115         
116 # check multiple-4 success:     1
117 DELETE FROM t1
118 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
119 AND @max_row_div2 + @max_row_div4 + @max_row;
120         
121 # check multiple-5 success:     1
122 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
123 INSERT INTO t1
124 SET f_int1 = @cur_value , f_int2 = @cur_value,
125 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
126 f_charbig = '#SINGLE#';
127         
128 # check single-1 success:       1
129 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
130 INSERT INTO t1
131 SET f_int1 = @cur_value , f_int2 = @cur_value,
132 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
133 f_charbig = '#SINGLE#';
134         
135 # check single-2 success:       1
136 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
137 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
138 UPDATE t1 SET f_int1 = @cur_value2
139 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
140         
141 # check single-3 success:       1
142 SET @cur_value1= -1;
143 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
144 UPDATE t1 SET f_int1 = @cur_value1
145 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
146         
147 # check single-4 success:       1
148 SELECT MAX(f_int1) INTO @cur_value FROM t1;
149 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
150         
151 # check single-5 success:       1
152 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
153         
154 # check single-6 success:       1
155 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
156         
157 # check single-7 success:       1
158 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
159 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
160 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
161 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
162 f_charbig = '#NULL#';
163 INSERT INTO t1
164 SET f_int1 = NULL , f_int2 = -@max_row,
165 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
166 f_charbig = '#NULL#';
167 # check null success:    1
168         
169 # check null-1 success:         1
170 UPDATE t1 SET f_int1 = -@max_row
171 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
172 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
173         
174 # check null-2 success:         1
175 UPDATE t1 SET f_int1 = NULL
176 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
177 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
178         
179 # check null-3 success:         1
180 DELETE FROM t1
181 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
182 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
183         
184 # check null-4 success:         1
185 DELETE FROM t1
186 WHERE f_int1 = 0 AND f_int2 = 0
187 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
188 AND f_charbig = '#NULL#';
189 SET AUTOCOMMIT= 0;
190 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
191 SELECT f_int1, f_int1, '', '', 'was inserted'
192 FROM t0_template source_tab
193 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
194         
195 # check transactions-1 success:         1
196 COMMIT WORK;
197         
198 # check transactions-2 success:         1
199 ROLLBACK WORK;
200         
201 # check transactions-3 success:         1
202 DELETE FROM t1 WHERE f_charbig = 'was inserted';
203 COMMIT WORK;
204 ROLLBACK WORK;
205         
206 # check transactions-4 success:         1
207 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
208 SELECT f_int1, f_int1, '', '', 'was inserted'
209 FROM t0_template source_tab
210 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
211         
212 # check transactions-5 success:         1
213 ROLLBACK WORK;
214 Warnings:
215 Warning 1196    Some non-transactional changed tables couldn't be rolled back
216         
217 # check transactions-6 success:         1
218 # INFO: Storage engine used for t1 seems to be not transactional.
219 COMMIT;
220         
221 # check transactions-7 success:         1
222 DELETE FROM t1 WHERE f_charbig = 'was inserted';
223 COMMIT WORK;
224 SET @@session.sql_mode = 'traditional';
225 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
226 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
227 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
228 '', '', 'was inserted' FROM t0_template
229 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
230 ERROR 22012: Division by 0
231 COMMIT;
232         
233 # check transactions-8 success:         1
234 # INFO: Storage engine used for t1 seems to be unable to revert
235 #       changes made by the failing statement.
236 SET @@session.sql_mode = '';
237 SET AUTOCOMMIT= 1;
238 DELETE FROM t1 WHERE f_charbig = 'was inserted';
239 COMMIT WORK;
240 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
241         
242 # check special-1 success:      1
243 UPDATE t1 SET f_charbig = '';
244         
245 # check special-2 success:      1
246 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
247 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
248 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
249 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
250 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
251 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
252 'just inserted' FROM t0_template
253 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
254 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
255 BEGIN
256 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
257 f_charbig = 'updated by trigger'
258       WHERE f_int1 = new.f_int1;
259 END|
260 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
261 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
262 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
263         
264 # check trigger-1 success:      1
265 DROP TRIGGER trg_1;
266 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
267 f_int2 = CAST(f_char1 AS SIGNED INT),
268 f_charbig = 'just inserted'
269    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
270 DELETE FROM t0_aux
271 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
272 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
273 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
274 'just inserted' FROM t0_template
275 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
276 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
277 BEGIN
278 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
279 f_charbig = 'updated by trigger'
280       WHERE f_int1 = new.f_int1;
281 END|
282 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
283 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
284 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
285         
286 # check trigger-2 success:      1
287 DROP TRIGGER trg_1;
288 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
289 f_int2 = CAST(f_char1 AS SIGNED INT),
290 f_charbig = 'just inserted'
291    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
292 DELETE FROM t0_aux
293 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
294 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
295 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
296 'just inserted' FROM t0_template
297 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
298 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
299 BEGIN
300 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
301 f_charbig = 'updated by trigger'
302       WHERE f_int1 = new.f_int1;
303 END|
304 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
305 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
306         
307 # check trigger-3 success:      1
308 DROP TRIGGER trg_1;
309 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
310 f_int2 = CAST(f_char1 AS SIGNED INT),
311 f_charbig = 'just inserted'
312    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
313 DELETE FROM t0_aux
314 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
315 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
316 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
317 'just inserted' FROM t0_template
318 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
319 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
320 BEGIN
321 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
322 f_charbig = 'updated by trigger'
323       WHERE f_int1 = - old.f_int1;
324 END|
325 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
326 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
327         
328 # check trigger-4 success:      1
329 DROP TRIGGER trg_1;
330 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
331 f_int2 = CAST(f_char1 AS SIGNED INT),
332 f_charbig = 'just inserted'
333    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
334 DELETE FROM t0_aux
335 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
336 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
337 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
338 'just inserted' FROM t0_template
339 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
340 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
341 BEGIN
342 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
343 f_charbig = 'updated by trigger'
344       WHERE f_int1 = new.f_int1;
345 END|
346 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
347 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
348         
349 # check trigger-5 success:      1
350 DROP TRIGGER trg_1;
351 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
352 f_int2 = CAST(f_char1 AS SIGNED INT),
353 f_charbig = 'just inserted'
354    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
355 DELETE FROM t0_aux
356 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
357 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
358 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
359 'just inserted' FROM t0_template
360 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
361 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
362 BEGIN
363 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
364 f_charbig = 'updated by trigger'
365       WHERE f_int1 = - old.f_int1;
366 END|
367 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
368 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
369         
370 # check trigger-6 success:      1
371 DROP TRIGGER trg_1;
372 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
373 f_int2 = CAST(f_char1 AS SIGNED INT),
374 f_charbig = 'just inserted'
375    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
376 DELETE FROM t0_aux
377 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
378 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
379 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
380 'just inserted' FROM t0_template
381 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
382 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
383 BEGIN
384 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
385 f_charbig = 'updated by trigger'
386       WHERE f_int1 = - old.f_int1;
387 END|
388 DELETE FROM t0_aux
389 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
390         
391 # check trigger-7 success:      1
392 DROP TRIGGER trg_1;
393 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
394 f_int2 = CAST(f_char1 AS SIGNED INT),
395 f_charbig = 'just inserted'
396    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
397 DELETE FROM t0_aux
398 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
399 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
400 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
401 'just inserted' FROM t0_template
402 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
403 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
404 BEGIN
405 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
406 f_charbig = 'updated by trigger'
407       WHERE f_int1 = - old.f_int1;
408 END|
409 DELETE FROM t0_aux
410 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
411         
412 # check trigger-8 success:      1
413 DROP TRIGGER trg_1;
414 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
415 f_int2 = CAST(f_char1 AS SIGNED INT),
416 f_charbig = 'just inserted'
417    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
418 DELETE FROM t0_aux
419 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
420 DELETE FROM t1
421 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
422 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
423 BEGIN
424 SET new.f_int1 = old.f_int1 + @max_row,
425 new.f_int2 = old.f_int2 - @max_row,
426 new.f_charbig = '####updated per update trigger####';
427 END|
428 UPDATE t1
429 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
430 f_charbig = '####updated per update statement itself####';
431         
432 # check trigger-9 success:      1
433 DROP TRIGGER trg_2;
434 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
435 f_int2 = CAST(f_char1 AS SIGNED INT),
436 f_charbig = CONCAT('===',f_char1,'===');
437 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
438 BEGIN
439 SET new.f_int1 = new.f_int1 + @max_row,
440 new.f_int2 = new.f_int2 - @max_row,
441 new.f_charbig = '####updated per update trigger####';
442 END|
443 UPDATE t1
444 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
445 f_charbig = '####updated per update statement itself####';
446         
447 # check trigger-10 success:     1
448 DROP TRIGGER trg_2;
449 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
450 f_int2 = CAST(f_char1 AS SIGNED INT),
451 f_charbig = CONCAT('===',f_char1,'===');
452 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
453 BEGIN
454 SET new.f_int1 = @my_max1 + @counter,
455 new.f_int2 = @my_min2 - @counter,
456 new.f_charbig = '####updated per insert trigger####';
457 SET @counter = @counter + 1;
458 END|
459 SET @counter = 1;
460 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
461 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
462 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
463 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
464 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
465 ORDER BY f_int1;
466 DROP TRIGGER trg_3;
467         
468 # check trigger-11 success:     1
469 DELETE FROM t1
470 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
471 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
472 AND f_charbig = '####updated per insert trigger####';
473 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
474 BEGIN
475 SET new.f_int1 = @my_max1 + @counter,
476 new.f_int2 = @my_min2 - @counter,
477 new.f_charbig = '####updated per insert trigger####';
478 SET @counter = @counter + 1;
479 END|
480 SET @counter = 1;
481 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
482 INSERT INTO t1 (f_char1, f_char2, f_charbig)
483 SELECT CAST(f_int1 AS CHAR),
484 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
485 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
486 ORDER BY f_int1;
487 DROP TRIGGER trg_3;
488         
489 # check trigger-12 success:     1
490 DELETE FROM t1
491 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
492 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
493 AND f_charbig = '####updated per insert trigger####';
494 ANALYZE  TABLE t1;
495 Table   Op      Msg_type        Msg_text
496 test.t1 analyze status  OK
497 CHECK    TABLE t1 EXTENDED;
498 Table   Op      Msg_type        Msg_text
499 test.t1 check   status  OK
500 CHECKSUM TABLE t1 EXTENDED;
501 Table   Checksum
502 test.t1 <some_value>
503 OPTIMIZE TABLE t1;
504 Table   Op      Msg_type        Msg_text
505 test.t1 optimize        status  OK
506 # check layout success:    1
507 REPAIR   TABLE t1 EXTENDED;
508 Table   Op      Msg_type        Msg_text
509 test.t1 repair  status  OK
510 # check layout success:    1
511 TRUNCATE t1;
512         
513 # check TRUNCATE success:       1
514 # check layout success:    1
515 # End usability test (inc/partition_check.inc)
516 DROP TABLE t1;
517 CREATE TABLE t1 (
518 f_int1 INTEGER,
519 f_int2 INTEGER,
520 f_char1 CHAR(20),
521 f_char2 CHAR(20),
522 f_charbig VARCHAR(1000)
525 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
526 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
527 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
528 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
529 ALTER TABLE t1 ANALYZE PARTITION part_1;
530 Table   Op      Msg_type        Msg_text
531 test.t1 analyze status  OK
532 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
533 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
534 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
535 # Start usability test (inc/partition_check.inc)
536 create_command
537 SHOW CREATE TABLE t1;
538 Table   Create Table
539 t1      CREATE TABLE `t1` (
540   `f_int1` int(11) DEFAULT NULL,
541   `f_int2` int(11) DEFAULT NULL,
542   `f_char1` char(20) DEFAULT NULL,
543   `f_char2` char(20) DEFAULT NULL,
544   `f_charbig` varchar(1000) DEFAULT NULL
545 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
546 /*!50100 PARTITION BY KEY (f_int1)
547 (PARTITION part_1 ENGINE = MyISAM,
548  PARTITION part_2 ENGINE = MyISAM,
549  PARTITION part_3 ENGINE = MyISAM,
550  PARTITION part_4 ENGINE = MyISAM,
551  PARTITION part_5 ENGINE = MyISAM) */
553 unified filelist
554 t1#P#part_1.MYD
555 t1#P#part_1.MYI
556 t1#P#part_2.MYD
557 t1#P#part_2.MYI
558 t1#P#part_3.MYD
559 t1#P#part_3.MYI
560 t1#P#part_4.MYD
561 t1#P#part_4.MYI
562 t1#P#part_5.MYD
563 t1#P#part_5.MYI
564 t1.frm
565 t1.par
567 # check prerequisites-1 success:    1
568 # check COUNT(*) success:    1
569 # check MIN/MAX(f_int1) success:    1
570 # check MIN/MAX(f_int2) success:    1
571 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
572 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
573 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
574 WHERE f_int1 IN (2,3);
575 # check prerequisites-3 success:    1
576 DELETE FROM t1 WHERE f_charbig = 'delete me';
577 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
578 # check read via f_int1 success: 1
579 # check read via f_int2 success: 1
580         
581 # check multiple-1 success:     1
582 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
583         
584 # check multiple-2 success:     1
585 INSERT INTO t1 SELECT * FROM t0_template
586 WHERE MOD(f_int1,3) = 0;
587         
588 # check multiple-3 success:     1
589 UPDATE t1 SET f_int1 = f_int1 + @max_row
590 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
591 AND @max_row_div2 + @max_row_div4;
592         
593 # check multiple-4 success:     1
594 DELETE FROM t1
595 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
596 AND @max_row_div2 + @max_row_div4 + @max_row;
597         
598 # check multiple-5 success:     1
599 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
600 INSERT INTO t1
601 SET f_int1 = @cur_value , f_int2 = @cur_value,
602 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
603 f_charbig = '#SINGLE#';
604         
605 # check single-1 success:       1
606 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
607 INSERT INTO t1
608 SET f_int1 = @cur_value , f_int2 = @cur_value,
609 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
610 f_charbig = '#SINGLE#';
611         
612 # check single-2 success:       1
613 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
614 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
615 UPDATE t1 SET f_int1 = @cur_value2
616 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
617         
618 # check single-3 success:       1
619 SET @cur_value1= -1;
620 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
621 UPDATE t1 SET f_int1 = @cur_value1
622 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
623         
624 # check single-4 success:       1
625 SELECT MAX(f_int1) INTO @cur_value FROM t1;
626 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
627         
628 # check single-5 success:       1
629 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
630         
631 # check single-6 success:       1
632 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
633         
634 # check single-7 success:       1
635 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
636 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
637 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
638 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
639 f_charbig = '#NULL#';
640 INSERT INTO t1
641 SET f_int1 = NULL , f_int2 = -@max_row,
642 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
643 f_charbig = '#NULL#';
644 # check null success:    1
645         
646 # check null-1 success:         1
647 UPDATE t1 SET f_int1 = -@max_row
648 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
649 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
650         
651 # check null-2 success:         1
652 UPDATE t1 SET f_int1 = NULL
653 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
654 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
655         
656 # check null-3 success:         1
657 DELETE FROM t1
658 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
659 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
660         
661 # check null-4 success:         1
662 DELETE FROM t1
663 WHERE f_int1 = 0 AND f_int2 = 0
664 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
665 AND f_charbig = '#NULL#';
666 SET AUTOCOMMIT= 0;
667 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
668 SELECT f_int1, f_int1, '', '', 'was inserted'
669 FROM t0_template source_tab
670 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
671         
672 # check transactions-1 success:         1
673 COMMIT WORK;
674         
675 # check transactions-2 success:         1
676 ROLLBACK WORK;
677         
678 # check transactions-3 success:         1
679 DELETE FROM t1 WHERE f_charbig = 'was inserted';
680 COMMIT WORK;
681 ROLLBACK WORK;
682         
683 # check transactions-4 success:         1
684 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
685 SELECT f_int1, f_int1, '', '', 'was inserted'
686 FROM t0_template source_tab
687 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
688         
689 # check transactions-5 success:         1
690 ROLLBACK WORK;
691 Warnings:
692 Warning 1196    Some non-transactional changed tables couldn't be rolled back
693         
694 # check transactions-6 success:         1
695 # INFO: Storage engine used for t1 seems to be not transactional.
696 COMMIT;
697         
698 # check transactions-7 success:         1
699 DELETE FROM t1 WHERE f_charbig = 'was inserted';
700 COMMIT WORK;
701 SET @@session.sql_mode = 'traditional';
702 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
703 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
704 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
705 '', '', 'was inserted' FROM t0_template
706 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
707 ERROR 22012: Division by 0
708 COMMIT;
709         
710 # check transactions-8 success:         1
711 # INFO: Storage engine used for t1 seems to be unable to revert
712 #       changes made by the failing statement.
713 SET @@session.sql_mode = '';
714 SET AUTOCOMMIT= 1;
715 DELETE FROM t1 WHERE f_charbig = 'was inserted';
716 COMMIT WORK;
717 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
718         
719 # check special-1 success:      1
720 UPDATE t1 SET f_charbig = '';
721         
722 # check special-2 success:      1
723 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
724 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
725 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
726 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
727 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
728 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
729 'just inserted' FROM t0_template
730 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
731 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
732 BEGIN
733 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
734 f_charbig = 'updated by trigger'
735       WHERE f_int1 = new.f_int1;
736 END|
737 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
738 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
739 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
740         
741 # check trigger-1 success:      1
742 DROP TRIGGER trg_1;
743 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
744 f_int2 = CAST(f_char1 AS SIGNED INT),
745 f_charbig = 'just inserted'
746    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
747 DELETE FROM t0_aux
748 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
749 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
750 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
751 'just inserted' FROM t0_template
752 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
753 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
754 BEGIN
755 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
756 f_charbig = 'updated by trigger'
757       WHERE f_int1 = new.f_int1;
758 END|
759 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
760 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
761 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
762         
763 # check trigger-2 success:      1
764 DROP TRIGGER trg_1;
765 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
766 f_int2 = CAST(f_char1 AS SIGNED INT),
767 f_charbig = 'just inserted'
768    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
769 DELETE FROM t0_aux
770 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
771 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
772 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
773 'just inserted' FROM t0_template
774 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
775 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
776 BEGIN
777 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
778 f_charbig = 'updated by trigger'
779       WHERE f_int1 = new.f_int1;
780 END|
781 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
782 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
783         
784 # check trigger-3 success:      1
785 DROP TRIGGER trg_1;
786 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
787 f_int2 = CAST(f_char1 AS SIGNED INT),
788 f_charbig = 'just inserted'
789    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
790 DELETE FROM t0_aux
791 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
792 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
793 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
794 'just inserted' FROM t0_template
795 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
796 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
797 BEGIN
798 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
799 f_charbig = 'updated by trigger'
800       WHERE f_int1 = - old.f_int1;
801 END|
802 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
803 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
804         
805 # check trigger-4 success:      1
806 DROP TRIGGER trg_1;
807 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
808 f_int2 = CAST(f_char1 AS SIGNED INT),
809 f_charbig = 'just inserted'
810    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
811 DELETE FROM t0_aux
812 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
813 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
814 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
815 'just inserted' FROM t0_template
816 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
817 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
818 BEGIN
819 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
820 f_charbig = 'updated by trigger'
821       WHERE f_int1 = new.f_int1;
822 END|
823 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
824 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
825         
826 # check trigger-5 success:      1
827 DROP TRIGGER trg_1;
828 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
829 f_int2 = CAST(f_char1 AS SIGNED INT),
830 f_charbig = 'just inserted'
831    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
832 DELETE FROM t0_aux
833 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
834 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
835 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
836 'just inserted' FROM t0_template
837 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
838 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
839 BEGIN
840 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
841 f_charbig = 'updated by trigger'
842       WHERE f_int1 = - old.f_int1;
843 END|
844 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
845 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
846         
847 # check trigger-6 success:      1
848 DROP TRIGGER trg_1;
849 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
850 f_int2 = CAST(f_char1 AS SIGNED INT),
851 f_charbig = 'just inserted'
852    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
853 DELETE FROM t0_aux
854 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
855 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
856 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
857 'just inserted' FROM t0_template
858 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
859 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
860 BEGIN
861 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
862 f_charbig = 'updated by trigger'
863       WHERE f_int1 = - old.f_int1;
864 END|
865 DELETE FROM t0_aux
866 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
867         
868 # check trigger-7 success:      1
869 DROP TRIGGER trg_1;
870 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
871 f_int2 = CAST(f_char1 AS SIGNED INT),
872 f_charbig = 'just inserted'
873    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
874 DELETE FROM t0_aux
875 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
876 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
877 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
878 'just inserted' FROM t0_template
879 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
880 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
881 BEGIN
882 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
883 f_charbig = 'updated by trigger'
884       WHERE f_int1 = - old.f_int1;
885 END|
886 DELETE FROM t0_aux
887 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
888         
889 # check trigger-8 success:      1
890 DROP TRIGGER trg_1;
891 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
892 f_int2 = CAST(f_char1 AS SIGNED INT),
893 f_charbig = 'just inserted'
894    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
895 DELETE FROM t0_aux
896 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
897 DELETE FROM t1
898 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
899 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
900 BEGIN
901 SET new.f_int1 = old.f_int1 + @max_row,
902 new.f_int2 = old.f_int2 - @max_row,
903 new.f_charbig = '####updated per update trigger####';
904 END|
905 UPDATE t1
906 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
907 f_charbig = '####updated per update statement itself####';
908         
909 # check trigger-9 success:      1
910 DROP TRIGGER trg_2;
911 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
912 f_int2 = CAST(f_char1 AS SIGNED INT),
913 f_charbig = CONCAT('===',f_char1,'===');
914 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
915 BEGIN
916 SET new.f_int1 = new.f_int1 + @max_row,
917 new.f_int2 = new.f_int2 - @max_row,
918 new.f_charbig = '####updated per update trigger####';
919 END|
920 UPDATE t1
921 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
922 f_charbig = '####updated per update statement itself####';
923         
924 # check trigger-10 success:     1
925 DROP TRIGGER trg_2;
926 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
927 f_int2 = CAST(f_char1 AS SIGNED INT),
928 f_charbig = CONCAT('===',f_char1,'===');
929 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
930 BEGIN
931 SET new.f_int1 = @my_max1 + @counter,
932 new.f_int2 = @my_min2 - @counter,
933 new.f_charbig = '####updated per insert trigger####';
934 SET @counter = @counter + 1;
935 END|
936 SET @counter = 1;
937 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
938 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
939 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
940 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
941 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
942 ORDER BY f_int1;
943 DROP TRIGGER trg_3;
944         
945 # check trigger-11 success:     1
946 DELETE FROM t1
947 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
948 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
949 AND f_charbig = '####updated per insert trigger####';
950 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
951 BEGIN
952 SET new.f_int1 = @my_max1 + @counter,
953 new.f_int2 = @my_min2 - @counter,
954 new.f_charbig = '####updated per insert trigger####';
955 SET @counter = @counter + 1;
956 END|
957 SET @counter = 1;
958 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
959 INSERT INTO t1 (f_char1, f_char2, f_charbig)
960 SELECT CAST(f_int1 AS CHAR),
961 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
962 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
963 ORDER BY f_int1;
964 DROP TRIGGER trg_3;
965         
966 # check trigger-12 success:     1
967 DELETE FROM t1
968 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
969 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
970 AND f_charbig = '####updated per insert trigger####';
971 ANALYZE  TABLE t1;
972 Table   Op      Msg_type        Msg_text
973 test.t1 analyze status  OK
974 CHECK    TABLE t1 EXTENDED;
975 Table   Op      Msg_type        Msg_text
976 test.t1 check   status  OK
977 CHECKSUM TABLE t1 EXTENDED;
978 Table   Checksum
979 test.t1 <some_value>
980 OPTIMIZE TABLE t1;
981 Table   Op      Msg_type        Msg_text
982 test.t1 optimize        status  OK
983 # check layout success:    1
984 REPAIR   TABLE t1 EXTENDED;
985 Table   Op      Msg_type        Msg_text
986 test.t1 repair  status  OK
987 # check layout success:    1
988 TRUNCATE t1;
989         
990 # check TRUNCATE success:       1
991 # check layout success:    1
992 # End usability test (inc/partition_check.inc)
993 DROP TABLE t1;
994 CREATE TABLE t1 (
995 f_int1 INTEGER,
996 f_int2 INTEGER,
997 f_char1 CHAR(20),
998 f_char2 CHAR(20),
999 f_charbig VARCHAR(1000)
1002 PARTITION BY LIST(MOD(f_int1,4))
1003 (PARTITION part_3 VALUES IN (-3),
1004 PARTITION part_2 VALUES IN (-2),
1005 PARTITION part_1 VALUES IN (-1),
1006 PARTITION part_N VALUES IN (NULL),
1007 PARTITION part0 VALUES IN (0),
1008 PARTITION part1 VALUES IN (1),
1009 PARTITION part2 VALUES IN (2),
1010 PARTITION part3 VALUES IN (3));
1011 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1012 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1013 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1014 ALTER TABLE t1 ANALYZE PARTITION part_1;
1015 Table   Op      Msg_type        Msg_text
1016 test.t1 analyze status  OK
1017 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1018 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1019 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1020 # Start usability test (inc/partition_check.inc)
1021 create_command
1022 SHOW CREATE TABLE t1;
1023 Table   Create Table
1024 t1      CREATE TABLE `t1` (
1025   `f_int1` int(11) DEFAULT NULL,
1026   `f_int2` int(11) DEFAULT NULL,
1027   `f_char1` char(20) DEFAULT NULL,
1028   `f_char2` char(20) DEFAULT NULL,
1029   `f_charbig` varchar(1000) DEFAULT NULL
1030 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
1031 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
1032 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
1033  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
1034  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
1035  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
1036  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
1037  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
1038  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
1039  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
1041 unified filelist
1042 t1#P#part0.MYD
1043 t1#P#part0.MYI
1044 t1#P#part1.MYD
1045 t1#P#part1.MYI
1046 t1#P#part2.MYD
1047 t1#P#part2.MYI
1048 t1#P#part3.MYD
1049 t1#P#part3.MYI
1050 t1#P#part_1.MYD
1051 t1#P#part_1.MYI
1052 t1#P#part_2.MYD
1053 t1#P#part_2.MYI
1054 t1#P#part_3.MYD
1055 t1#P#part_3.MYI
1056 t1#P#part_N.MYD
1057 t1#P#part_N.MYI
1058 t1.frm
1059 t1.par
1061 # check prerequisites-1 success:    1
1062 # check COUNT(*) success:    1
1063 # check MIN/MAX(f_int1) success:    1
1064 # check MIN/MAX(f_int2) success:    1
1065 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1066 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1067 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1068 WHERE f_int1 IN (2,3);
1069 # check prerequisites-3 success:    1
1070 DELETE FROM t1 WHERE f_charbig = 'delete me';
1071 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1072 # check read via f_int1 success: 1
1073 # check read via f_int2 success: 1
1074         
1075 # check multiple-1 success:     1
1076 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1077         
1078 # check multiple-2 success:     1
1079 INSERT INTO t1 SELECT * FROM t0_template
1080 WHERE MOD(f_int1,3) = 0;
1081         
1082 # check multiple-3 success:     1
1083 UPDATE t1 SET f_int1 = f_int1 + @max_row
1084 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1085 AND @max_row_div2 + @max_row_div4;
1086         
1087 # check multiple-4 success:     1
1088 DELETE FROM t1
1089 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1090 AND @max_row_div2 + @max_row_div4 + @max_row;
1091         
1092 # check multiple-5 success:     1
1093 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1094 INSERT INTO t1
1095 SET f_int1 = @cur_value , f_int2 = @cur_value,
1096 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1097 f_charbig = '#SINGLE#';
1098         
1099 # check single-1 success:       1
1100 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1101 INSERT INTO t1
1102 SET f_int1 = @cur_value , f_int2 = @cur_value,
1103 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1104 f_charbig = '#SINGLE#';
1105         
1106 # check single-2 success:       1
1107 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1108 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1109 UPDATE t1 SET f_int1 = @cur_value2
1110 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1111         
1112 # check single-3 success:       1
1113 SET @cur_value1= -1;
1114 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1115 UPDATE t1 SET f_int1 = @cur_value1
1116 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1117         
1118 # check single-4 success:       1
1119 SELECT MAX(f_int1) INTO @cur_value FROM t1;
1120 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1121         
1122 # check single-5 success:       1
1123 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1124         
1125 # check single-6 success:       1
1126 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1127         
1128 # check single-7 success:       1
1129 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1130 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1131 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1132 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1133 f_charbig = '#NULL#';
1134 INSERT INTO t1
1135 SET f_int1 = NULL , f_int2 = -@max_row,
1136 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1137 f_charbig = '#NULL#';
1138 # check null success:    1
1139         
1140 # check null-1 success:         1
1141 UPDATE t1 SET f_int1 = -@max_row
1142 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1143 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1144         
1145 # check null-2 success:         1
1146 UPDATE t1 SET f_int1 = NULL
1147 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1148 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1149         
1150 # check null-3 success:         1
1151 DELETE FROM t1
1152 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1153 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1154         
1155 # check null-4 success:         1
1156 DELETE FROM t1
1157 WHERE f_int1 = 0 AND f_int2 = 0
1158 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1159 AND f_charbig = '#NULL#';
1160 SET AUTOCOMMIT= 0;
1161 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1162 SELECT f_int1, f_int1, '', '', 'was inserted'
1163 FROM t0_template source_tab
1164 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1165         
1166 # check transactions-1 success:         1
1167 COMMIT WORK;
1168         
1169 # check transactions-2 success:         1
1170 ROLLBACK WORK;
1171         
1172 # check transactions-3 success:         1
1173 DELETE FROM t1 WHERE f_charbig = 'was inserted';
1174 COMMIT WORK;
1175 ROLLBACK WORK;
1176         
1177 # check transactions-4 success:         1
1178 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1179 SELECT f_int1, f_int1, '', '', 'was inserted'
1180 FROM t0_template source_tab
1181 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1182         
1183 # check transactions-5 success:         1
1184 ROLLBACK WORK;
1185 Warnings:
1186 Warning 1196    Some non-transactional changed tables couldn't be rolled back
1187         
1188 # check transactions-6 success:         1
1189 # INFO: Storage engine used for t1 seems to be not transactional.
1190 COMMIT;
1191         
1192 # check transactions-7 success:         1
1193 DELETE FROM t1 WHERE f_charbig = 'was inserted';
1194 COMMIT WORK;
1195 SET @@session.sql_mode = 'traditional';
1196 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1197 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1198 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1199 '', '', 'was inserted' FROM t0_template
1200 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1201 ERROR 22012: Division by 0
1202 COMMIT;
1203         
1204 # check transactions-8 success:         1
1205 # INFO: Storage engine used for t1 seems to be unable to revert
1206 #       changes made by the failing statement.
1207 SET @@session.sql_mode = '';
1208 SET AUTOCOMMIT= 1;
1209 DELETE FROM t1 WHERE f_charbig = 'was inserted';
1210 COMMIT WORK;
1211 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1212         
1213 # check special-1 success:      1
1214 UPDATE t1 SET f_charbig = '';
1215         
1216 # check special-2 success:      1
1217 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1218 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1219 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1220 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1221 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1222 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1223 'just inserted' FROM t0_template
1224 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1225 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1226 BEGIN
1227 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1228 f_charbig = 'updated by trigger'
1229       WHERE f_int1 = new.f_int1;
1230 END|
1231 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1232 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1233 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1234         
1235 # check trigger-1 success:      1
1236 DROP TRIGGER trg_1;
1237 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1238 f_int2 = CAST(f_char1 AS SIGNED INT),
1239 f_charbig = 'just inserted'
1240    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1241 DELETE FROM t0_aux
1242 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1243 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1244 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1245 'just inserted' FROM t0_template
1246 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1247 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1248 BEGIN
1249 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1250 f_charbig = 'updated by trigger'
1251       WHERE f_int1 = new.f_int1;
1252 END|
1253 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1254 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1255 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1256         
1257 # check trigger-2 success:      1
1258 DROP TRIGGER trg_1;
1259 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1260 f_int2 = CAST(f_char1 AS SIGNED INT),
1261 f_charbig = 'just inserted'
1262    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1263 DELETE FROM t0_aux
1264 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1265 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1266 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1267 'just inserted' FROM t0_template
1268 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1269 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1270 BEGIN
1271 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1272 f_charbig = 'updated by trigger'
1273       WHERE f_int1 = new.f_int1;
1274 END|
1275 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1276 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1277         
1278 # check trigger-3 success:      1
1279 DROP TRIGGER trg_1;
1280 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1281 f_int2 = CAST(f_char1 AS SIGNED INT),
1282 f_charbig = 'just inserted'
1283    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1284 DELETE FROM t0_aux
1285 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1286 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1287 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1288 'just inserted' FROM t0_template
1289 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1290 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1291 BEGIN
1292 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1293 f_charbig = 'updated by trigger'
1294       WHERE f_int1 = - old.f_int1;
1295 END|
1296 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1297 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1298         
1299 # check trigger-4 success:      1
1300 DROP TRIGGER trg_1;
1301 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1302 f_int2 = CAST(f_char1 AS SIGNED INT),
1303 f_charbig = 'just inserted'
1304    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1305 DELETE FROM t0_aux
1306 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1307 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1308 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1309 'just inserted' FROM t0_template
1310 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1311 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1312 BEGIN
1313 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1314 f_charbig = 'updated by trigger'
1315       WHERE f_int1 = new.f_int1;
1316 END|
1317 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1318 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1319         
1320 # check trigger-5 success:      1
1321 DROP TRIGGER trg_1;
1322 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1323 f_int2 = CAST(f_char1 AS SIGNED INT),
1324 f_charbig = 'just inserted'
1325    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1326 DELETE FROM t0_aux
1327 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1328 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1329 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1330 'just inserted' FROM t0_template
1331 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1332 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1333 BEGIN
1334 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1335 f_charbig = 'updated by trigger'
1336       WHERE f_int1 = - old.f_int1;
1337 END|
1338 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1339 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1340         
1341 # check trigger-6 success:      1
1342 DROP TRIGGER trg_1;
1343 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1344 f_int2 = CAST(f_char1 AS SIGNED INT),
1345 f_charbig = 'just inserted'
1346    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1347 DELETE FROM t0_aux
1348 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1349 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1350 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1351 'just inserted' FROM t0_template
1352 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1353 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1354 BEGIN
1355 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1356 f_charbig = 'updated by trigger'
1357       WHERE f_int1 = - old.f_int1;
1358 END|
1359 DELETE FROM t0_aux
1360 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1361         
1362 # check trigger-7 success:      1
1363 DROP TRIGGER trg_1;
1364 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1365 f_int2 = CAST(f_char1 AS SIGNED INT),
1366 f_charbig = 'just inserted'
1367    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1368 DELETE FROM t0_aux
1369 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1370 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1371 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1372 'just inserted' FROM t0_template
1373 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1374 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1375 BEGIN
1376 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1377 f_charbig = 'updated by trigger'
1378       WHERE f_int1 = - old.f_int1;
1379 END|
1380 DELETE FROM t0_aux
1381 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1382         
1383 # check trigger-8 success:      1
1384 DROP TRIGGER trg_1;
1385 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1386 f_int2 = CAST(f_char1 AS SIGNED INT),
1387 f_charbig = 'just inserted'
1388    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1389 DELETE FROM t0_aux
1390 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1391 DELETE FROM t1
1392 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1393 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1394 BEGIN
1395 SET new.f_int1 = old.f_int1 + @max_row,
1396 new.f_int2 = old.f_int2 - @max_row,
1397 new.f_charbig = '####updated per update trigger####';
1398 END|
1399 UPDATE t1
1400 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1401 f_charbig = '####updated per update statement itself####';
1402         
1403 # check trigger-9 success:      1
1404 DROP TRIGGER trg_2;
1405 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1406 f_int2 = CAST(f_char1 AS SIGNED INT),
1407 f_charbig = CONCAT('===',f_char1,'===');
1408 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1409 BEGIN
1410 SET new.f_int1 = new.f_int1 + @max_row,
1411 new.f_int2 = new.f_int2 - @max_row,
1412 new.f_charbig = '####updated per update trigger####';
1413 END|
1414 UPDATE t1
1415 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1416 f_charbig = '####updated per update statement itself####';
1417         
1418 # check trigger-10 success:     1
1419 DROP TRIGGER trg_2;
1420 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1421 f_int2 = CAST(f_char1 AS SIGNED INT),
1422 f_charbig = CONCAT('===',f_char1,'===');
1423 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1424 BEGIN
1425 SET new.f_int1 = @my_max1 + @counter,
1426 new.f_int2 = @my_min2 - @counter,
1427 new.f_charbig = '####updated per insert trigger####';
1428 SET @counter = @counter + 1;
1429 END|
1430 SET @counter = 1;
1431 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1432 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1433 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1434 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1435 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1436 ORDER BY f_int1;
1437 DROP TRIGGER trg_3;
1438         
1439 # check trigger-11 success:     1
1440 DELETE FROM t1
1441 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1442 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1443 AND f_charbig = '####updated per insert trigger####';
1444 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1445 BEGIN
1446 SET new.f_int1 = @my_max1 + @counter,
1447 new.f_int2 = @my_min2 - @counter,
1448 new.f_charbig = '####updated per insert trigger####';
1449 SET @counter = @counter + 1;
1450 END|
1451 SET @counter = 1;
1452 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1453 INSERT INTO t1 (f_char1, f_char2, f_charbig)
1454 SELECT CAST(f_int1 AS CHAR),
1455 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1456 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1457 ORDER BY f_int1;
1458 DROP TRIGGER trg_3;
1459         
1460 # check trigger-12 success:     1
1461 DELETE FROM t1
1462 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1463 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1464 AND f_charbig = '####updated per insert trigger####';
1465 ANALYZE  TABLE t1;
1466 Table   Op      Msg_type        Msg_text
1467 test.t1 analyze status  OK
1468 CHECK    TABLE t1 EXTENDED;
1469 Table   Op      Msg_type        Msg_text
1470 test.t1 check   status  OK
1471 CHECKSUM TABLE t1 EXTENDED;
1472 Table   Checksum
1473 test.t1 <some_value>
1474 OPTIMIZE TABLE t1;
1475 Table   Op      Msg_type        Msg_text
1476 test.t1 optimize        status  OK
1477 # check layout success:    1
1478 REPAIR   TABLE t1 EXTENDED;
1479 Table   Op      Msg_type        Msg_text
1480 test.t1 repair  status  OK
1481 # check layout success:    1
1482 TRUNCATE t1;
1483         
1484 # check TRUNCATE success:       1
1485 # check layout success:    1
1486 # End usability test (inc/partition_check.inc)
1487 DROP TABLE t1;
1488 CREATE TABLE t1 (
1489 f_int1 INTEGER,
1490 f_int2 INTEGER,
1491 f_char1 CHAR(20),
1492 f_char2 CHAR(20),
1493 f_charbig VARCHAR(1000)
1496 PARTITION BY RANGE(f_int1)
1497 (PARTITION parta VALUES LESS THAN (0),
1498 PARTITION part_1 VALUES LESS THAN (5),
1499 PARTITION part_2 VALUES LESS THAN (10),
1500 PARTITION part_3 VALUES LESS THAN (10 + 5),
1501 PARTITION part_4 VALUES LESS THAN (20),
1502 PARTITION part_5 VALUES LESS THAN (2147483646));
1503 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1504 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1505 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1506 ALTER TABLE t1 ANALYZE PARTITION part_1;
1507 Table   Op      Msg_type        Msg_text
1508 test.t1 analyze status  OK
1509 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1510 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1511 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1512 # Start usability test (inc/partition_check.inc)
1513 create_command
1514 SHOW CREATE TABLE t1;
1515 Table   Create Table
1516 t1      CREATE TABLE `t1` (
1517   `f_int1` int(11) DEFAULT NULL,
1518   `f_int2` int(11) DEFAULT NULL,
1519   `f_char1` char(20) DEFAULT NULL,
1520   `f_char2` char(20) DEFAULT NULL,
1521   `f_charbig` varchar(1000) DEFAULT NULL
1522 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
1523 /*!50100 PARTITION BY RANGE (f_int1)
1524 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
1525  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
1526  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
1527  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
1528  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
1529  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
1531 unified filelist
1532 t1#P#part_1.MYD
1533 t1#P#part_1.MYI
1534 t1#P#part_2.MYD
1535 t1#P#part_2.MYI
1536 t1#P#part_3.MYD
1537 t1#P#part_3.MYI
1538 t1#P#part_4.MYD
1539 t1#P#part_4.MYI
1540 t1#P#part_5.MYD
1541 t1#P#part_5.MYI
1542 t1#P#parta.MYD
1543 t1#P#parta.MYI
1544 t1.frm
1545 t1.par
1547 # check prerequisites-1 success:    1
1548 # check COUNT(*) success:    1
1549 # check MIN/MAX(f_int1) success:    1
1550 # check MIN/MAX(f_int2) success:    1
1551 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1552 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1553 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1554 WHERE f_int1 IN (2,3);
1555 # check prerequisites-3 success:    1
1556 DELETE FROM t1 WHERE f_charbig = 'delete me';
1557 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1558 # check read via f_int1 success: 1
1559 # check read via f_int2 success: 1
1560         
1561 # check multiple-1 success:     1
1562 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1563         
1564 # check multiple-2 success:     1
1565 INSERT INTO t1 SELECT * FROM t0_template
1566 WHERE MOD(f_int1,3) = 0;
1567         
1568 # check multiple-3 success:     1
1569 UPDATE t1 SET f_int1 = f_int1 + @max_row
1570 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1571 AND @max_row_div2 + @max_row_div4;
1572         
1573 # check multiple-4 success:     1
1574 DELETE FROM t1
1575 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1576 AND @max_row_div2 + @max_row_div4 + @max_row;
1577         
1578 # check multiple-5 success:     1
1579 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1580 INSERT INTO t1
1581 SET f_int1 = @cur_value , f_int2 = @cur_value,
1582 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1583 f_charbig = '#SINGLE#';
1584         
1585 # check single-1 success:       1
1586 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1587 INSERT INTO t1
1588 SET f_int1 = @cur_value , f_int2 = @cur_value,
1589 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1590 f_charbig = '#SINGLE#';
1591         
1592 # check single-2 success:       1
1593 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1594 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1595 UPDATE t1 SET f_int1 = @cur_value2
1596 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1597         
1598 # check single-3 success:       1
1599 SET @cur_value1= -1;
1600 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1601 UPDATE t1 SET f_int1 = @cur_value1
1602 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1603         
1604 # check single-4 success:       1
1605 SELECT MAX(f_int1) INTO @cur_value FROM t1;
1606 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1607         
1608 # check single-5 success:       1
1609 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1610         
1611 # check single-6 success:       1
1612 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1613 ERROR HY000: Table has no partition for value 2147483647
1614 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1615 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1616 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1617 f_charbig = '#NULL#';
1618 INSERT INTO t1
1619 SET f_int1 = NULL , f_int2 = -@max_row,
1620 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1621 f_charbig = '#NULL#';
1622 # check null success:    1
1623         
1624 # check null-1 success:         1
1625 UPDATE t1 SET f_int1 = -@max_row
1626 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1627 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1628         
1629 # check null-2 success:         1
1630 UPDATE t1 SET f_int1 = NULL
1631 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1632 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1633         
1634 # check null-3 success:         1
1635 DELETE FROM t1
1636 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1637 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1638         
1639 # check null-4 success:         1
1640 DELETE FROM t1
1641 WHERE f_int1 = 0 AND f_int2 = 0
1642 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1643 AND f_charbig = '#NULL#';
1644 SET AUTOCOMMIT= 0;
1645 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1646 SELECT f_int1, f_int1, '', '', 'was inserted'
1647 FROM t0_template source_tab
1648 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1649         
1650 # check transactions-1 success:         1
1651 COMMIT WORK;
1652         
1653 # check transactions-2 success:         1
1654 ROLLBACK WORK;
1655         
1656 # check transactions-3 success:         1
1657 DELETE FROM t1 WHERE f_charbig = 'was inserted';
1658 COMMIT WORK;
1659 ROLLBACK WORK;
1660         
1661 # check transactions-4 success:         1
1662 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1663 SELECT f_int1, f_int1, '', '', 'was inserted'
1664 FROM t0_template source_tab
1665 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1666         
1667 # check transactions-5 success:         1
1668 ROLLBACK WORK;
1669 Warnings:
1670 Warning 1196    Some non-transactional changed tables couldn't be rolled back
1671         
1672 # check transactions-6 success:         1
1673 # INFO: Storage engine used for t1 seems to be not transactional.
1674 COMMIT;
1675         
1676 # check transactions-7 success:         1
1677 DELETE FROM t1 WHERE f_charbig = 'was inserted';
1678 COMMIT WORK;
1679 SET @@session.sql_mode = 'traditional';
1680 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1681 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1682 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1683 '', '', 'was inserted' FROM t0_template
1684 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1685 ERROR 22012: Division by 0
1686 COMMIT;
1687         
1688 # check transactions-8 success:         1
1689 # INFO: Storage engine used for t1 seems to be unable to revert
1690 #       changes made by the failing statement.
1691 SET @@session.sql_mode = '';
1692 SET AUTOCOMMIT= 1;
1693 DELETE FROM t1 WHERE f_charbig = 'was inserted';
1694 COMMIT WORK;
1695 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1696         
1697 # check special-1 success:      1
1698 UPDATE t1 SET f_charbig = '';
1699         
1700 # check special-2 success:      1
1701 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1702 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1703 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1704 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1705 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1706 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1707 'just inserted' FROM t0_template
1708 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1709 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1710 BEGIN
1711 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1712 f_charbig = 'updated by trigger'
1713       WHERE f_int1 = new.f_int1;
1714 END|
1715 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1716 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1717 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1718         
1719 # check trigger-1 success:      1
1720 DROP TRIGGER trg_1;
1721 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1722 f_int2 = CAST(f_char1 AS SIGNED INT),
1723 f_charbig = 'just inserted'
1724    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1725 DELETE FROM t0_aux
1726 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1727 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1728 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1729 'just inserted' FROM t0_template
1730 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1731 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1732 BEGIN
1733 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1734 f_charbig = 'updated by trigger'
1735       WHERE f_int1 = new.f_int1;
1736 END|
1737 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1738 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1739 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1740         
1741 # check trigger-2 success:      1
1742 DROP TRIGGER trg_1;
1743 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1744 f_int2 = CAST(f_char1 AS SIGNED INT),
1745 f_charbig = 'just inserted'
1746    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1747 DELETE FROM t0_aux
1748 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1749 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1750 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1751 'just inserted' FROM t0_template
1752 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1753 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1754 BEGIN
1755 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1756 f_charbig = 'updated by trigger'
1757       WHERE f_int1 = new.f_int1;
1758 END|
1759 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1760 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1761         
1762 # check trigger-3 success:      1
1763 DROP TRIGGER trg_1;
1764 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1765 f_int2 = CAST(f_char1 AS SIGNED INT),
1766 f_charbig = 'just inserted'
1767    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1768 DELETE FROM t0_aux
1769 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1770 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1771 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1772 'just inserted' FROM t0_template
1773 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1774 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1775 BEGIN
1776 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1777 f_charbig = 'updated by trigger'
1778       WHERE f_int1 = - old.f_int1;
1779 END|
1780 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1781 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1782         
1783 # check trigger-4 success:      1
1784 DROP TRIGGER trg_1;
1785 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1786 f_int2 = CAST(f_char1 AS SIGNED INT),
1787 f_charbig = 'just inserted'
1788    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1789 DELETE FROM t0_aux
1790 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1791 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1792 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1793 'just inserted' FROM t0_template
1794 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1795 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1796 BEGIN
1797 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1798 f_charbig = 'updated by trigger'
1799       WHERE f_int1 = new.f_int1;
1800 END|
1801 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1802 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1803         
1804 # check trigger-5 success:      1
1805 DROP TRIGGER trg_1;
1806 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1807 f_int2 = CAST(f_char1 AS SIGNED INT),
1808 f_charbig = 'just inserted'
1809    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1810 DELETE FROM t0_aux
1811 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1812 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1813 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1814 'just inserted' FROM t0_template
1815 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1816 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1817 BEGIN
1818 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1819 f_charbig = 'updated by trigger'
1820       WHERE f_int1 = - old.f_int1;
1821 END|
1822 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
1823 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1824         
1825 # check trigger-6 success:      1
1826 DROP TRIGGER trg_1;
1827 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1828 f_int2 = CAST(f_char1 AS SIGNED INT),
1829 f_charbig = 'just inserted'
1830    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1831 DELETE FROM t0_aux
1832 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1833 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1834 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1835 'just inserted' FROM t0_template
1836 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1837 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1838 BEGIN
1839 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1840 f_charbig = 'updated by trigger'
1841       WHERE f_int1 = - old.f_int1;
1842 END|
1843 DELETE FROM t0_aux
1844 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1845         
1846 # check trigger-7 success:      1
1847 DROP TRIGGER trg_1;
1848 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1849 f_int2 = CAST(f_char1 AS SIGNED INT),
1850 f_charbig = 'just inserted'
1851    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1852 DELETE FROM t0_aux
1853 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1854 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1855 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1856 'just inserted' FROM t0_template
1857 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1858 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1859 BEGIN
1860 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1861 f_charbig = 'updated by trigger'
1862       WHERE f_int1 = - old.f_int1;
1863 END|
1864 DELETE FROM t0_aux
1865 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1866         
1867 # check trigger-8 success:      1
1868 DROP TRIGGER trg_1;
1869 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1870 f_int2 = CAST(f_char1 AS SIGNED INT),
1871 f_charbig = 'just inserted'
1872    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1873 DELETE FROM t0_aux
1874 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1875 DELETE FROM t1
1876 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1877 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1878 BEGIN
1879 SET new.f_int1 = old.f_int1 + @max_row,
1880 new.f_int2 = old.f_int2 - @max_row,
1881 new.f_charbig = '####updated per update trigger####';
1882 END|
1883 UPDATE t1
1884 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1885 f_charbig = '####updated per update statement itself####';
1886         
1887 # check trigger-9 success:      1
1888 DROP TRIGGER trg_2;
1889 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1890 f_int2 = CAST(f_char1 AS SIGNED INT),
1891 f_charbig = CONCAT('===',f_char1,'===');
1892 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1893 BEGIN
1894 SET new.f_int1 = new.f_int1 + @max_row,
1895 new.f_int2 = new.f_int2 - @max_row,
1896 new.f_charbig = '####updated per update trigger####';
1897 END|
1898 UPDATE t1
1899 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1900 f_charbig = '####updated per update statement itself####';
1901         
1902 # check trigger-10 success:     1
1903 DROP TRIGGER trg_2;
1904 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1905 f_int2 = CAST(f_char1 AS SIGNED INT),
1906 f_charbig = CONCAT('===',f_char1,'===');
1907 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1908 BEGIN
1909 SET new.f_int1 = @my_max1 + @counter,
1910 new.f_int2 = @my_min2 - @counter,
1911 new.f_charbig = '####updated per insert trigger####';
1912 SET @counter = @counter + 1;
1913 END|
1914 SET @counter = 1;
1915 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1916 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1917 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1918 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1919 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1920 ORDER BY f_int1;
1921 DROP TRIGGER trg_3;
1922         
1923 # check trigger-11 success:     1
1924 DELETE FROM t1
1925 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1926 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1927 AND f_charbig = '####updated per insert trigger####';
1928 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1929 BEGIN
1930 SET new.f_int1 = @my_max1 + @counter,
1931 new.f_int2 = @my_min2 - @counter,
1932 new.f_charbig = '####updated per insert trigger####';
1933 SET @counter = @counter + 1;
1934 END|
1935 SET @counter = 1;
1936 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1937 INSERT INTO t1 (f_char1, f_char2, f_charbig)
1938 SELECT CAST(f_int1 AS CHAR),
1939 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1940 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1941 ORDER BY f_int1;
1942 DROP TRIGGER trg_3;
1943         
1944 # check trigger-12 success:     1
1945 DELETE FROM t1
1946 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1947 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1948 AND f_charbig = '####updated per insert trigger####';
1949 ANALYZE  TABLE t1;
1950 Table   Op      Msg_type        Msg_text
1951 test.t1 analyze status  OK
1952 CHECK    TABLE t1 EXTENDED;
1953 Table   Op      Msg_type        Msg_text
1954 test.t1 check   status  OK
1955 CHECKSUM TABLE t1 EXTENDED;
1956 Table   Checksum
1957 test.t1 <some_value>
1958 OPTIMIZE TABLE t1;
1959 Table   Op      Msg_type        Msg_text
1960 test.t1 optimize        status  OK
1961 # check layout success:    1
1962 REPAIR   TABLE t1 EXTENDED;
1963 Table   Op      Msg_type        Msg_text
1964 test.t1 repair  status  OK
1965 # check layout success:    1
1966 TRUNCATE t1;
1967         
1968 # check TRUNCATE success:       1
1969 # check layout success:    1
1970 # End usability test (inc/partition_check.inc)
1971 DROP TABLE t1;
1972 CREATE TABLE t1 (
1973 f_int1 INTEGER,
1974 f_int2 INTEGER,
1975 f_char1 CHAR(20),
1976 f_char2 CHAR(20),
1977 f_charbig VARCHAR(1000)
1980 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
1981 (PARTITION part_1 VALUES LESS THAN (0),
1982 PARTITION part_2 VALUES LESS THAN (5),
1983 PARTITION part_3 VALUES LESS THAN (10),
1984 PARTITION part_4 VALUES LESS THAN (2147483646));
1985 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1986 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1987 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1988 ALTER TABLE t1 ANALYZE PARTITION part_1;
1989 Table   Op      Msg_type        Msg_text
1990 test.t1 analyze status  OK
1991 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1992 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1993 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1994 # Start usability test (inc/partition_check.inc)
1995 create_command
1996 SHOW CREATE TABLE t1;
1997 Table   Create Table
1998 t1      CREATE TABLE `t1` (
1999   `f_int1` int(11) DEFAULT NULL,
2000   `f_int2` int(11) DEFAULT NULL,
2001   `f_char1` char(20) DEFAULT NULL,
2002   `f_char2` char(20) DEFAULT NULL,
2003   `f_charbig` varchar(1000) DEFAULT NULL
2004 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
2005 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
2006 SUBPARTITION BY HASH (f_int1)
2007 SUBPARTITIONS 2
2008 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
2009  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
2010  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
2011  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
2013 unified filelist
2014 t1#P#part_1#SP#part_1sp0.MYD
2015 t1#P#part_1#SP#part_1sp0.MYI
2016 t1#P#part_1#SP#part_1sp1.MYD
2017 t1#P#part_1#SP#part_1sp1.MYI
2018 t1#P#part_2#SP#part_2sp0.MYD
2019 t1#P#part_2#SP#part_2sp0.MYI
2020 t1#P#part_2#SP#part_2sp1.MYD
2021 t1#P#part_2#SP#part_2sp1.MYI
2022 t1#P#part_3#SP#part_3sp0.MYD
2023 t1#P#part_3#SP#part_3sp0.MYI
2024 t1#P#part_3#SP#part_3sp1.MYD
2025 t1#P#part_3#SP#part_3sp1.MYI
2026 t1#P#part_4#SP#part_4sp0.MYD
2027 t1#P#part_4#SP#part_4sp0.MYI
2028 t1#P#part_4#SP#part_4sp1.MYD
2029 t1#P#part_4#SP#part_4sp1.MYI
2030 t1.frm
2031 t1.par
2033 # check prerequisites-1 success:    1
2034 # check COUNT(*) success:    1
2035 # check MIN/MAX(f_int1) success:    1
2036 # check MIN/MAX(f_int2) success:    1
2037 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2038 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2039 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2040 WHERE f_int1 IN (2,3);
2041 # check prerequisites-3 success:    1
2042 DELETE FROM t1 WHERE f_charbig = 'delete me';
2043 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2044 # check read via f_int1 success: 1
2045 # check read via f_int2 success: 1
2046         
2047 # check multiple-1 success:     1
2048 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2049         
2050 # check multiple-2 success:     1
2051 INSERT INTO t1 SELECT * FROM t0_template
2052 WHERE MOD(f_int1,3) = 0;
2053         
2054 # check multiple-3 success:     1
2055 UPDATE t1 SET f_int1 = f_int1 + @max_row
2056 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2057 AND @max_row_div2 + @max_row_div4;
2058         
2059 # check multiple-4 success:     1
2060 DELETE FROM t1
2061 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2062 AND @max_row_div2 + @max_row_div4 + @max_row;
2063         
2064 # check multiple-5 success:     1
2065 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2066 INSERT INTO t1
2067 SET f_int1 = @cur_value , f_int2 = @cur_value,
2068 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2069 f_charbig = '#SINGLE#';
2070         
2071 # check single-1 success:       1
2072 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2073 INSERT INTO t1
2074 SET f_int1 = @cur_value , f_int2 = @cur_value,
2075 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2076 f_charbig = '#SINGLE#';
2077         
2078 # check single-2 success:       1
2079 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2080 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2081 UPDATE t1 SET f_int1 = @cur_value2
2082 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2083         
2084 # check single-3 success:       1
2085 SET @cur_value1= -1;
2086 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2087 UPDATE t1 SET f_int1 = @cur_value1
2088 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2089         
2090 # check single-4 success:       1
2091 SELECT MAX(f_int1) INTO @cur_value FROM t1;
2092 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2093         
2094 # check single-5 success:       1
2095 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2096         
2097 # check single-6 success:       1
2098 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2099         
2100 # check single-7 success:       1
2101 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
2102 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2103 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2104 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2105 f_charbig = '#NULL#';
2106 INSERT INTO t1
2107 SET f_int1 = NULL , f_int2 = -@max_row,
2108 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2109 f_charbig = '#NULL#';
2110 # check null success:    1
2111         
2112 # check null-1 success:         1
2113 UPDATE t1 SET f_int1 = -@max_row
2114 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2115 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2116         
2117 # check null-2 success:         1
2118 UPDATE t1 SET f_int1 = NULL
2119 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2120 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2121         
2122 # check null-3 success:         1
2123 DELETE FROM t1
2124 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2125 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2126         
2127 # check null-4 success:         1
2128 DELETE FROM t1
2129 WHERE f_int1 = 0 AND f_int2 = 0
2130 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2131 AND f_charbig = '#NULL#';
2132 SET AUTOCOMMIT= 0;
2133 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2134 SELECT f_int1, f_int1, '', '', 'was inserted'
2135 FROM t0_template source_tab
2136 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2137         
2138 # check transactions-1 success:         1
2139 COMMIT WORK;
2140         
2141 # check transactions-2 success:         1
2142 ROLLBACK WORK;
2143         
2144 # check transactions-3 success:         1
2145 DELETE FROM t1 WHERE f_charbig = 'was inserted';
2146 COMMIT WORK;
2147 ROLLBACK WORK;
2148         
2149 # check transactions-4 success:         1
2150 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2151 SELECT f_int1, f_int1, '', '', 'was inserted'
2152 FROM t0_template source_tab
2153 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2154         
2155 # check transactions-5 success:         1
2156 ROLLBACK WORK;
2157 Warnings:
2158 Warning 1196    Some non-transactional changed tables couldn't be rolled back
2159         
2160 # check transactions-6 success:         1
2161 # INFO: Storage engine used for t1 seems to be not transactional.
2162 COMMIT;
2163         
2164 # check transactions-7 success:         1
2165 DELETE FROM t1 WHERE f_charbig = 'was inserted';
2166 COMMIT WORK;
2167 SET @@session.sql_mode = 'traditional';
2168 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2169 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2170 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2171 '', '', 'was inserted' FROM t0_template
2172 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2173 ERROR 22012: Division by 0
2174 COMMIT;
2175         
2176 # check transactions-8 success:         1
2177 # INFO: Storage engine used for t1 seems to be unable to revert
2178 #       changes made by the failing statement.
2179 SET @@session.sql_mode = '';
2180 SET AUTOCOMMIT= 1;
2181 DELETE FROM t1 WHERE f_charbig = 'was inserted';
2182 COMMIT WORK;
2183 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2184         
2185 # check special-1 success:      1
2186 UPDATE t1 SET f_charbig = '';
2187         
2188 # check special-2 success:      1
2189 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2190 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2191 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2192 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2193 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2194 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2195 'just inserted' FROM t0_template
2196 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2197 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2198 BEGIN
2199 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2200 f_charbig = 'updated by trigger'
2201       WHERE f_int1 = new.f_int1;
2202 END|
2203 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2204 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2205 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2206         
2207 # check trigger-1 success:      1
2208 DROP TRIGGER trg_1;
2209 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2210 f_int2 = CAST(f_char1 AS SIGNED INT),
2211 f_charbig = 'just inserted'
2212    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2213 DELETE FROM t0_aux
2214 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2215 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2216 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2217 'just inserted' FROM t0_template
2218 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2219 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2220 BEGIN
2221 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2222 f_charbig = 'updated by trigger'
2223       WHERE f_int1 = new.f_int1;
2224 END|
2225 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2226 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2227 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2228         
2229 # check trigger-2 success:      1
2230 DROP TRIGGER trg_1;
2231 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2232 f_int2 = CAST(f_char1 AS SIGNED INT),
2233 f_charbig = 'just inserted'
2234    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2235 DELETE FROM t0_aux
2236 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2237 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2238 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2239 'just inserted' FROM t0_template
2240 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2241 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2242 BEGIN
2243 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2244 f_charbig = 'updated by trigger'
2245       WHERE f_int1 = new.f_int1;
2246 END|
2247 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2248 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2249         
2250 # check trigger-3 success:      1
2251 DROP TRIGGER trg_1;
2252 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2253 f_int2 = CAST(f_char1 AS SIGNED INT),
2254 f_charbig = 'just inserted'
2255    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2256 DELETE FROM t0_aux
2257 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2258 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2259 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2260 'just inserted' FROM t0_template
2261 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2262 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2263 BEGIN
2264 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2265 f_charbig = 'updated by trigger'
2266       WHERE f_int1 = - old.f_int1;
2267 END|
2268 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2269 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2270         
2271 # check trigger-4 success:      1
2272 DROP TRIGGER trg_1;
2273 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2274 f_int2 = CAST(f_char1 AS SIGNED INT),
2275 f_charbig = 'just inserted'
2276    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2277 DELETE FROM t0_aux
2278 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2279 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2280 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2281 'just inserted' FROM t0_template
2282 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2283 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2284 BEGIN
2285 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2286 f_charbig = 'updated by trigger'
2287       WHERE f_int1 = new.f_int1;
2288 END|
2289 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2290 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2291         
2292 # check trigger-5 success:      1
2293 DROP TRIGGER trg_1;
2294 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2295 f_int2 = CAST(f_char1 AS SIGNED INT),
2296 f_charbig = 'just inserted'
2297    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2298 DELETE FROM t0_aux
2299 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2300 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2301 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2302 'just inserted' FROM t0_template
2303 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2304 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2305 BEGIN
2306 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2307 f_charbig = 'updated by trigger'
2308       WHERE f_int1 = - old.f_int1;
2309 END|
2310 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2311 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2312         
2313 # check trigger-6 success:      1
2314 DROP TRIGGER trg_1;
2315 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2316 f_int2 = CAST(f_char1 AS SIGNED INT),
2317 f_charbig = 'just inserted'
2318    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2319 DELETE FROM t0_aux
2320 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2321 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2322 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2323 'just inserted' FROM t0_template
2324 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2325 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2326 BEGIN
2327 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2328 f_charbig = 'updated by trigger'
2329       WHERE f_int1 = - old.f_int1;
2330 END|
2331 DELETE FROM t0_aux
2332 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2333         
2334 # check trigger-7 success:      1
2335 DROP TRIGGER trg_1;
2336 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2337 f_int2 = CAST(f_char1 AS SIGNED INT),
2338 f_charbig = 'just inserted'
2339    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2340 DELETE FROM t0_aux
2341 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2342 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2343 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2344 'just inserted' FROM t0_template
2345 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2346 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2347 BEGIN
2348 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2349 f_charbig = 'updated by trigger'
2350       WHERE f_int1 = - old.f_int1;
2351 END|
2352 DELETE FROM t0_aux
2353 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2354         
2355 # check trigger-8 success:      1
2356 DROP TRIGGER trg_1;
2357 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2358 f_int2 = CAST(f_char1 AS SIGNED INT),
2359 f_charbig = 'just inserted'
2360    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2361 DELETE FROM t0_aux
2362 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2363 DELETE FROM t1
2364 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2365 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2366 BEGIN
2367 SET new.f_int1 = old.f_int1 + @max_row,
2368 new.f_int2 = old.f_int2 - @max_row,
2369 new.f_charbig = '####updated per update trigger####';
2370 END|
2371 UPDATE t1
2372 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2373 f_charbig = '####updated per update statement itself####';
2374         
2375 # check trigger-9 success:      1
2376 DROP TRIGGER trg_2;
2377 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2378 f_int2 = CAST(f_char1 AS SIGNED INT),
2379 f_charbig = CONCAT('===',f_char1,'===');
2380 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2381 BEGIN
2382 SET new.f_int1 = new.f_int1 + @max_row,
2383 new.f_int2 = new.f_int2 - @max_row,
2384 new.f_charbig = '####updated per update trigger####';
2385 END|
2386 UPDATE t1
2387 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2388 f_charbig = '####updated per update statement itself####';
2389         
2390 # check trigger-10 success:     1
2391 DROP TRIGGER trg_2;
2392 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2393 f_int2 = CAST(f_char1 AS SIGNED INT),
2394 f_charbig = CONCAT('===',f_char1,'===');
2395 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2396 BEGIN
2397 SET new.f_int1 = @my_max1 + @counter,
2398 new.f_int2 = @my_min2 - @counter,
2399 new.f_charbig = '####updated per insert trigger####';
2400 SET @counter = @counter + 1;
2401 END|
2402 SET @counter = 1;
2403 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2404 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2405 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2406 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2407 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2408 ORDER BY f_int1;
2409 DROP TRIGGER trg_3;
2410         
2411 # check trigger-11 success:     1
2412 DELETE FROM t1
2413 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2414 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2415 AND f_charbig = '####updated per insert trigger####';
2416 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2417 BEGIN
2418 SET new.f_int1 = @my_max1 + @counter,
2419 new.f_int2 = @my_min2 - @counter,
2420 new.f_charbig = '####updated per insert trigger####';
2421 SET @counter = @counter + 1;
2422 END|
2423 SET @counter = 1;
2424 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2425 INSERT INTO t1 (f_char1, f_char2, f_charbig)
2426 SELECT CAST(f_int1 AS CHAR),
2427 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2428 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2429 ORDER BY f_int1;
2430 DROP TRIGGER trg_3;
2431         
2432 # check trigger-12 success:     1
2433 DELETE FROM t1
2434 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2435 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2436 AND f_charbig = '####updated per insert trigger####';
2437 ANALYZE  TABLE t1;
2438 Table   Op      Msg_type        Msg_text
2439 test.t1 analyze status  OK
2440 CHECK    TABLE t1 EXTENDED;
2441 Table   Op      Msg_type        Msg_text
2442 test.t1 check   status  OK
2443 CHECKSUM TABLE t1 EXTENDED;
2444 Table   Checksum
2445 test.t1 <some_value>
2446 OPTIMIZE TABLE t1;
2447 Table   Op      Msg_type        Msg_text
2448 test.t1 optimize        status  OK
2449 # check layout success:    1
2450 REPAIR   TABLE t1 EXTENDED;
2451 Table   Op      Msg_type        Msg_text
2452 test.t1 repair  status  OK
2453 # check layout success:    1
2454 TRUNCATE t1;
2455         
2456 # check TRUNCATE success:       1
2457 # check layout success:    1
2458 # End usability test (inc/partition_check.inc)
2459 DROP TABLE t1;
2460 CREATE TABLE t1 (
2461 f_int1 INTEGER,
2462 f_int2 INTEGER,
2463 f_char1 CHAR(20),
2464 f_char2 CHAR(20),
2465 f_charbig VARCHAR(1000)
2468 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
2469 (PARTITION part_1 VALUES LESS THAN (0)
2470 (SUBPARTITION subpart11, SUBPARTITION subpart12),
2471 PARTITION part_2 VALUES LESS THAN (5)
2472 (SUBPARTITION subpart21, SUBPARTITION subpart22),
2473 PARTITION part_3 VALUES LESS THAN (10)
2474 (SUBPARTITION subpart31, SUBPARTITION subpart32),
2475 PARTITION part_4 VALUES LESS THAN (2147483646)
2476 (SUBPARTITION subpart41, SUBPARTITION subpart42));
2477 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2478 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2479 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2480 ALTER TABLE t1 ANALYZE PARTITION part_1;
2481 Table   Op      Msg_type        Msg_text
2482 test.t1 analyze status  OK
2483 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2484 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2485 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2486 # Start usability test (inc/partition_check.inc)
2487 create_command
2488 SHOW CREATE TABLE t1;
2489 Table   Create Table
2490 t1      CREATE TABLE `t1` (
2491   `f_int1` int(11) DEFAULT NULL,
2492   `f_int2` int(11) DEFAULT NULL,
2493   `f_char1` char(20) DEFAULT NULL,
2494   `f_char2` char(20) DEFAULT NULL,
2495   `f_charbig` varchar(1000) DEFAULT NULL
2496 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
2497 /*!50100 PARTITION BY RANGE (f_int1)
2498 SUBPARTITION BY KEY (f_int1)
2499 (PARTITION part_1 VALUES LESS THAN (0)
2500  (SUBPARTITION subpart11 ENGINE = MyISAM,
2501   SUBPARTITION subpart12 ENGINE = MyISAM),
2502  PARTITION part_2 VALUES LESS THAN (5)
2503  (SUBPARTITION subpart21 ENGINE = MyISAM,
2504   SUBPARTITION subpart22 ENGINE = MyISAM),
2505  PARTITION part_3 VALUES LESS THAN (10)
2506  (SUBPARTITION subpart31 ENGINE = MyISAM,
2507   SUBPARTITION subpart32 ENGINE = MyISAM),
2508  PARTITION part_4 VALUES LESS THAN (2147483646)
2509  (SUBPARTITION subpart41 ENGINE = MyISAM,
2510   SUBPARTITION subpart42 ENGINE = MyISAM)) */
2512 unified filelist
2513 t1#P#part_1#SP#subpart11.MYD
2514 t1#P#part_1#SP#subpart11.MYI
2515 t1#P#part_1#SP#subpart12.MYD
2516 t1#P#part_1#SP#subpart12.MYI
2517 t1#P#part_2#SP#subpart21.MYD
2518 t1#P#part_2#SP#subpart21.MYI
2519 t1#P#part_2#SP#subpart22.MYD
2520 t1#P#part_2#SP#subpart22.MYI
2521 t1#P#part_3#SP#subpart31.MYD
2522 t1#P#part_3#SP#subpart31.MYI
2523 t1#P#part_3#SP#subpart32.MYD
2524 t1#P#part_3#SP#subpart32.MYI
2525 t1#P#part_4#SP#subpart41.MYD
2526 t1#P#part_4#SP#subpart41.MYI
2527 t1#P#part_4#SP#subpart42.MYD
2528 t1#P#part_4#SP#subpart42.MYI
2529 t1.frm
2530 t1.par
2532 # check prerequisites-1 success:    1
2533 # check COUNT(*) success:    1
2534 # check MIN/MAX(f_int1) success:    1
2535 # check MIN/MAX(f_int2) success:    1
2536 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2537 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2538 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2539 WHERE f_int1 IN (2,3);
2540 # check prerequisites-3 success:    1
2541 DELETE FROM t1 WHERE f_charbig = 'delete me';
2542 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2543 # check read via f_int1 success: 1
2544 # check read via f_int2 success: 1
2545         
2546 # check multiple-1 success:     1
2547 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2548         
2549 # check multiple-2 success:     1
2550 INSERT INTO t1 SELECT * FROM t0_template
2551 WHERE MOD(f_int1,3) = 0;
2552         
2553 # check multiple-3 success:     1
2554 UPDATE t1 SET f_int1 = f_int1 + @max_row
2555 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2556 AND @max_row_div2 + @max_row_div4;
2557         
2558 # check multiple-4 success:     1
2559 DELETE FROM t1
2560 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2561 AND @max_row_div2 + @max_row_div4 + @max_row;
2562         
2563 # check multiple-5 success:     1
2564 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2565 INSERT INTO t1
2566 SET f_int1 = @cur_value , f_int2 = @cur_value,
2567 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2568 f_charbig = '#SINGLE#';
2569         
2570 # check single-1 success:       1
2571 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2572 INSERT INTO t1
2573 SET f_int1 = @cur_value , f_int2 = @cur_value,
2574 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2575 f_charbig = '#SINGLE#';
2576         
2577 # check single-2 success:       1
2578 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2579 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2580 UPDATE t1 SET f_int1 = @cur_value2
2581 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2582         
2583 # check single-3 success:       1
2584 SET @cur_value1= -1;
2585 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2586 UPDATE t1 SET f_int1 = @cur_value1
2587 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2588         
2589 # check single-4 success:       1
2590 SELECT MAX(f_int1) INTO @cur_value FROM t1;
2591 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2592         
2593 # check single-5 success:       1
2594 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2595         
2596 # check single-6 success:       1
2597 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2598 ERROR HY000: Table has no partition for value 2147483647
2599 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2600 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2601 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2602 f_charbig = '#NULL#';
2603 INSERT INTO t1
2604 SET f_int1 = NULL , f_int2 = -@max_row,
2605 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2606 f_charbig = '#NULL#';
2607 # check null success:    1
2608         
2609 # check null-1 success:         1
2610 UPDATE t1 SET f_int1 = -@max_row
2611 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2612 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2613         
2614 # check null-2 success:         1
2615 UPDATE t1 SET f_int1 = NULL
2616 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2617 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2618         
2619 # check null-3 success:         1
2620 DELETE FROM t1
2621 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2622 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2623         
2624 # check null-4 success:         1
2625 DELETE FROM t1
2626 WHERE f_int1 = 0 AND f_int2 = 0
2627 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2628 AND f_charbig = '#NULL#';
2629 SET AUTOCOMMIT= 0;
2630 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2631 SELECT f_int1, f_int1, '', '', 'was inserted'
2632 FROM t0_template source_tab
2633 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2634         
2635 # check transactions-1 success:         1
2636 COMMIT WORK;
2637         
2638 # check transactions-2 success:         1
2639 ROLLBACK WORK;
2640         
2641 # check transactions-3 success:         1
2642 DELETE FROM t1 WHERE f_charbig = 'was inserted';
2643 COMMIT WORK;
2644 ROLLBACK WORK;
2645         
2646 # check transactions-4 success:         1
2647 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2648 SELECT f_int1, f_int1, '', '', 'was inserted'
2649 FROM t0_template source_tab
2650 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2651         
2652 # check transactions-5 success:         1
2653 ROLLBACK WORK;
2654 Warnings:
2655 Warning 1196    Some non-transactional changed tables couldn't be rolled back
2656         
2657 # check transactions-6 success:         1
2658 # INFO: Storage engine used for t1 seems to be not transactional.
2659 COMMIT;
2660         
2661 # check transactions-7 success:         1
2662 DELETE FROM t1 WHERE f_charbig = 'was inserted';
2663 COMMIT WORK;
2664 SET @@session.sql_mode = 'traditional';
2665 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2666 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2667 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2668 '', '', 'was inserted' FROM t0_template
2669 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2670 ERROR 22012: Division by 0
2671 COMMIT;
2672         
2673 # check transactions-8 success:         1
2674 # INFO: Storage engine used for t1 seems to be unable to revert
2675 #       changes made by the failing statement.
2676 SET @@session.sql_mode = '';
2677 SET AUTOCOMMIT= 1;
2678 DELETE FROM t1 WHERE f_charbig = 'was inserted';
2679 COMMIT WORK;
2680 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2681         
2682 # check special-1 success:      1
2683 UPDATE t1 SET f_charbig = '';
2684         
2685 # check special-2 success:      1
2686 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2687 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2688 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2689 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2690 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2691 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2692 'just inserted' FROM t0_template
2693 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2694 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2695 BEGIN
2696 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2697 f_charbig = 'updated by trigger'
2698       WHERE f_int1 = new.f_int1;
2699 END|
2700 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2701 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2702 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2703         
2704 # check trigger-1 success:      1
2705 DROP TRIGGER trg_1;
2706 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2707 f_int2 = CAST(f_char1 AS SIGNED INT),
2708 f_charbig = 'just inserted'
2709    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2710 DELETE FROM t0_aux
2711 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2712 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2713 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2714 'just inserted' FROM t0_template
2715 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2716 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2717 BEGIN
2718 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2719 f_charbig = 'updated by trigger'
2720       WHERE f_int1 = new.f_int1;
2721 END|
2722 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2723 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2724 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2725         
2726 # check trigger-2 success:      1
2727 DROP TRIGGER trg_1;
2728 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2729 f_int2 = CAST(f_char1 AS SIGNED INT),
2730 f_charbig = 'just inserted'
2731    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2732 DELETE FROM t0_aux
2733 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2734 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2735 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2736 'just inserted' FROM t0_template
2737 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2738 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2739 BEGIN
2740 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2741 f_charbig = 'updated by trigger'
2742       WHERE f_int1 = new.f_int1;
2743 END|
2744 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2745 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2746         
2747 # check trigger-3 success:      1
2748 DROP TRIGGER trg_1;
2749 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2750 f_int2 = CAST(f_char1 AS SIGNED INT),
2751 f_charbig = 'just inserted'
2752    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2753 DELETE FROM t0_aux
2754 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2755 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2756 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2757 'just inserted' FROM t0_template
2758 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2759 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2760 BEGIN
2761 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2762 f_charbig = 'updated by trigger'
2763       WHERE f_int1 = - old.f_int1;
2764 END|
2765 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2766 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2767         
2768 # check trigger-4 success:      1
2769 DROP TRIGGER trg_1;
2770 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2771 f_int2 = CAST(f_char1 AS SIGNED INT),
2772 f_charbig = 'just inserted'
2773    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2774 DELETE FROM t0_aux
2775 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2776 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2777 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2778 'just inserted' FROM t0_template
2779 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2780 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2781 BEGIN
2782 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2783 f_charbig = 'updated by trigger'
2784       WHERE f_int1 = new.f_int1;
2785 END|
2786 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2787 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2788         
2789 # check trigger-5 success:      1
2790 DROP TRIGGER trg_1;
2791 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2792 f_int2 = CAST(f_char1 AS SIGNED INT),
2793 f_charbig = 'just inserted'
2794    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2795 DELETE FROM t0_aux
2796 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2797 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2798 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2799 'just inserted' FROM t0_template
2800 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2801 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2802 BEGIN
2803 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2804 f_charbig = 'updated by trigger'
2805       WHERE f_int1 = - old.f_int1;
2806 END|
2807 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
2808 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2809         
2810 # check trigger-6 success:      1
2811 DROP TRIGGER trg_1;
2812 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2813 f_int2 = CAST(f_char1 AS SIGNED INT),
2814 f_charbig = 'just inserted'
2815    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2816 DELETE FROM t0_aux
2817 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2818 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2819 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2820 'just inserted' FROM t0_template
2821 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2822 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2823 BEGIN
2824 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2825 f_charbig = 'updated by trigger'
2826       WHERE f_int1 = - old.f_int1;
2827 END|
2828 DELETE FROM t0_aux
2829 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2830         
2831 # check trigger-7 success:      1
2832 DROP TRIGGER trg_1;
2833 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2834 f_int2 = CAST(f_char1 AS SIGNED INT),
2835 f_charbig = 'just inserted'
2836    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2837 DELETE FROM t0_aux
2838 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2839 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2840 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2841 'just inserted' FROM t0_template
2842 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2843 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2844 BEGIN
2845 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2846 f_charbig = 'updated by trigger'
2847       WHERE f_int1 = - old.f_int1;
2848 END|
2849 DELETE FROM t0_aux
2850 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2851         
2852 # check trigger-8 success:      1
2853 DROP TRIGGER trg_1;
2854 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2855 f_int2 = CAST(f_char1 AS SIGNED INT),
2856 f_charbig = 'just inserted'
2857    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2858 DELETE FROM t0_aux
2859 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2860 DELETE FROM t1
2861 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2862 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2863 BEGIN
2864 SET new.f_int1 = old.f_int1 + @max_row,
2865 new.f_int2 = old.f_int2 - @max_row,
2866 new.f_charbig = '####updated per update trigger####';
2867 END|
2868 UPDATE t1
2869 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2870 f_charbig = '####updated per update statement itself####';
2871         
2872 # check trigger-9 success:      1
2873 DROP TRIGGER trg_2;
2874 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2875 f_int2 = CAST(f_char1 AS SIGNED INT),
2876 f_charbig = CONCAT('===',f_char1,'===');
2877 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2878 BEGIN
2879 SET new.f_int1 = new.f_int1 + @max_row,
2880 new.f_int2 = new.f_int2 - @max_row,
2881 new.f_charbig = '####updated per update trigger####';
2882 END|
2883 UPDATE t1
2884 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2885 f_charbig = '####updated per update statement itself####';
2886         
2887 # check trigger-10 success:     1
2888 DROP TRIGGER trg_2;
2889 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2890 f_int2 = CAST(f_char1 AS SIGNED INT),
2891 f_charbig = CONCAT('===',f_char1,'===');
2892 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2893 BEGIN
2894 SET new.f_int1 = @my_max1 + @counter,
2895 new.f_int2 = @my_min2 - @counter,
2896 new.f_charbig = '####updated per insert trigger####';
2897 SET @counter = @counter + 1;
2898 END|
2899 SET @counter = 1;
2900 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2901 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2902 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2903 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2904 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2905 ORDER BY f_int1;
2906 DROP TRIGGER trg_3;
2907         
2908 # check trigger-11 success:     1
2909 DELETE FROM t1
2910 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2911 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2912 AND f_charbig = '####updated per insert trigger####';
2913 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2914 BEGIN
2915 SET new.f_int1 = @my_max1 + @counter,
2916 new.f_int2 = @my_min2 - @counter,
2917 new.f_charbig = '####updated per insert trigger####';
2918 SET @counter = @counter + 1;
2919 END|
2920 SET @counter = 1;
2921 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2922 INSERT INTO t1 (f_char1, f_char2, f_charbig)
2923 SELECT CAST(f_int1 AS CHAR),
2924 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2925 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2926 ORDER BY f_int1;
2927 DROP TRIGGER trg_3;
2928         
2929 # check trigger-12 success:     1
2930 DELETE FROM t1
2931 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2932 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2933 AND f_charbig = '####updated per insert trigger####';
2934 ANALYZE  TABLE t1;
2935 Table   Op      Msg_type        Msg_text
2936 test.t1 analyze status  OK
2937 CHECK    TABLE t1 EXTENDED;
2938 Table   Op      Msg_type        Msg_text
2939 test.t1 check   status  OK
2940 CHECKSUM TABLE t1 EXTENDED;
2941 Table   Checksum
2942 test.t1 <some_value>
2943 OPTIMIZE TABLE t1;
2944 Table   Op      Msg_type        Msg_text
2945 test.t1 optimize        status  OK
2946 # check layout success:    1
2947 REPAIR   TABLE t1 EXTENDED;
2948 Table   Op      Msg_type        Msg_text
2949 test.t1 repair  status  OK
2950 # check layout success:    1
2951 TRUNCATE t1;
2952         
2953 # check TRUNCATE success:       1
2954 # check layout success:    1
2955 # End usability test (inc/partition_check.inc)
2956 DROP TABLE t1;
2957 CREATE TABLE t1 (
2958 f_int1 INTEGER,
2959 f_int2 INTEGER,
2960 f_char1 CHAR(20),
2961 f_char2 CHAR(20),
2962 f_charbig VARCHAR(1000)
2965 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
2966 (PARTITION part_1 VALUES IN (0)
2967 (SUBPARTITION sp11, SUBPARTITION sp12),
2968 PARTITION part_2 VALUES IN (1)
2969 (SUBPARTITION sp21, SUBPARTITION sp22),
2970 PARTITION part_3 VALUES IN (2)
2971 (SUBPARTITION sp31, SUBPARTITION sp32),
2972 PARTITION part_4 VALUES IN (NULL)
2973 (SUBPARTITION sp41, SUBPARTITION sp42));
2974 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2975 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2976 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2977 ALTER TABLE t1 ANALYZE PARTITION part_1;
2978 Table   Op      Msg_type        Msg_text
2979 test.t1 analyze status  OK
2980 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2981 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2982 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2983 # Start usability test (inc/partition_check.inc)
2984 create_command
2985 SHOW CREATE TABLE t1;
2986 Table   Create Table
2987 t1      CREATE TABLE `t1` (
2988   `f_int1` int(11) DEFAULT NULL,
2989   `f_int2` int(11) DEFAULT NULL,
2990   `f_char1` char(20) DEFAULT NULL,
2991   `f_char2` char(20) DEFAULT NULL,
2992   `f_charbig` varchar(1000) DEFAULT NULL
2993 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
2994 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
2995 SUBPARTITION BY HASH (f_int1 + 1)
2996 (PARTITION part_1 VALUES IN (0)
2997  (SUBPARTITION sp11 ENGINE = MyISAM,
2998   SUBPARTITION sp12 ENGINE = MyISAM),
2999  PARTITION part_2 VALUES IN (1)
3000  (SUBPARTITION sp21 ENGINE = MyISAM,
3001   SUBPARTITION sp22 ENGINE = MyISAM),
3002  PARTITION part_3 VALUES IN (2)
3003  (SUBPARTITION sp31 ENGINE = MyISAM,
3004   SUBPARTITION sp32 ENGINE = MyISAM),
3005  PARTITION part_4 VALUES IN (NULL)
3006  (SUBPARTITION sp41 ENGINE = MyISAM,
3007   SUBPARTITION sp42 ENGINE = MyISAM)) */
3009 unified filelist
3010 t1#P#part_1#SP#sp11.MYD
3011 t1#P#part_1#SP#sp11.MYI
3012 t1#P#part_1#SP#sp12.MYD
3013 t1#P#part_1#SP#sp12.MYI
3014 t1#P#part_2#SP#sp21.MYD
3015 t1#P#part_2#SP#sp21.MYI
3016 t1#P#part_2#SP#sp22.MYD
3017 t1#P#part_2#SP#sp22.MYI
3018 t1#P#part_3#SP#sp31.MYD
3019 t1#P#part_3#SP#sp31.MYI
3020 t1#P#part_3#SP#sp32.MYD
3021 t1#P#part_3#SP#sp32.MYI
3022 t1#P#part_4#SP#sp41.MYD
3023 t1#P#part_4#SP#sp41.MYI
3024 t1#P#part_4#SP#sp42.MYD
3025 t1#P#part_4#SP#sp42.MYI
3026 t1.frm
3027 t1.par
3029 # check prerequisites-1 success:    1
3030 # check COUNT(*) success:    1
3031 # check MIN/MAX(f_int1) success:    1
3032 # check MIN/MAX(f_int2) success:    1
3033 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3034 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3035 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3036 WHERE f_int1 IN (2,3);
3037 # check prerequisites-3 success:    1
3038 DELETE FROM t1 WHERE f_charbig = 'delete me';
3039 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3040 # check read via f_int1 success: 1
3041 # check read via f_int2 success: 1
3042         
3043 # check multiple-1 success:     1
3044 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3045         
3046 # check multiple-2 success:     1
3047 INSERT INTO t1 SELECT * FROM t0_template
3048 WHERE MOD(f_int1,3) = 0;
3049         
3050 # check multiple-3 success:     1
3051 UPDATE t1 SET f_int1 = f_int1 + @max_row
3052 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3053 AND @max_row_div2 + @max_row_div4;
3054         
3055 # check multiple-4 success:     1
3056 DELETE FROM t1
3057 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3058 AND @max_row_div2 + @max_row_div4 + @max_row;
3059         
3060 # check multiple-5 success:     1
3061 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3062 INSERT INTO t1
3063 SET f_int1 = @cur_value , f_int2 = @cur_value,
3064 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3065 f_charbig = '#SINGLE#';
3066         
3067 # check single-1 success:       1
3068 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3069 INSERT INTO t1
3070 SET f_int1 = @cur_value , f_int2 = @cur_value,
3071 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3072 f_charbig = '#SINGLE#';
3073         
3074 # check single-2 success:       1
3075 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3076 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3077 UPDATE t1 SET f_int1 = @cur_value2
3078 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3079         
3080 # check single-3 success:       1
3081 SET @cur_value1= -1;
3082 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3083 UPDATE t1 SET f_int1 = @cur_value1
3084 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3085         
3086 # check single-4 success:       1
3087 SELECT MAX(f_int1) INTO @cur_value FROM t1;
3088 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3089         
3090 # check single-5 success:       1
3091 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3092         
3093 # check single-6 success:       1
3094 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3095         
3096 # check single-7 success:       1
3097 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3098 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3099 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3100 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3101 f_charbig = '#NULL#';
3102 INSERT INTO t1
3103 SET f_int1 = NULL , f_int2 = -@max_row,
3104 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3105 f_charbig = '#NULL#';
3106 # check null success:    1
3107         
3108 # check null-1 success:         1
3109 UPDATE t1 SET f_int1 = -@max_row
3110 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3111 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3112         
3113 # check null-2 success:         1
3114 UPDATE t1 SET f_int1 = NULL
3115 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3116 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3117         
3118 # check null-3 success:         1
3119 DELETE FROM t1
3120 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3121 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3122         
3123 # check null-4 success:         1
3124 DELETE FROM t1
3125 WHERE f_int1 = 0 AND f_int2 = 0
3126 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3127 AND f_charbig = '#NULL#';
3128 SET AUTOCOMMIT= 0;
3129 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3130 SELECT f_int1, f_int1, '', '', 'was inserted'
3131 FROM t0_template source_tab
3132 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3133         
3134 # check transactions-1 success:         1
3135 COMMIT WORK;
3136         
3137 # check transactions-2 success:         1
3138 ROLLBACK WORK;
3139         
3140 # check transactions-3 success:         1
3141 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3142 COMMIT WORK;
3143 ROLLBACK WORK;
3144         
3145 # check transactions-4 success:         1
3146 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3147 SELECT f_int1, f_int1, '', '', 'was inserted'
3148 FROM t0_template source_tab
3149 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3150         
3151 # check transactions-5 success:         1
3152 ROLLBACK WORK;
3153 Warnings:
3154 Warning 1196    Some non-transactional changed tables couldn't be rolled back
3155         
3156 # check transactions-6 success:         1
3157 # INFO: Storage engine used for t1 seems to be not transactional.
3158 COMMIT;
3159         
3160 # check transactions-7 success:         1
3161 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3162 COMMIT WORK;
3163 SET @@session.sql_mode = 'traditional';
3164 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3165 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3166 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3167 '', '', 'was inserted' FROM t0_template
3168 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3169 ERROR 22012: Division by 0
3170 COMMIT;
3171         
3172 # check transactions-8 success:         1
3173 # INFO: Storage engine used for t1 seems to be unable to revert
3174 #       changes made by the failing statement.
3175 SET @@session.sql_mode = '';
3176 SET AUTOCOMMIT= 1;
3177 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3178 COMMIT WORK;
3179 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3180         
3181 # check special-1 success:      1
3182 UPDATE t1 SET f_charbig = '';
3183         
3184 # check special-2 success:      1
3185 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3186 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3187 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3188 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3189 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3190 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3191 'just inserted' FROM t0_template
3192 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3193 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3194 BEGIN
3195 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3196 f_charbig = 'updated by trigger'
3197       WHERE f_int1 = new.f_int1;
3198 END|
3199 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3200 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3201 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3202         
3203 # check trigger-1 success:      1
3204 DROP TRIGGER trg_1;
3205 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3206 f_int2 = CAST(f_char1 AS SIGNED INT),
3207 f_charbig = 'just inserted'
3208    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3209 DELETE FROM t0_aux
3210 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3211 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3212 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3213 'just inserted' FROM t0_template
3214 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3215 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3216 BEGIN
3217 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3218 f_charbig = 'updated by trigger'
3219       WHERE f_int1 = new.f_int1;
3220 END|
3221 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3222 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3223 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3224         
3225 # check trigger-2 success:      1
3226 DROP TRIGGER trg_1;
3227 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3228 f_int2 = CAST(f_char1 AS SIGNED INT),
3229 f_charbig = 'just inserted'
3230    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3231 DELETE FROM t0_aux
3232 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3233 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3234 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3235 'just inserted' FROM t0_template
3236 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3237 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3238 BEGIN
3239 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3240 f_charbig = 'updated by trigger'
3241       WHERE f_int1 = new.f_int1;
3242 END|
3243 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3244 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3245         
3246 # check trigger-3 success:      1
3247 DROP TRIGGER trg_1;
3248 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3249 f_int2 = CAST(f_char1 AS SIGNED INT),
3250 f_charbig = 'just inserted'
3251    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3252 DELETE FROM t0_aux
3253 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3254 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3255 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3256 'just inserted' FROM t0_template
3257 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3258 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3259 BEGIN
3260 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3261 f_charbig = 'updated by trigger'
3262       WHERE f_int1 = - old.f_int1;
3263 END|
3264 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3265 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3266         
3267 # check trigger-4 success:      1
3268 DROP TRIGGER trg_1;
3269 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3270 f_int2 = CAST(f_char1 AS SIGNED INT),
3271 f_charbig = 'just inserted'
3272    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3273 DELETE FROM t0_aux
3274 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3275 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3276 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3277 'just inserted' FROM t0_template
3278 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3279 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3280 BEGIN
3281 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3282 f_charbig = 'updated by trigger'
3283       WHERE f_int1 = new.f_int1;
3284 END|
3285 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3286 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3287         
3288 # check trigger-5 success:      1
3289 DROP TRIGGER trg_1;
3290 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3291 f_int2 = CAST(f_char1 AS SIGNED INT),
3292 f_charbig = 'just inserted'
3293    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3294 DELETE FROM t0_aux
3295 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3296 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3297 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3298 'just inserted' FROM t0_template
3299 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3300 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3301 BEGIN
3302 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3303 f_charbig = 'updated by trigger'
3304       WHERE f_int1 = - old.f_int1;
3305 END|
3306 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3307 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3308         
3309 # check trigger-6 success:      1
3310 DROP TRIGGER trg_1;
3311 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3312 f_int2 = CAST(f_char1 AS SIGNED INT),
3313 f_charbig = 'just inserted'
3314    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3315 DELETE FROM t0_aux
3316 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3317 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3318 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3319 'just inserted' FROM t0_template
3320 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3321 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3322 BEGIN
3323 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3324 f_charbig = 'updated by trigger'
3325       WHERE f_int1 = - old.f_int1;
3326 END|
3327 DELETE FROM t0_aux
3328 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3329         
3330 # check trigger-7 success:      1
3331 DROP TRIGGER trg_1;
3332 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3333 f_int2 = CAST(f_char1 AS SIGNED INT),
3334 f_charbig = 'just inserted'
3335    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3336 DELETE FROM t0_aux
3337 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3338 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3339 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3340 'just inserted' FROM t0_template
3341 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3342 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3343 BEGIN
3344 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3345 f_charbig = 'updated by trigger'
3346       WHERE f_int1 = - old.f_int1;
3347 END|
3348 DELETE FROM t0_aux
3349 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3350         
3351 # check trigger-8 success:      1
3352 DROP TRIGGER trg_1;
3353 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3354 f_int2 = CAST(f_char1 AS SIGNED INT),
3355 f_charbig = 'just inserted'
3356    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3357 DELETE FROM t0_aux
3358 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3359 DELETE FROM t1
3360 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3361 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3362 BEGIN
3363 SET new.f_int1 = old.f_int1 + @max_row,
3364 new.f_int2 = old.f_int2 - @max_row,
3365 new.f_charbig = '####updated per update trigger####';
3366 END|
3367 UPDATE t1
3368 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3369 f_charbig = '####updated per update statement itself####';
3370         
3371 # check trigger-9 success:      1
3372 DROP TRIGGER trg_2;
3373 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3374 f_int2 = CAST(f_char1 AS SIGNED INT),
3375 f_charbig = CONCAT('===',f_char1,'===');
3376 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3377 BEGIN
3378 SET new.f_int1 = new.f_int1 + @max_row,
3379 new.f_int2 = new.f_int2 - @max_row,
3380 new.f_charbig = '####updated per update trigger####';
3381 END|
3382 UPDATE t1
3383 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3384 f_charbig = '####updated per update statement itself####';
3385         
3386 # check trigger-10 success:     1
3387 DROP TRIGGER trg_2;
3388 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3389 f_int2 = CAST(f_char1 AS SIGNED INT),
3390 f_charbig = CONCAT('===',f_char1,'===');
3391 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3392 BEGIN
3393 SET new.f_int1 = @my_max1 + @counter,
3394 new.f_int2 = @my_min2 - @counter,
3395 new.f_charbig = '####updated per insert trigger####';
3396 SET @counter = @counter + 1;
3397 END|
3398 SET @counter = 1;
3399 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3400 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3401 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3402 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3403 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3404 ORDER BY f_int1;
3405 DROP TRIGGER trg_3;
3406         
3407 # check trigger-11 success:     1
3408 DELETE FROM t1
3409 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3410 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3411 AND f_charbig = '####updated per insert trigger####';
3412 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3413 BEGIN
3414 SET new.f_int1 = @my_max1 + @counter,
3415 new.f_int2 = @my_min2 - @counter,
3416 new.f_charbig = '####updated per insert trigger####';
3417 SET @counter = @counter + 1;
3418 END|
3419 SET @counter = 1;
3420 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3421 INSERT INTO t1 (f_char1, f_char2, f_charbig)
3422 SELECT CAST(f_int1 AS CHAR),
3423 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3424 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3425 ORDER BY f_int1;
3426 DROP TRIGGER trg_3;
3427         
3428 # check trigger-12 success:     1
3429 DELETE FROM t1
3430 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3431 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3432 AND f_charbig = '####updated per insert trigger####';
3433 ANALYZE  TABLE t1;
3434 Table   Op      Msg_type        Msg_text
3435 test.t1 analyze status  OK
3436 CHECK    TABLE t1 EXTENDED;
3437 Table   Op      Msg_type        Msg_text
3438 test.t1 check   status  OK
3439 CHECKSUM TABLE t1 EXTENDED;
3440 Table   Checksum
3441 test.t1 <some_value>
3442 OPTIMIZE TABLE t1;
3443 Table   Op      Msg_type        Msg_text
3444 test.t1 optimize        status  OK
3445 # check layout success:    1
3446 REPAIR   TABLE t1 EXTENDED;
3447 Table   Op      Msg_type        Msg_text
3448 test.t1 repair  status  OK
3449 # check layout success:    1
3450 TRUNCATE t1;
3451         
3452 # check TRUNCATE success:       1
3453 # check layout success:    1
3454 # End usability test (inc/partition_check.inc)
3455 DROP TABLE t1;
3456 CREATE TABLE t1 (
3457 f_int1 INTEGER,
3458 f_int2 INTEGER,
3459 f_char1 CHAR(20),
3460 f_char2 CHAR(20),
3461 f_charbig VARCHAR(1000)
3464 PARTITION BY LIST(ABS(MOD(f_int1,2)))
3465 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
3466 (PARTITION part_1 VALUES IN (0),
3467  PARTITION part_2 VALUES IN (1),
3468  PARTITION part_3 VALUES IN (NULL));
3469 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3470 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3471 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3472 ALTER TABLE t1 ANALYZE PARTITION part_1;
3473 Table   Op      Msg_type        Msg_text
3474 test.t1 analyze status  OK
3475 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3476 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3477 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3478 # Start usability test (inc/partition_check.inc)
3479 create_command
3480 SHOW CREATE TABLE t1;
3481 Table   Create Table
3482 t1      CREATE TABLE `t1` (
3483   `f_int1` int(11) DEFAULT NULL,
3484   `f_int2` int(11) DEFAULT NULL,
3485   `f_char1` char(20) DEFAULT NULL,
3486   `f_char2` char(20) DEFAULT NULL,
3487   `f_charbig` varchar(1000) DEFAULT NULL
3488 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
3489 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
3490 SUBPARTITION BY KEY (f_int1)
3491 SUBPARTITIONS 3
3492 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
3493  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
3494  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
3496 unified filelist
3497 t1#P#part_1#SP#part_1sp0.MYD
3498 t1#P#part_1#SP#part_1sp0.MYI
3499 t1#P#part_1#SP#part_1sp1.MYD
3500 t1#P#part_1#SP#part_1sp1.MYI
3501 t1#P#part_1#SP#part_1sp2.MYD
3502 t1#P#part_1#SP#part_1sp2.MYI
3503 t1#P#part_2#SP#part_2sp0.MYD
3504 t1#P#part_2#SP#part_2sp0.MYI
3505 t1#P#part_2#SP#part_2sp1.MYD
3506 t1#P#part_2#SP#part_2sp1.MYI
3507 t1#P#part_2#SP#part_2sp2.MYD
3508 t1#P#part_2#SP#part_2sp2.MYI
3509 t1#P#part_3#SP#part_3sp0.MYD
3510 t1#P#part_3#SP#part_3sp0.MYI
3511 t1#P#part_3#SP#part_3sp1.MYD
3512 t1#P#part_3#SP#part_3sp1.MYI
3513 t1#P#part_3#SP#part_3sp2.MYD
3514 t1#P#part_3#SP#part_3sp2.MYI
3515 t1.frm
3516 t1.par
3518 # check prerequisites-1 success:    1
3519 # check COUNT(*) success:    1
3520 # check MIN/MAX(f_int1) success:    1
3521 # check MIN/MAX(f_int2) success:    1
3522 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3523 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3524 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3525 WHERE f_int1 IN (2,3);
3526 # check prerequisites-3 success:    1
3527 DELETE FROM t1 WHERE f_charbig = 'delete me';
3528 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3529 # check read via f_int1 success: 1
3530 # check read via f_int2 success: 1
3531         
3532 # check multiple-1 success:     1
3533 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3534         
3535 # check multiple-2 success:     1
3536 INSERT INTO t1 SELECT * FROM t0_template
3537 WHERE MOD(f_int1,3) = 0;
3538         
3539 # check multiple-3 success:     1
3540 UPDATE t1 SET f_int1 = f_int1 + @max_row
3541 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3542 AND @max_row_div2 + @max_row_div4;
3543         
3544 # check multiple-4 success:     1
3545 DELETE FROM t1
3546 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3547 AND @max_row_div2 + @max_row_div4 + @max_row;
3548         
3549 # check multiple-5 success:     1
3550 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3551 INSERT INTO t1
3552 SET f_int1 = @cur_value , f_int2 = @cur_value,
3553 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3554 f_charbig = '#SINGLE#';
3555         
3556 # check single-1 success:       1
3557 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3558 INSERT INTO t1
3559 SET f_int1 = @cur_value , f_int2 = @cur_value,
3560 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3561 f_charbig = '#SINGLE#';
3562         
3563 # check single-2 success:       1
3564 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3565 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3566 UPDATE t1 SET f_int1 = @cur_value2
3567 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3568         
3569 # check single-3 success:       1
3570 SET @cur_value1= -1;
3571 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3572 UPDATE t1 SET f_int1 = @cur_value1
3573 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3574         
3575 # check single-4 success:       1
3576 SELECT MAX(f_int1) INTO @cur_value FROM t1;
3577 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3578         
3579 # check single-5 success:       1
3580 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3581         
3582 # check single-6 success:       1
3583 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3584         
3585 # check single-7 success:       1
3586 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3587 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3588 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3589 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3590 f_charbig = '#NULL#';
3591 INSERT INTO t1
3592 SET f_int1 = NULL , f_int2 = -@max_row,
3593 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3594 f_charbig = '#NULL#';
3595 # check null success:    1
3596         
3597 # check null-1 success:         1
3598 UPDATE t1 SET f_int1 = -@max_row
3599 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3600 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3601         
3602 # check null-2 success:         1
3603 UPDATE t1 SET f_int1 = NULL
3604 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3605 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3606         
3607 # check null-3 success:         1
3608 DELETE FROM t1
3609 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3610 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3611         
3612 # check null-4 success:         1
3613 DELETE FROM t1
3614 WHERE f_int1 = 0 AND f_int2 = 0
3615 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3616 AND f_charbig = '#NULL#';
3617 SET AUTOCOMMIT= 0;
3618 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3619 SELECT f_int1, f_int1, '', '', 'was inserted'
3620 FROM t0_template source_tab
3621 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3622         
3623 # check transactions-1 success:         1
3624 COMMIT WORK;
3625         
3626 # check transactions-2 success:         1
3627 ROLLBACK WORK;
3628         
3629 # check transactions-3 success:         1
3630 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3631 COMMIT WORK;
3632 ROLLBACK WORK;
3633         
3634 # check transactions-4 success:         1
3635 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3636 SELECT f_int1, f_int1, '', '', 'was inserted'
3637 FROM t0_template source_tab
3638 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3639         
3640 # check transactions-5 success:         1
3641 ROLLBACK WORK;
3642 Warnings:
3643 Warning 1196    Some non-transactional changed tables couldn't be rolled back
3644         
3645 # check transactions-6 success:         1
3646 # INFO: Storage engine used for t1 seems to be not transactional.
3647 COMMIT;
3648         
3649 # check transactions-7 success:         1
3650 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3651 COMMIT WORK;
3652 SET @@session.sql_mode = 'traditional';
3653 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3654 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3655 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3656 '', '', 'was inserted' FROM t0_template
3657 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3658 ERROR 22012: Division by 0
3659 COMMIT;
3660         
3661 # check transactions-8 success:         1
3662 # INFO: Storage engine used for t1 seems to be unable to revert
3663 #       changes made by the failing statement.
3664 SET @@session.sql_mode = '';
3665 SET AUTOCOMMIT= 1;
3666 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3667 COMMIT WORK;
3668 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3669         
3670 # check special-1 success:      1
3671 UPDATE t1 SET f_charbig = '';
3672         
3673 # check special-2 success:      1
3674 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3675 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3676 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3677 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3678 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3679 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3680 'just inserted' FROM t0_template
3681 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3682 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3683 BEGIN
3684 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3685 f_charbig = 'updated by trigger'
3686       WHERE f_int1 = new.f_int1;
3687 END|
3688 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3689 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3690 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3691         
3692 # check trigger-1 success:      1
3693 DROP TRIGGER trg_1;
3694 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3695 f_int2 = CAST(f_char1 AS SIGNED INT),
3696 f_charbig = 'just inserted'
3697    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3698 DELETE FROM t0_aux
3699 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3700 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3701 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3702 'just inserted' FROM t0_template
3703 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3704 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3705 BEGIN
3706 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3707 f_charbig = 'updated by trigger'
3708       WHERE f_int1 = new.f_int1;
3709 END|
3710 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3711 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3712 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3713         
3714 # check trigger-2 success:      1
3715 DROP TRIGGER trg_1;
3716 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3717 f_int2 = CAST(f_char1 AS SIGNED INT),
3718 f_charbig = 'just inserted'
3719    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3720 DELETE FROM t0_aux
3721 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3722 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3723 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3724 'just inserted' FROM t0_template
3725 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3726 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3727 BEGIN
3728 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3729 f_charbig = 'updated by trigger'
3730       WHERE f_int1 = new.f_int1;
3731 END|
3732 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3733 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3734         
3735 # check trigger-3 success:      1
3736 DROP TRIGGER trg_1;
3737 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3738 f_int2 = CAST(f_char1 AS SIGNED INT),
3739 f_charbig = 'just inserted'
3740    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3741 DELETE FROM t0_aux
3742 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3743 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3744 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3745 'just inserted' FROM t0_template
3746 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3747 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3748 BEGIN
3749 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3750 f_charbig = 'updated by trigger'
3751       WHERE f_int1 = - old.f_int1;
3752 END|
3753 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3754 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3755         
3756 # check trigger-4 success:      1
3757 DROP TRIGGER trg_1;
3758 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3759 f_int2 = CAST(f_char1 AS SIGNED INT),
3760 f_charbig = 'just inserted'
3761    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3762 DELETE FROM t0_aux
3763 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3764 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3765 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3766 'just inserted' FROM t0_template
3767 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3768 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3769 BEGIN
3770 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3771 f_charbig = 'updated by trigger'
3772       WHERE f_int1 = new.f_int1;
3773 END|
3774 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3775 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3776         
3777 # check trigger-5 success:      1
3778 DROP TRIGGER trg_1;
3779 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3780 f_int2 = CAST(f_char1 AS SIGNED INT),
3781 f_charbig = 'just inserted'
3782    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3783 DELETE FROM t0_aux
3784 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3785 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3786 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3787 'just inserted' FROM t0_template
3788 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3789 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3790 BEGIN
3791 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3792 f_charbig = 'updated by trigger'
3793       WHERE f_int1 = - old.f_int1;
3794 END|
3795 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
3796 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3797         
3798 # check trigger-6 success:      1
3799 DROP TRIGGER trg_1;
3800 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3801 f_int2 = CAST(f_char1 AS SIGNED INT),
3802 f_charbig = 'just inserted'
3803    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3804 DELETE FROM t0_aux
3805 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3806 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3807 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3808 'just inserted' FROM t0_template
3809 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3810 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3811 BEGIN
3812 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3813 f_charbig = 'updated by trigger'
3814       WHERE f_int1 = - old.f_int1;
3815 END|
3816 DELETE FROM t0_aux
3817 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3818         
3819 # check trigger-7 success:      1
3820 DROP TRIGGER trg_1;
3821 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3822 f_int2 = CAST(f_char1 AS SIGNED INT),
3823 f_charbig = 'just inserted'
3824    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3825 DELETE FROM t0_aux
3826 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3827 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3828 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3829 'just inserted' FROM t0_template
3830 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3831 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3832 BEGIN
3833 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3834 f_charbig = 'updated by trigger'
3835       WHERE f_int1 = - old.f_int1;
3836 END|
3837 DELETE FROM t0_aux
3838 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3839         
3840 # check trigger-8 success:      1
3841 DROP TRIGGER trg_1;
3842 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3843 f_int2 = CAST(f_char1 AS SIGNED INT),
3844 f_charbig = 'just inserted'
3845    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3846 DELETE FROM t0_aux
3847 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3848 DELETE FROM t1
3849 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3850 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3851 BEGIN
3852 SET new.f_int1 = old.f_int1 + @max_row,
3853 new.f_int2 = old.f_int2 - @max_row,
3854 new.f_charbig = '####updated per update trigger####';
3855 END|
3856 UPDATE t1
3857 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3858 f_charbig = '####updated per update statement itself####';
3859         
3860 # check trigger-9 success:      1
3861 DROP TRIGGER trg_2;
3862 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3863 f_int2 = CAST(f_char1 AS SIGNED INT),
3864 f_charbig = CONCAT('===',f_char1,'===');
3865 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3866 BEGIN
3867 SET new.f_int1 = new.f_int1 + @max_row,
3868 new.f_int2 = new.f_int2 - @max_row,
3869 new.f_charbig = '####updated per update trigger####';
3870 END|
3871 UPDATE t1
3872 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3873 f_charbig = '####updated per update statement itself####';
3874         
3875 # check trigger-10 success:     1
3876 DROP TRIGGER trg_2;
3877 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3878 f_int2 = CAST(f_char1 AS SIGNED INT),
3879 f_charbig = CONCAT('===',f_char1,'===');
3880 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3881 BEGIN
3882 SET new.f_int1 = @my_max1 + @counter,
3883 new.f_int2 = @my_min2 - @counter,
3884 new.f_charbig = '####updated per insert trigger####';
3885 SET @counter = @counter + 1;
3886 END|
3887 SET @counter = 1;
3888 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3889 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3890 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3891 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3892 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3893 ORDER BY f_int1;
3894 DROP TRIGGER trg_3;
3895         
3896 # check trigger-11 success:     1
3897 DELETE FROM t1
3898 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3899 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3900 AND f_charbig = '####updated per insert trigger####';
3901 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3902 BEGIN
3903 SET new.f_int1 = @my_max1 + @counter,
3904 new.f_int2 = @my_min2 - @counter,
3905 new.f_charbig = '####updated per insert trigger####';
3906 SET @counter = @counter + 1;
3907 END|
3908 SET @counter = 1;
3909 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3910 INSERT INTO t1 (f_char1, f_char2, f_charbig)
3911 SELECT CAST(f_int1 AS CHAR),
3912 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3913 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3914 ORDER BY f_int1;
3915 DROP TRIGGER trg_3;
3916         
3917 # check trigger-12 success:     1
3918 DELETE FROM t1
3919 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3920 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3921 AND f_charbig = '####updated per insert trigger####';
3922 ANALYZE  TABLE t1;
3923 Table   Op      Msg_type        Msg_text
3924 test.t1 analyze status  OK
3925 CHECK    TABLE t1 EXTENDED;
3926 Table   Op      Msg_type        Msg_text
3927 test.t1 check   status  OK
3928 CHECKSUM TABLE t1 EXTENDED;
3929 Table   Checksum
3930 test.t1 <some_value>
3931 OPTIMIZE TABLE t1;
3932 Table   Op      Msg_type        Msg_text
3933 test.t1 optimize        status  OK
3934 # check layout success:    1
3935 REPAIR   TABLE t1 EXTENDED;
3936 Table   Op      Msg_type        Msg_text
3937 test.t1 repair  status  OK
3938 # check layout success:    1
3939 TRUNCATE t1;
3940         
3941 # check TRUNCATE success:       1
3942 # check layout success:    1
3943 # End usability test (inc/partition_check.inc)
3944 DROP TABLE t1;
3945 #  1.2 ALTER ... ANALYZE PARTITION part_1,part_2;
3946 DROP TABLE IF EXISTS t1;
3947 CREATE TABLE t1 (
3948 f_int1 INTEGER,
3949 f_int2 INTEGER,
3950 f_char1 CHAR(20),
3951 f_char2 CHAR(20),
3952 f_charbig VARCHAR(1000)
3955 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
3956 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3957 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3958 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3959 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
3960 Table   Op      Msg_type        Msg_text
3961 test.t1 analyze status  OK
3962 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3963 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3964 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3965 # Start usability test (inc/partition_check.inc)
3966 create_command
3967 SHOW CREATE TABLE t1;
3968 Table   Create Table
3969 t1      CREATE TABLE `t1` (
3970   `f_int1` int(11) DEFAULT NULL,
3971   `f_int2` int(11) DEFAULT NULL,
3972   `f_char1` char(20) DEFAULT NULL,
3973   `f_char2` char(20) DEFAULT NULL,
3974   `f_charbig` varchar(1000) DEFAULT NULL
3975 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
3976 /*!50100 PARTITION BY HASH (f_int1)
3977 (PARTITION part_1 ENGINE = MyISAM,
3978  PARTITION part_2 ENGINE = MyISAM) */
3980 unified filelist
3981 t1#P#part_1.MYD
3982 t1#P#part_1.MYI
3983 t1#P#part_2.MYD
3984 t1#P#part_2.MYI
3985 t1.frm
3986 t1.par
3988 # check prerequisites-1 success:    1
3989 # check COUNT(*) success:    1
3990 # check MIN/MAX(f_int1) success:    1
3991 # check MIN/MAX(f_int2) success:    1
3992 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3993 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3994 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3995 WHERE f_int1 IN (2,3);
3996 # check prerequisites-3 success:    1
3997 DELETE FROM t1 WHERE f_charbig = 'delete me';
3998 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3999 # check read via f_int1 success: 1
4000 # check read via f_int2 success: 1
4001         
4002 # check multiple-1 success:     1
4003 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4004         
4005 # check multiple-2 success:     1
4006 INSERT INTO t1 SELECT * FROM t0_template
4007 WHERE MOD(f_int1,3) = 0;
4008         
4009 # check multiple-3 success:     1
4010 UPDATE t1 SET f_int1 = f_int1 + @max_row
4011 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4012 AND @max_row_div2 + @max_row_div4;
4013         
4014 # check multiple-4 success:     1
4015 DELETE FROM t1
4016 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4017 AND @max_row_div2 + @max_row_div4 + @max_row;
4018         
4019 # check multiple-5 success:     1
4020 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4021 INSERT INTO t1
4022 SET f_int1 = @cur_value , f_int2 = @cur_value,
4023 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4024 f_charbig = '#SINGLE#';
4025         
4026 # check single-1 success:       1
4027 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4028 INSERT INTO t1
4029 SET f_int1 = @cur_value , f_int2 = @cur_value,
4030 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4031 f_charbig = '#SINGLE#';
4032         
4033 # check single-2 success:       1
4034 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4035 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4036 UPDATE t1 SET f_int1 = @cur_value2
4037 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4038         
4039 # check single-3 success:       1
4040 SET @cur_value1= -1;
4041 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4042 UPDATE t1 SET f_int1 = @cur_value1
4043 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4044         
4045 # check single-4 success:       1
4046 SELECT MAX(f_int1) INTO @cur_value FROM t1;
4047 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4048         
4049 # check single-5 success:       1
4050 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4051         
4052 # check single-6 success:       1
4053 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4054         
4055 # check single-7 success:       1
4056 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4057 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4058 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4059 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4060 f_charbig = '#NULL#';
4061 INSERT INTO t1
4062 SET f_int1 = NULL , f_int2 = -@max_row,
4063 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4064 f_charbig = '#NULL#';
4065 # check null success:    1
4066         
4067 # check null-1 success:         1
4068 UPDATE t1 SET f_int1 = -@max_row
4069 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4070 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4071         
4072 # check null-2 success:         1
4073 UPDATE t1 SET f_int1 = NULL
4074 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4075 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4076         
4077 # check null-3 success:         1
4078 DELETE FROM t1
4079 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4080 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4081         
4082 # check null-4 success:         1
4083 DELETE FROM t1
4084 WHERE f_int1 = 0 AND f_int2 = 0
4085 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4086 AND f_charbig = '#NULL#';
4087 SET AUTOCOMMIT= 0;
4088 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4089 SELECT f_int1, f_int1, '', '', 'was inserted'
4090 FROM t0_template source_tab
4091 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4092         
4093 # check transactions-1 success:         1
4094 COMMIT WORK;
4095         
4096 # check transactions-2 success:         1
4097 ROLLBACK WORK;
4098         
4099 # check transactions-3 success:         1
4100 DELETE FROM t1 WHERE f_charbig = 'was inserted';
4101 COMMIT WORK;
4102 ROLLBACK WORK;
4103         
4104 # check transactions-4 success:         1
4105 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4106 SELECT f_int1, f_int1, '', '', 'was inserted'
4107 FROM t0_template source_tab
4108 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4109         
4110 # check transactions-5 success:         1
4111 ROLLBACK WORK;
4112 Warnings:
4113 Warning 1196    Some non-transactional changed tables couldn't be rolled back
4114         
4115 # check transactions-6 success:         1
4116 # INFO: Storage engine used for t1 seems to be not transactional.
4117 COMMIT;
4118         
4119 # check transactions-7 success:         1
4120 DELETE FROM t1 WHERE f_charbig = 'was inserted';
4121 COMMIT WORK;
4122 SET @@session.sql_mode = 'traditional';
4123 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4124 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4125 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4126 '', '', 'was inserted' FROM t0_template
4127 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4128 ERROR 22012: Division by 0
4129 COMMIT;
4130         
4131 # check transactions-8 success:         1
4132 # INFO: Storage engine used for t1 seems to be unable to revert
4133 #       changes made by the failing statement.
4134 SET @@session.sql_mode = '';
4135 SET AUTOCOMMIT= 1;
4136 DELETE FROM t1 WHERE f_charbig = 'was inserted';
4137 COMMIT WORK;
4138 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4139         
4140 # check special-1 success:      1
4141 UPDATE t1 SET f_charbig = '';
4142         
4143 # check special-2 success:      1
4144 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4145 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4146 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4147 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4148 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4149 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4150 'just inserted' FROM t0_template
4151 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4152 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4153 BEGIN
4154 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4155 f_charbig = 'updated by trigger'
4156       WHERE f_int1 = new.f_int1;
4157 END|
4158 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4159 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4160 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4161         
4162 # check trigger-1 success:      1
4163 DROP TRIGGER trg_1;
4164 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4165 f_int2 = CAST(f_char1 AS SIGNED INT),
4166 f_charbig = 'just inserted'
4167    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4168 DELETE FROM t0_aux
4169 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4170 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4171 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4172 'just inserted' FROM t0_template
4173 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4174 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4175 BEGIN
4176 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4177 f_charbig = 'updated by trigger'
4178       WHERE f_int1 = new.f_int1;
4179 END|
4180 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4181 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4182 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4183         
4184 # check trigger-2 success:      1
4185 DROP TRIGGER trg_1;
4186 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4187 f_int2 = CAST(f_char1 AS SIGNED INT),
4188 f_charbig = 'just inserted'
4189    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4190 DELETE FROM t0_aux
4191 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4192 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4193 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4194 'just inserted' FROM t0_template
4195 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4196 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4197 BEGIN
4198 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4199 f_charbig = 'updated by trigger'
4200       WHERE f_int1 = new.f_int1;
4201 END|
4202 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4203 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4204         
4205 # check trigger-3 success:      1
4206 DROP TRIGGER trg_1;
4207 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4208 f_int2 = CAST(f_char1 AS SIGNED INT),
4209 f_charbig = 'just inserted'
4210    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4211 DELETE FROM t0_aux
4212 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4213 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4214 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4215 'just inserted' FROM t0_template
4216 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4217 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4218 BEGIN
4219 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4220 f_charbig = 'updated by trigger'
4221       WHERE f_int1 = - old.f_int1;
4222 END|
4223 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4224 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4225         
4226 # check trigger-4 success:      1
4227 DROP TRIGGER trg_1;
4228 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4229 f_int2 = CAST(f_char1 AS SIGNED INT),
4230 f_charbig = 'just inserted'
4231    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4232 DELETE FROM t0_aux
4233 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4234 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4235 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4236 'just inserted' FROM t0_template
4237 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4238 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4239 BEGIN
4240 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4241 f_charbig = 'updated by trigger'
4242       WHERE f_int1 = new.f_int1;
4243 END|
4244 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4245 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4246         
4247 # check trigger-5 success:      1
4248 DROP TRIGGER trg_1;
4249 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4250 f_int2 = CAST(f_char1 AS SIGNED INT),
4251 f_charbig = 'just inserted'
4252    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4253 DELETE FROM t0_aux
4254 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4255 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4256 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4257 'just inserted' FROM t0_template
4258 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4259 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4260 BEGIN
4261 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4262 f_charbig = 'updated by trigger'
4263       WHERE f_int1 = - old.f_int1;
4264 END|
4265 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4266 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4267         
4268 # check trigger-6 success:      1
4269 DROP TRIGGER trg_1;
4270 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4271 f_int2 = CAST(f_char1 AS SIGNED INT),
4272 f_charbig = 'just inserted'
4273    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4274 DELETE FROM t0_aux
4275 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4276 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4277 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4278 'just inserted' FROM t0_template
4279 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4280 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4281 BEGIN
4282 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4283 f_charbig = 'updated by trigger'
4284       WHERE f_int1 = - old.f_int1;
4285 END|
4286 DELETE FROM t0_aux
4287 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4288         
4289 # check trigger-7 success:      1
4290 DROP TRIGGER trg_1;
4291 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4292 f_int2 = CAST(f_char1 AS SIGNED INT),
4293 f_charbig = 'just inserted'
4294    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4295 DELETE FROM t0_aux
4296 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4297 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4298 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4299 'just inserted' FROM t0_template
4300 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4301 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4302 BEGIN
4303 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4304 f_charbig = 'updated by trigger'
4305       WHERE f_int1 = - old.f_int1;
4306 END|
4307 DELETE FROM t0_aux
4308 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4309         
4310 # check trigger-8 success:      1
4311 DROP TRIGGER trg_1;
4312 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4313 f_int2 = CAST(f_char1 AS SIGNED INT),
4314 f_charbig = 'just inserted'
4315    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4316 DELETE FROM t0_aux
4317 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4318 DELETE FROM t1
4319 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4320 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4321 BEGIN
4322 SET new.f_int1 = old.f_int1 + @max_row,
4323 new.f_int2 = old.f_int2 - @max_row,
4324 new.f_charbig = '####updated per update trigger####';
4325 END|
4326 UPDATE t1
4327 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4328 f_charbig = '####updated per update statement itself####';
4329         
4330 # check trigger-9 success:      1
4331 DROP TRIGGER trg_2;
4332 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4333 f_int2 = CAST(f_char1 AS SIGNED INT),
4334 f_charbig = CONCAT('===',f_char1,'===');
4335 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4336 BEGIN
4337 SET new.f_int1 = new.f_int1 + @max_row,
4338 new.f_int2 = new.f_int2 - @max_row,
4339 new.f_charbig = '####updated per update trigger####';
4340 END|
4341 UPDATE t1
4342 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4343 f_charbig = '####updated per update statement itself####';
4344         
4345 # check trigger-10 success:     1
4346 DROP TRIGGER trg_2;
4347 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4348 f_int2 = CAST(f_char1 AS SIGNED INT),
4349 f_charbig = CONCAT('===',f_char1,'===');
4350 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4351 BEGIN
4352 SET new.f_int1 = @my_max1 + @counter,
4353 new.f_int2 = @my_min2 - @counter,
4354 new.f_charbig = '####updated per insert trigger####';
4355 SET @counter = @counter + 1;
4356 END|
4357 SET @counter = 1;
4358 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4359 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4360 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4361 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4362 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4363 ORDER BY f_int1;
4364 DROP TRIGGER trg_3;
4365         
4366 # check trigger-11 success:     1
4367 DELETE FROM t1
4368 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4369 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4370 AND f_charbig = '####updated per insert trigger####';
4371 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4372 BEGIN
4373 SET new.f_int1 = @my_max1 + @counter,
4374 new.f_int2 = @my_min2 - @counter,
4375 new.f_charbig = '####updated per insert trigger####';
4376 SET @counter = @counter + 1;
4377 END|
4378 SET @counter = 1;
4379 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4380 INSERT INTO t1 (f_char1, f_char2, f_charbig)
4381 SELECT CAST(f_int1 AS CHAR),
4382 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4383 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4384 ORDER BY f_int1;
4385 DROP TRIGGER trg_3;
4386         
4387 # check trigger-12 success:     1
4388 DELETE FROM t1
4389 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4390 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4391 AND f_charbig = '####updated per insert trigger####';
4392 ANALYZE  TABLE t1;
4393 Table   Op      Msg_type        Msg_text
4394 test.t1 analyze status  OK
4395 CHECK    TABLE t1 EXTENDED;
4396 Table   Op      Msg_type        Msg_text
4397 test.t1 check   status  OK
4398 CHECKSUM TABLE t1 EXTENDED;
4399 Table   Checksum
4400 test.t1 <some_value>
4401 OPTIMIZE TABLE t1;
4402 Table   Op      Msg_type        Msg_text
4403 test.t1 optimize        status  OK
4404 # check layout success:    1
4405 REPAIR   TABLE t1 EXTENDED;
4406 Table   Op      Msg_type        Msg_text
4407 test.t1 repair  status  OK
4408 # check layout success:    1
4409 TRUNCATE t1;
4410         
4411 # check TRUNCATE success:       1
4412 # check layout success:    1
4413 # End usability test (inc/partition_check.inc)
4414 DROP TABLE t1;
4415 CREATE TABLE t1 (
4416 f_int1 INTEGER,
4417 f_int2 INTEGER,
4418 f_char1 CHAR(20),
4419 f_char2 CHAR(20),
4420 f_charbig VARCHAR(1000)
4423 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
4424 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4425 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4426 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4427 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
4428 Table   Op      Msg_type        Msg_text
4429 test.t1 analyze status  OK
4430 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4431 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4432 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4433 # Start usability test (inc/partition_check.inc)
4434 create_command
4435 SHOW CREATE TABLE t1;
4436 Table   Create Table
4437 t1      CREATE TABLE `t1` (
4438   `f_int1` int(11) DEFAULT NULL,
4439   `f_int2` int(11) DEFAULT NULL,
4440   `f_char1` char(20) DEFAULT NULL,
4441   `f_char2` char(20) DEFAULT NULL,
4442   `f_charbig` varchar(1000) DEFAULT NULL
4443 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
4444 /*!50100 PARTITION BY KEY (f_int1)
4445 (PARTITION part_1 ENGINE = MyISAM,
4446  PARTITION part_2 ENGINE = MyISAM,
4447  PARTITION part_3 ENGINE = MyISAM,
4448  PARTITION part_4 ENGINE = MyISAM,
4449  PARTITION part_5 ENGINE = MyISAM) */
4451 unified filelist
4452 t1#P#part_1.MYD
4453 t1#P#part_1.MYI
4454 t1#P#part_2.MYD
4455 t1#P#part_2.MYI
4456 t1#P#part_3.MYD
4457 t1#P#part_3.MYI
4458 t1#P#part_4.MYD
4459 t1#P#part_4.MYI
4460 t1#P#part_5.MYD
4461 t1#P#part_5.MYI
4462 t1.frm
4463 t1.par
4465 # check prerequisites-1 success:    1
4466 # check COUNT(*) success:    1
4467 # check MIN/MAX(f_int1) success:    1
4468 # check MIN/MAX(f_int2) success:    1
4469 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4470 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4471 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4472 WHERE f_int1 IN (2,3);
4473 # check prerequisites-3 success:    1
4474 DELETE FROM t1 WHERE f_charbig = 'delete me';
4475 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4476 # check read via f_int1 success: 1
4477 # check read via f_int2 success: 1
4478         
4479 # check multiple-1 success:     1
4480 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4481         
4482 # check multiple-2 success:     1
4483 INSERT INTO t1 SELECT * FROM t0_template
4484 WHERE MOD(f_int1,3) = 0;
4485         
4486 # check multiple-3 success:     1
4487 UPDATE t1 SET f_int1 = f_int1 + @max_row
4488 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4489 AND @max_row_div2 + @max_row_div4;
4490         
4491 # check multiple-4 success:     1
4492 DELETE FROM t1
4493 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4494 AND @max_row_div2 + @max_row_div4 + @max_row;
4495         
4496 # check multiple-5 success:     1
4497 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4498 INSERT INTO t1
4499 SET f_int1 = @cur_value , f_int2 = @cur_value,
4500 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4501 f_charbig = '#SINGLE#';
4502         
4503 # check single-1 success:       1
4504 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4505 INSERT INTO t1
4506 SET f_int1 = @cur_value , f_int2 = @cur_value,
4507 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4508 f_charbig = '#SINGLE#';
4509         
4510 # check single-2 success:       1
4511 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4512 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4513 UPDATE t1 SET f_int1 = @cur_value2
4514 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4515         
4516 # check single-3 success:       1
4517 SET @cur_value1= -1;
4518 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4519 UPDATE t1 SET f_int1 = @cur_value1
4520 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4521         
4522 # check single-4 success:       1
4523 SELECT MAX(f_int1) INTO @cur_value FROM t1;
4524 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4525         
4526 # check single-5 success:       1
4527 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4528         
4529 # check single-6 success:       1
4530 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4531         
4532 # check single-7 success:       1
4533 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4534 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4535 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4536 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4537 f_charbig = '#NULL#';
4538 INSERT INTO t1
4539 SET f_int1 = NULL , f_int2 = -@max_row,
4540 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4541 f_charbig = '#NULL#';
4542 # check null success:    1
4543         
4544 # check null-1 success:         1
4545 UPDATE t1 SET f_int1 = -@max_row
4546 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4547 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4548         
4549 # check null-2 success:         1
4550 UPDATE t1 SET f_int1 = NULL
4551 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4552 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4553         
4554 # check null-3 success:         1
4555 DELETE FROM t1
4556 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4557 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4558         
4559 # check null-4 success:         1
4560 DELETE FROM t1
4561 WHERE f_int1 = 0 AND f_int2 = 0
4562 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4563 AND f_charbig = '#NULL#';
4564 SET AUTOCOMMIT= 0;
4565 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4566 SELECT f_int1, f_int1, '', '', 'was inserted'
4567 FROM t0_template source_tab
4568 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4569         
4570 # check transactions-1 success:         1
4571 COMMIT WORK;
4572         
4573 # check transactions-2 success:         1
4574 ROLLBACK WORK;
4575         
4576 # check transactions-3 success:         1
4577 DELETE FROM t1 WHERE f_charbig = 'was inserted';
4578 COMMIT WORK;
4579 ROLLBACK WORK;
4580         
4581 # check transactions-4 success:         1
4582 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4583 SELECT f_int1, f_int1, '', '', 'was inserted'
4584 FROM t0_template source_tab
4585 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4586         
4587 # check transactions-5 success:         1
4588 ROLLBACK WORK;
4589 Warnings:
4590 Warning 1196    Some non-transactional changed tables couldn't be rolled back
4591         
4592 # check transactions-6 success:         1
4593 # INFO: Storage engine used for t1 seems to be not transactional.
4594 COMMIT;
4595         
4596 # check transactions-7 success:         1
4597 DELETE FROM t1 WHERE f_charbig = 'was inserted';
4598 COMMIT WORK;
4599 SET @@session.sql_mode = 'traditional';
4600 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4601 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4602 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4603 '', '', 'was inserted' FROM t0_template
4604 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4605 ERROR 22012: Division by 0
4606 COMMIT;
4607         
4608 # check transactions-8 success:         1
4609 # INFO: Storage engine used for t1 seems to be unable to revert
4610 #       changes made by the failing statement.
4611 SET @@session.sql_mode = '';
4612 SET AUTOCOMMIT= 1;
4613 DELETE FROM t1 WHERE f_charbig = 'was inserted';
4614 COMMIT WORK;
4615 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4616         
4617 # check special-1 success:      1
4618 UPDATE t1 SET f_charbig = '';
4619         
4620 # check special-2 success:      1
4621 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4622 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4623 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4624 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4625 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4626 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4627 'just inserted' FROM t0_template
4628 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4629 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4630 BEGIN
4631 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4632 f_charbig = 'updated by trigger'
4633       WHERE f_int1 = new.f_int1;
4634 END|
4635 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4636 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4637 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4638         
4639 # check trigger-1 success:      1
4640 DROP TRIGGER trg_1;
4641 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4642 f_int2 = CAST(f_char1 AS SIGNED INT),
4643 f_charbig = 'just inserted'
4644    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4645 DELETE FROM t0_aux
4646 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4647 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4648 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4649 'just inserted' FROM t0_template
4650 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4651 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4652 BEGIN
4653 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4654 f_charbig = 'updated by trigger'
4655       WHERE f_int1 = new.f_int1;
4656 END|
4657 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4658 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4659 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4660         
4661 # check trigger-2 success:      1
4662 DROP TRIGGER trg_1;
4663 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4664 f_int2 = CAST(f_char1 AS SIGNED INT),
4665 f_charbig = 'just inserted'
4666    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4667 DELETE FROM t0_aux
4668 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4669 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4670 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4671 'just inserted' FROM t0_template
4672 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4673 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4674 BEGIN
4675 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4676 f_charbig = 'updated by trigger'
4677       WHERE f_int1 = new.f_int1;
4678 END|
4679 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4680 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4681         
4682 # check trigger-3 success:      1
4683 DROP TRIGGER trg_1;
4684 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4685 f_int2 = CAST(f_char1 AS SIGNED INT),
4686 f_charbig = 'just inserted'
4687    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4688 DELETE FROM t0_aux
4689 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4690 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4691 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4692 'just inserted' FROM t0_template
4693 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4694 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4695 BEGIN
4696 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4697 f_charbig = 'updated by trigger'
4698       WHERE f_int1 = - old.f_int1;
4699 END|
4700 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4701 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4702         
4703 # check trigger-4 success:      1
4704 DROP TRIGGER trg_1;
4705 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4706 f_int2 = CAST(f_char1 AS SIGNED INT),
4707 f_charbig = 'just inserted'
4708    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4709 DELETE FROM t0_aux
4710 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4711 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4712 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4713 'just inserted' FROM t0_template
4714 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4715 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4716 BEGIN
4717 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4718 f_charbig = 'updated by trigger'
4719       WHERE f_int1 = new.f_int1;
4720 END|
4721 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4722 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4723         
4724 # check trigger-5 success:      1
4725 DROP TRIGGER trg_1;
4726 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4727 f_int2 = CAST(f_char1 AS SIGNED INT),
4728 f_charbig = 'just inserted'
4729    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4730 DELETE FROM t0_aux
4731 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4732 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4733 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4734 'just inserted' FROM t0_template
4735 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4736 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4737 BEGIN
4738 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4739 f_charbig = 'updated by trigger'
4740       WHERE f_int1 = - old.f_int1;
4741 END|
4742 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
4743 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4744         
4745 # check trigger-6 success:      1
4746 DROP TRIGGER trg_1;
4747 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4748 f_int2 = CAST(f_char1 AS SIGNED INT),
4749 f_charbig = 'just inserted'
4750    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4751 DELETE FROM t0_aux
4752 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4753 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4754 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4755 'just inserted' FROM t0_template
4756 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4757 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4758 BEGIN
4759 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4760 f_charbig = 'updated by trigger'
4761       WHERE f_int1 = - old.f_int1;
4762 END|
4763 DELETE FROM t0_aux
4764 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4765         
4766 # check trigger-7 success:      1
4767 DROP TRIGGER trg_1;
4768 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4769 f_int2 = CAST(f_char1 AS SIGNED INT),
4770 f_charbig = 'just inserted'
4771    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4772 DELETE FROM t0_aux
4773 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4774 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4775 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4776 'just inserted' FROM t0_template
4777 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4778 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4779 BEGIN
4780 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4781 f_charbig = 'updated by trigger'
4782       WHERE f_int1 = - old.f_int1;
4783 END|
4784 DELETE FROM t0_aux
4785 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4786         
4787 # check trigger-8 success:      1
4788 DROP TRIGGER trg_1;
4789 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4790 f_int2 = CAST(f_char1 AS SIGNED INT),
4791 f_charbig = 'just inserted'
4792    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4793 DELETE FROM t0_aux
4794 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4795 DELETE FROM t1
4796 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4797 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4798 BEGIN
4799 SET new.f_int1 = old.f_int1 + @max_row,
4800 new.f_int2 = old.f_int2 - @max_row,
4801 new.f_charbig = '####updated per update trigger####';
4802 END|
4803 UPDATE t1
4804 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4805 f_charbig = '####updated per update statement itself####';
4806         
4807 # check trigger-9 success:      1
4808 DROP TRIGGER trg_2;
4809 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4810 f_int2 = CAST(f_char1 AS SIGNED INT),
4811 f_charbig = CONCAT('===',f_char1,'===');
4812 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4813 BEGIN
4814 SET new.f_int1 = new.f_int1 + @max_row,
4815 new.f_int2 = new.f_int2 - @max_row,
4816 new.f_charbig = '####updated per update trigger####';
4817 END|
4818 UPDATE t1
4819 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4820 f_charbig = '####updated per update statement itself####';
4821         
4822 # check trigger-10 success:     1
4823 DROP TRIGGER trg_2;
4824 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4825 f_int2 = CAST(f_char1 AS SIGNED INT),
4826 f_charbig = CONCAT('===',f_char1,'===');
4827 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4828 BEGIN
4829 SET new.f_int1 = @my_max1 + @counter,
4830 new.f_int2 = @my_min2 - @counter,
4831 new.f_charbig = '####updated per insert trigger####';
4832 SET @counter = @counter + 1;
4833 END|
4834 SET @counter = 1;
4835 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4836 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4837 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4838 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4839 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4840 ORDER BY f_int1;
4841 DROP TRIGGER trg_3;
4842         
4843 # check trigger-11 success:     1
4844 DELETE FROM t1
4845 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4846 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4847 AND f_charbig = '####updated per insert trigger####';
4848 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4849 BEGIN
4850 SET new.f_int1 = @my_max1 + @counter,
4851 new.f_int2 = @my_min2 - @counter,
4852 new.f_charbig = '####updated per insert trigger####';
4853 SET @counter = @counter + 1;
4854 END|
4855 SET @counter = 1;
4856 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4857 INSERT INTO t1 (f_char1, f_char2, f_charbig)
4858 SELECT CAST(f_int1 AS CHAR),
4859 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4860 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4861 ORDER BY f_int1;
4862 DROP TRIGGER trg_3;
4863         
4864 # check trigger-12 success:     1
4865 DELETE FROM t1
4866 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4867 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4868 AND f_charbig = '####updated per insert trigger####';
4869 ANALYZE  TABLE t1;
4870 Table   Op      Msg_type        Msg_text
4871 test.t1 analyze status  OK
4872 CHECK    TABLE t1 EXTENDED;
4873 Table   Op      Msg_type        Msg_text
4874 test.t1 check   status  OK
4875 CHECKSUM TABLE t1 EXTENDED;
4876 Table   Checksum
4877 test.t1 <some_value>
4878 OPTIMIZE TABLE t1;
4879 Table   Op      Msg_type        Msg_text
4880 test.t1 optimize        status  OK
4881 # check layout success:    1
4882 REPAIR   TABLE t1 EXTENDED;
4883 Table   Op      Msg_type        Msg_text
4884 test.t1 repair  status  OK
4885 # check layout success:    1
4886 TRUNCATE t1;
4887         
4888 # check TRUNCATE success:       1
4889 # check layout success:    1
4890 # End usability test (inc/partition_check.inc)
4891 DROP TABLE t1;
4892 CREATE TABLE t1 (
4893 f_int1 INTEGER,
4894 f_int2 INTEGER,
4895 f_char1 CHAR(20),
4896 f_char2 CHAR(20),
4897 f_charbig VARCHAR(1000)
4900 PARTITION BY LIST(MOD(f_int1,4))
4901 (PARTITION part_3 VALUES IN (-3),
4902 PARTITION part_2 VALUES IN (-2),
4903 PARTITION part_1 VALUES IN (-1),
4904 PARTITION part_N VALUES IN (NULL),
4905 PARTITION part0 VALUES IN (0),
4906 PARTITION part1 VALUES IN (1),
4907 PARTITION part2 VALUES IN (2),
4908 PARTITION part3 VALUES IN (3));
4909 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4910 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4911 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4912 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
4913 Table   Op      Msg_type        Msg_text
4914 test.t1 analyze status  OK
4915 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4916 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4917 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4918 # Start usability test (inc/partition_check.inc)
4919 create_command
4920 SHOW CREATE TABLE t1;
4921 Table   Create Table
4922 t1      CREATE TABLE `t1` (
4923   `f_int1` int(11) DEFAULT NULL,
4924   `f_int2` int(11) DEFAULT NULL,
4925   `f_char1` char(20) DEFAULT NULL,
4926   `f_char2` char(20) DEFAULT NULL,
4927   `f_charbig` varchar(1000) DEFAULT NULL
4928 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
4929 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
4930 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
4931  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
4932  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
4933  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
4934  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
4935  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
4936  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
4937  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
4939 unified filelist
4940 t1#P#part0.MYD
4941 t1#P#part0.MYI
4942 t1#P#part1.MYD
4943 t1#P#part1.MYI
4944 t1#P#part2.MYD
4945 t1#P#part2.MYI
4946 t1#P#part3.MYD
4947 t1#P#part3.MYI
4948 t1#P#part_1.MYD
4949 t1#P#part_1.MYI
4950 t1#P#part_2.MYD
4951 t1#P#part_2.MYI
4952 t1#P#part_3.MYD
4953 t1#P#part_3.MYI
4954 t1#P#part_N.MYD
4955 t1#P#part_N.MYI
4956 t1.frm
4957 t1.par
4959 # check prerequisites-1 success:    1
4960 # check COUNT(*) success:    1
4961 # check MIN/MAX(f_int1) success:    1
4962 # check MIN/MAX(f_int2) success:    1
4963 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4964 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4965 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4966 WHERE f_int1 IN (2,3);
4967 # check prerequisites-3 success:    1
4968 DELETE FROM t1 WHERE f_charbig = 'delete me';
4969 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4970 # check read via f_int1 success: 1
4971 # check read via f_int2 success: 1
4972         
4973 # check multiple-1 success:     1
4974 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4975         
4976 # check multiple-2 success:     1
4977 INSERT INTO t1 SELECT * FROM t0_template
4978 WHERE MOD(f_int1,3) = 0;
4979         
4980 # check multiple-3 success:     1
4981 UPDATE t1 SET f_int1 = f_int1 + @max_row
4982 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4983 AND @max_row_div2 + @max_row_div4;
4984         
4985 # check multiple-4 success:     1
4986 DELETE FROM t1
4987 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4988 AND @max_row_div2 + @max_row_div4 + @max_row;
4989         
4990 # check multiple-5 success:     1
4991 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4992 INSERT INTO t1
4993 SET f_int1 = @cur_value , f_int2 = @cur_value,
4994 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4995 f_charbig = '#SINGLE#';
4996         
4997 # check single-1 success:       1
4998 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4999 INSERT INTO t1
5000 SET f_int1 = @cur_value , f_int2 = @cur_value,
5001 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5002 f_charbig = '#SINGLE#';
5003         
5004 # check single-2 success:       1
5005 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5006 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5007 UPDATE t1 SET f_int1 = @cur_value2
5008 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5009         
5010 # check single-3 success:       1
5011 SET @cur_value1= -1;
5012 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5013 UPDATE t1 SET f_int1 = @cur_value1
5014 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5015         
5016 # check single-4 success:       1
5017 SELECT MAX(f_int1) INTO @cur_value FROM t1;
5018 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5019         
5020 # check single-5 success:       1
5021 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5022         
5023 # check single-6 success:       1
5024 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5025         
5026 # check single-7 success:       1
5027 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
5028 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5029 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5030 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5031 f_charbig = '#NULL#';
5032 INSERT INTO t1
5033 SET f_int1 = NULL , f_int2 = -@max_row,
5034 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5035 f_charbig = '#NULL#';
5036 # check null success:    1
5037         
5038 # check null-1 success:         1
5039 UPDATE t1 SET f_int1 = -@max_row
5040 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5041 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5042         
5043 # check null-2 success:         1
5044 UPDATE t1 SET f_int1 = NULL
5045 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5046 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5047         
5048 # check null-3 success:         1
5049 DELETE FROM t1
5050 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5051 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5052         
5053 # check null-4 success:         1
5054 DELETE FROM t1
5055 WHERE f_int1 = 0 AND f_int2 = 0
5056 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5057 AND f_charbig = '#NULL#';
5058 SET AUTOCOMMIT= 0;
5059 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5060 SELECT f_int1, f_int1, '', '', 'was inserted'
5061 FROM t0_template source_tab
5062 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5063         
5064 # check transactions-1 success:         1
5065 COMMIT WORK;
5066         
5067 # check transactions-2 success:         1
5068 ROLLBACK WORK;
5069         
5070 # check transactions-3 success:         1
5071 DELETE FROM t1 WHERE f_charbig = 'was inserted';
5072 COMMIT WORK;
5073 ROLLBACK WORK;
5074         
5075 # check transactions-4 success:         1
5076 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5077 SELECT f_int1, f_int1, '', '', 'was inserted'
5078 FROM t0_template source_tab
5079 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5080         
5081 # check transactions-5 success:         1
5082 ROLLBACK WORK;
5083 Warnings:
5084 Warning 1196    Some non-transactional changed tables couldn't be rolled back
5085         
5086 # check transactions-6 success:         1
5087 # INFO: Storage engine used for t1 seems to be not transactional.
5088 COMMIT;
5089         
5090 # check transactions-7 success:         1
5091 DELETE FROM t1 WHERE f_charbig = 'was inserted';
5092 COMMIT WORK;
5093 SET @@session.sql_mode = 'traditional';
5094 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5095 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5096 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5097 '', '', 'was inserted' FROM t0_template
5098 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5099 ERROR 22012: Division by 0
5100 COMMIT;
5101         
5102 # check transactions-8 success:         1
5103 # INFO: Storage engine used for t1 seems to be unable to revert
5104 #       changes made by the failing statement.
5105 SET @@session.sql_mode = '';
5106 SET AUTOCOMMIT= 1;
5107 DELETE FROM t1 WHERE f_charbig = 'was inserted';
5108 COMMIT WORK;
5109 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5110         
5111 # check special-1 success:      1
5112 UPDATE t1 SET f_charbig = '';
5113         
5114 # check special-2 success:      1
5115 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5116 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5117 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5118 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5119 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5120 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5121 'just inserted' FROM t0_template
5122 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5123 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5124 BEGIN
5125 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5126 f_charbig = 'updated by trigger'
5127       WHERE f_int1 = new.f_int1;
5128 END|
5129 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5130 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5131 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5132         
5133 # check trigger-1 success:      1
5134 DROP TRIGGER trg_1;
5135 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5136 f_int2 = CAST(f_char1 AS SIGNED INT),
5137 f_charbig = 'just inserted'
5138    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5139 DELETE FROM t0_aux
5140 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5141 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5142 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5143 'just inserted' FROM t0_template
5144 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5145 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5146 BEGIN
5147 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5148 f_charbig = 'updated by trigger'
5149       WHERE f_int1 = new.f_int1;
5150 END|
5151 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5152 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5153 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5154         
5155 # check trigger-2 success:      1
5156 DROP TRIGGER trg_1;
5157 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5158 f_int2 = CAST(f_char1 AS SIGNED INT),
5159 f_charbig = 'just inserted'
5160    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5161 DELETE FROM t0_aux
5162 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5163 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5164 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5165 'just inserted' FROM t0_template
5166 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5167 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5168 BEGIN
5169 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5170 f_charbig = 'updated by trigger'
5171       WHERE f_int1 = new.f_int1;
5172 END|
5173 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5174 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5175         
5176 # check trigger-3 success:      1
5177 DROP TRIGGER trg_1;
5178 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5179 f_int2 = CAST(f_char1 AS SIGNED INT),
5180 f_charbig = 'just inserted'
5181    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5182 DELETE FROM t0_aux
5183 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5184 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5185 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5186 'just inserted' FROM t0_template
5187 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5188 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5189 BEGIN
5190 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5191 f_charbig = 'updated by trigger'
5192       WHERE f_int1 = - old.f_int1;
5193 END|
5194 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5195 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5196         
5197 # check trigger-4 success:      1
5198 DROP TRIGGER trg_1;
5199 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5200 f_int2 = CAST(f_char1 AS SIGNED INT),
5201 f_charbig = 'just inserted'
5202    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5203 DELETE FROM t0_aux
5204 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5205 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5206 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5207 'just inserted' FROM t0_template
5208 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5209 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5210 BEGIN
5211 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5212 f_charbig = 'updated by trigger'
5213       WHERE f_int1 = new.f_int1;
5214 END|
5215 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5216 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5217         
5218 # check trigger-5 success:      1
5219 DROP TRIGGER trg_1;
5220 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5221 f_int2 = CAST(f_char1 AS SIGNED INT),
5222 f_charbig = 'just inserted'
5223    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5224 DELETE FROM t0_aux
5225 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5226 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5227 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5228 'just inserted' FROM t0_template
5229 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5230 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5231 BEGIN
5232 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5233 f_charbig = 'updated by trigger'
5234       WHERE f_int1 = - old.f_int1;
5235 END|
5236 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5237 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5238         
5239 # check trigger-6 success:      1
5240 DROP TRIGGER trg_1;
5241 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5242 f_int2 = CAST(f_char1 AS SIGNED INT),
5243 f_charbig = 'just inserted'
5244    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5245 DELETE FROM t0_aux
5246 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5247 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5248 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5249 'just inserted' FROM t0_template
5250 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5251 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5252 BEGIN
5253 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5254 f_charbig = 'updated by trigger'
5255       WHERE f_int1 = - old.f_int1;
5256 END|
5257 DELETE FROM t0_aux
5258 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5259         
5260 # check trigger-7 success:      1
5261 DROP TRIGGER trg_1;
5262 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5263 f_int2 = CAST(f_char1 AS SIGNED INT),
5264 f_charbig = 'just inserted'
5265    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5266 DELETE FROM t0_aux
5267 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5268 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5269 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5270 'just inserted' FROM t0_template
5271 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5272 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5273 BEGIN
5274 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5275 f_charbig = 'updated by trigger'
5276       WHERE f_int1 = - old.f_int1;
5277 END|
5278 DELETE FROM t0_aux
5279 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5280         
5281 # check trigger-8 success:      1
5282 DROP TRIGGER trg_1;
5283 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5284 f_int2 = CAST(f_char1 AS SIGNED INT),
5285 f_charbig = 'just inserted'
5286    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5287 DELETE FROM t0_aux
5288 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5289 DELETE FROM t1
5290 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5291 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5292 BEGIN
5293 SET new.f_int1 = old.f_int1 + @max_row,
5294 new.f_int2 = old.f_int2 - @max_row,
5295 new.f_charbig = '####updated per update trigger####';
5296 END|
5297 UPDATE t1
5298 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5299 f_charbig = '####updated per update statement itself####';
5300         
5301 # check trigger-9 success:      1
5302 DROP TRIGGER trg_2;
5303 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5304 f_int2 = CAST(f_char1 AS SIGNED INT),
5305 f_charbig = CONCAT('===',f_char1,'===');
5306 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5307 BEGIN
5308 SET new.f_int1 = new.f_int1 + @max_row,
5309 new.f_int2 = new.f_int2 - @max_row,
5310 new.f_charbig = '####updated per update trigger####';
5311 END|
5312 UPDATE t1
5313 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5314 f_charbig = '####updated per update statement itself####';
5315         
5316 # check trigger-10 success:     1
5317 DROP TRIGGER trg_2;
5318 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5319 f_int2 = CAST(f_char1 AS SIGNED INT),
5320 f_charbig = CONCAT('===',f_char1,'===');
5321 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5322 BEGIN
5323 SET new.f_int1 = @my_max1 + @counter,
5324 new.f_int2 = @my_min2 - @counter,
5325 new.f_charbig = '####updated per insert trigger####';
5326 SET @counter = @counter + 1;
5327 END|
5328 SET @counter = 1;
5329 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5330 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5331 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5332 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5333 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5334 ORDER BY f_int1;
5335 DROP TRIGGER trg_3;
5336         
5337 # check trigger-11 success:     1
5338 DELETE FROM t1
5339 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5340 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5341 AND f_charbig = '####updated per insert trigger####';
5342 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5343 BEGIN
5344 SET new.f_int1 = @my_max1 + @counter,
5345 new.f_int2 = @my_min2 - @counter,
5346 new.f_charbig = '####updated per insert trigger####';
5347 SET @counter = @counter + 1;
5348 END|
5349 SET @counter = 1;
5350 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5351 INSERT INTO t1 (f_char1, f_char2, f_charbig)
5352 SELECT CAST(f_int1 AS CHAR),
5353 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5354 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5355 ORDER BY f_int1;
5356 DROP TRIGGER trg_3;
5357         
5358 # check trigger-12 success:     1
5359 DELETE FROM t1
5360 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5361 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5362 AND f_charbig = '####updated per insert trigger####';
5363 ANALYZE  TABLE t1;
5364 Table   Op      Msg_type        Msg_text
5365 test.t1 analyze status  OK
5366 CHECK    TABLE t1 EXTENDED;
5367 Table   Op      Msg_type        Msg_text
5368 test.t1 check   status  OK
5369 CHECKSUM TABLE t1 EXTENDED;
5370 Table   Checksum
5371 test.t1 <some_value>
5372 OPTIMIZE TABLE t1;
5373 Table   Op      Msg_type        Msg_text
5374 test.t1 optimize        status  OK
5375 # check layout success:    1
5376 REPAIR   TABLE t1 EXTENDED;
5377 Table   Op      Msg_type        Msg_text
5378 test.t1 repair  status  OK
5379 # check layout success:    1
5380 TRUNCATE t1;
5381         
5382 # check TRUNCATE success:       1
5383 # check layout success:    1
5384 # End usability test (inc/partition_check.inc)
5385 DROP TABLE t1;
5386 CREATE TABLE t1 (
5387 f_int1 INTEGER,
5388 f_int2 INTEGER,
5389 f_char1 CHAR(20),
5390 f_char2 CHAR(20),
5391 f_charbig VARCHAR(1000)
5394 PARTITION BY RANGE(f_int1)
5395 (PARTITION parta VALUES LESS THAN (0),
5396 PARTITION part_1 VALUES LESS THAN (5),
5397 PARTITION part_2 VALUES LESS THAN (10),
5398 PARTITION part_3 VALUES LESS THAN (10 + 5),
5399 PARTITION part_4 VALUES LESS THAN (20),
5400 PARTITION part_5 VALUES LESS THAN (2147483646));
5401 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5402 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5403 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5404 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
5405 Table   Op      Msg_type        Msg_text
5406 test.t1 analyze status  OK
5407 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5408 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5409 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5410 # Start usability test (inc/partition_check.inc)
5411 create_command
5412 SHOW CREATE TABLE t1;
5413 Table   Create Table
5414 t1      CREATE TABLE `t1` (
5415   `f_int1` int(11) DEFAULT NULL,
5416   `f_int2` int(11) DEFAULT NULL,
5417   `f_char1` char(20) DEFAULT NULL,
5418   `f_char2` char(20) DEFAULT NULL,
5419   `f_charbig` varchar(1000) DEFAULT NULL
5420 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
5421 /*!50100 PARTITION BY RANGE (f_int1)
5422 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
5423  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
5424  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
5425  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
5426  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
5427  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
5429 unified filelist
5430 t1#P#part_1.MYD
5431 t1#P#part_1.MYI
5432 t1#P#part_2.MYD
5433 t1#P#part_2.MYI
5434 t1#P#part_3.MYD
5435 t1#P#part_3.MYI
5436 t1#P#part_4.MYD
5437 t1#P#part_4.MYI
5438 t1#P#part_5.MYD
5439 t1#P#part_5.MYI
5440 t1#P#parta.MYD
5441 t1#P#parta.MYI
5442 t1.frm
5443 t1.par
5445 # check prerequisites-1 success:    1
5446 # check COUNT(*) success:    1
5447 # check MIN/MAX(f_int1) success:    1
5448 # check MIN/MAX(f_int2) success:    1
5449 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5450 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5451 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5452 WHERE f_int1 IN (2,3);
5453 # check prerequisites-3 success:    1
5454 DELETE FROM t1 WHERE f_charbig = 'delete me';
5455 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5456 # check read via f_int1 success: 1
5457 # check read via f_int2 success: 1
5458         
5459 # check multiple-1 success:     1
5460 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5461         
5462 # check multiple-2 success:     1
5463 INSERT INTO t1 SELECT * FROM t0_template
5464 WHERE MOD(f_int1,3) = 0;
5465         
5466 # check multiple-3 success:     1
5467 UPDATE t1 SET f_int1 = f_int1 + @max_row
5468 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5469 AND @max_row_div2 + @max_row_div4;
5470         
5471 # check multiple-4 success:     1
5472 DELETE FROM t1
5473 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5474 AND @max_row_div2 + @max_row_div4 + @max_row;
5475         
5476 # check multiple-5 success:     1
5477 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5478 INSERT INTO t1
5479 SET f_int1 = @cur_value , f_int2 = @cur_value,
5480 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5481 f_charbig = '#SINGLE#';
5482         
5483 # check single-1 success:       1
5484 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5485 INSERT INTO t1
5486 SET f_int1 = @cur_value , f_int2 = @cur_value,
5487 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5488 f_charbig = '#SINGLE#';
5489         
5490 # check single-2 success:       1
5491 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5492 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5493 UPDATE t1 SET f_int1 = @cur_value2
5494 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5495         
5496 # check single-3 success:       1
5497 SET @cur_value1= -1;
5498 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5499 UPDATE t1 SET f_int1 = @cur_value1
5500 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5501         
5502 # check single-4 success:       1
5503 SELECT MAX(f_int1) INTO @cur_value FROM t1;
5504 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5505         
5506 # check single-5 success:       1
5507 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5508         
5509 # check single-6 success:       1
5510 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5511 ERROR HY000: Table has no partition for value 2147483647
5512 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5513 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5514 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5515 f_charbig = '#NULL#';
5516 INSERT INTO t1
5517 SET f_int1 = NULL , f_int2 = -@max_row,
5518 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5519 f_charbig = '#NULL#';
5520 # check null success:    1
5521         
5522 # check null-1 success:         1
5523 UPDATE t1 SET f_int1 = -@max_row
5524 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5525 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5526         
5527 # check null-2 success:         1
5528 UPDATE t1 SET f_int1 = NULL
5529 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5530 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5531         
5532 # check null-3 success:         1
5533 DELETE FROM t1
5534 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5535 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5536         
5537 # check null-4 success:         1
5538 DELETE FROM t1
5539 WHERE f_int1 = 0 AND f_int2 = 0
5540 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5541 AND f_charbig = '#NULL#';
5542 SET AUTOCOMMIT= 0;
5543 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5544 SELECT f_int1, f_int1, '', '', 'was inserted'
5545 FROM t0_template source_tab
5546 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5547         
5548 # check transactions-1 success:         1
5549 COMMIT WORK;
5550         
5551 # check transactions-2 success:         1
5552 ROLLBACK WORK;
5553         
5554 # check transactions-3 success:         1
5555 DELETE FROM t1 WHERE f_charbig = 'was inserted';
5556 COMMIT WORK;
5557 ROLLBACK WORK;
5558         
5559 # check transactions-4 success:         1
5560 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5561 SELECT f_int1, f_int1, '', '', 'was inserted'
5562 FROM t0_template source_tab
5563 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5564         
5565 # check transactions-5 success:         1
5566 ROLLBACK WORK;
5567 Warnings:
5568 Warning 1196    Some non-transactional changed tables couldn't be rolled back
5569         
5570 # check transactions-6 success:         1
5571 # INFO: Storage engine used for t1 seems to be not transactional.
5572 COMMIT;
5573         
5574 # check transactions-7 success:         1
5575 DELETE FROM t1 WHERE f_charbig = 'was inserted';
5576 COMMIT WORK;
5577 SET @@session.sql_mode = 'traditional';
5578 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5579 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5580 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5581 '', '', 'was inserted' FROM t0_template
5582 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5583 ERROR 22012: Division by 0
5584 COMMIT;
5585         
5586 # check transactions-8 success:         1
5587 # INFO: Storage engine used for t1 seems to be unable to revert
5588 #       changes made by the failing statement.
5589 SET @@session.sql_mode = '';
5590 SET AUTOCOMMIT= 1;
5591 DELETE FROM t1 WHERE f_charbig = 'was inserted';
5592 COMMIT WORK;
5593 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5594         
5595 # check special-1 success:      1
5596 UPDATE t1 SET f_charbig = '';
5597         
5598 # check special-2 success:      1
5599 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5600 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5601 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5602 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5603 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5604 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5605 'just inserted' FROM t0_template
5606 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5607 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5608 BEGIN
5609 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5610 f_charbig = 'updated by trigger'
5611       WHERE f_int1 = new.f_int1;
5612 END|
5613 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5614 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5615 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5616         
5617 # check trigger-1 success:      1
5618 DROP TRIGGER trg_1;
5619 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5620 f_int2 = CAST(f_char1 AS SIGNED INT),
5621 f_charbig = 'just inserted'
5622    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5623 DELETE FROM t0_aux
5624 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5625 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5626 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5627 'just inserted' FROM t0_template
5628 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5629 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5630 BEGIN
5631 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5632 f_charbig = 'updated by trigger'
5633       WHERE f_int1 = new.f_int1;
5634 END|
5635 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5636 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5637 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5638         
5639 # check trigger-2 success:      1
5640 DROP TRIGGER trg_1;
5641 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5642 f_int2 = CAST(f_char1 AS SIGNED INT),
5643 f_charbig = 'just inserted'
5644    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5645 DELETE FROM t0_aux
5646 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5647 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5648 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5649 'just inserted' FROM t0_template
5650 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5651 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5652 BEGIN
5653 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5654 f_charbig = 'updated by trigger'
5655       WHERE f_int1 = new.f_int1;
5656 END|
5657 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5658 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5659         
5660 # check trigger-3 success:      1
5661 DROP TRIGGER trg_1;
5662 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5663 f_int2 = CAST(f_char1 AS SIGNED INT),
5664 f_charbig = 'just inserted'
5665    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5666 DELETE FROM t0_aux
5667 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5668 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5669 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5670 'just inserted' FROM t0_template
5671 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5672 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5673 BEGIN
5674 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5675 f_charbig = 'updated by trigger'
5676       WHERE f_int1 = - old.f_int1;
5677 END|
5678 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5679 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5680         
5681 # check trigger-4 success:      1
5682 DROP TRIGGER trg_1;
5683 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5684 f_int2 = CAST(f_char1 AS SIGNED INT),
5685 f_charbig = 'just inserted'
5686    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5687 DELETE FROM t0_aux
5688 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5689 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5690 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5691 'just inserted' FROM t0_template
5692 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5693 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5694 BEGIN
5695 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5696 f_charbig = 'updated by trigger'
5697       WHERE f_int1 = new.f_int1;
5698 END|
5699 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5700 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5701         
5702 # check trigger-5 success:      1
5703 DROP TRIGGER trg_1;
5704 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5705 f_int2 = CAST(f_char1 AS SIGNED INT),
5706 f_charbig = 'just inserted'
5707    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5708 DELETE FROM t0_aux
5709 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5710 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5711 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5712 'just inserted' FROM t0_template
5713 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5714 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5715 BEGIN
5716 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5717 f_charbig = 'updated by trigger'
5718       WHERE f_int1 = - old.f_int1;
5719 END|
5720 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
5721 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5722         
5723 # check trigger-6 success:      1
5724 DROP TRIGGER trg_1;
5725 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5726 f_int2 = CAST(f_char1 AS SIGNED INT),
5727 f_charbig = 'just inserted'
5728    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5729 DELETE FROM t0_aux
5730 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5731 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5732 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5733 'just inserted' FROM t0_template
5734 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5735 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5736 BEGIN
5737 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5738 f_charbig = 'updated by trigger'
5739       WHERE f_int1 = - old.f_int1;
5740 END|
5741 DELETE FROM t0_aux
5742 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5743         
5744 # check trigger-7 success:      1
5745 DROP TRIGGER trg_1;
5746 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5747 f_int2 = CAST(f_char1 AS SIGNED INT),
5748 f_charbig = 'just inserted'
5749    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5750 DELETE FROM t0_aux
5751 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5752 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5753 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5754 'just inserted' FROM t0_template
5755 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5756 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5757 BEGIN
5758 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5759 f_charbig = 'updated by trigger'
5760       WHERE f_int1 = - old.f_int1;
5761 END|
5762 DELETE FROM t0_aux
5763 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5764         
5765 # check trigger-8 success:      1
5766 DROP TRIGGER trg_1;
5767 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5768 f_int2 = CAST(f_char1 AS SIGNED INT),
5769 f_charbig = 'just inserted'
5770    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5771 DELETE FROM t0_aux
5772 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5773 DELETE FROM t1
5774 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5775 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5776 BEGIN
5777 SET new.f_int1 = old.f_int1 + @max_row,
5778 new.f_int2 = old.f_int2 - @max_row,
5779 new.f_charbig = '####updated per update trigger####';
5780 END|
5781 UPDATE t1
5782 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5783 f_charbig = '####updated per update statement itself####';
5784         
5785 # check trigger-9 success:      1
5786 DROP TRIGGER trg_2;
5787 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5788 f_int2 = CAST(f_char1 AS SIGNED INT),
5789 f_charbig = CONCAT('===',f_char1,'===');
5790 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5791 BEGIN
5792 SET new.f_int1 = new.f_int1 + @max_row,
5793 new.f_int2 = new.f_int2 - @max_row,
5794 new.f_charbig = '####updated per update trigger####';
5795 END|
5796 UPDATE t1
5797 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5798 f_charbig = '####updated per update statement itself####';
5799         
5800 # check trigger-10 success:     1
5801 DROP TRIGGER trg_2;
5802 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5803 f_int2 = CAST(f_char1 AS SIGNED INT),
5804 f_charbig = CONCAT('===',f_char1,'===');
5805 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5806 BEGIN
5807 SET new.f_int1 = @my_max1 + @counter,
5808 new.f_int2 = @my_min2 - @counter,
5809 new.f_charbig = '####updated per insert trigger####';
5810 SET @counter = @counter + 1;
5811 END|
5812 SET @counter = 1;
5813 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5814 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5815 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5816 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5817 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5818 ORDER BY f_int1;
5819 DROP TRIGGER trg_3;
5820         
5821 # check trigger-11 success:     1
5822 DELETE FROM t1
5823 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5824 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5825 AND f_charbig = '####updated per insert trigger####';
5826 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5827 BEGIN
5828 SET new.f_int1 = @my_max1 + @counter,
5829 new.f_int2 = @my_min2 - @counter,
5830 new.f_charbig = '####updated per insert trigger####';
5831 SET @counter = @counter + 1;
5832 END|
5833 SET @counter = 1;
5834 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5835 INSERT INTO t1 (f_char1, f_char2, f_charbig)
5836 SELECT CAST(f_int1 AS CHAR),
5837 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5838 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5839 ORDER BY f_int1;
5840 DROP TRIGGER trg_3;
5841         
5842 # check trigger-12 success:     1
5843 DELETE FROM t1
5844 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5845 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5846 AND f_charbig = '####updated per insert trigger####';
5847 ANALYZE  TABLE t1;
5848 Table   Op      Msg_type        Msg_text
5849 test.t1 analyze status  OK
5850 CHECK    TABLE t1 EXTENDED;
5851 Table   Op      Msg_type        Msg_text
5852 test.t1 check   status  OK
5853 CHECKSUM TABLE t1 EXTENDED;
5854 Table   Checksum
5855 test.t1 <some_value>
5856 OPTIMIZE TABLE t1;
5857 Table   Op      Msg_type        Msg_text
5858 test.t1 optimize        status  OK
5859 # check layout success:    1
5860 REPAIR   TABLE t1 EXTENDED;
5861 Table   Op      Msg_type        Msg_text
5862 test.t1 repair  status  OK
5863 # check layout success:    1
5864 TRUNCATE t1;
5865         
5866 # check TRUNCATE success:       1
5867 # check layout success:    1
5868 # End usability test (inc/partition_check.inc)
5869 DROP TABLE t1;
5870 CREATE TABLE t1 (
5871 f_int1 INTEGER,
5872 f_int2 INTEGER,
5873 f_char1 CHAR(20),
5874 f_char2 CHAR(20),
5875 f_charbig VARCHAR(1000)
5878 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
5879 (PARTITION part_1 VALUES LESS THAN (0),
5880 PARTITION part_2 VALUES LESS THAN (5),
5881 PARTITION part_3 VALUES LESS THAN (10),
5882 PARTITION part_4 VALUES LESS THAN (2147483646));
5883 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5884 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5885 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5886 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
5887 Table   Op      Msg_type        Msg_text
5888 test.t1 analyze status  OK
5889 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5890 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5891 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5892 # Start usability test (inc/partition_check.inc)
5893 create_command
5894 SHOW CREATE TABLE t1;
5895 Table   Create Table
5896 t1      CREATE TABLE `t1` (
5897   `f_int1` int(11) DEFAULT NULL,
5898   `f_int2` int(11) DEFAULT NULL,
5899   `f_char1` char(20) DEFAULT NULL,
5900   `f_char2` char(20) DEFAULT NULL,
5901   `f_charbig` varchar(1000) DEFAULT NULL
5902 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
5903 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
5904 SUBPARTITION BY HASH (f_int1)
5905 SUBPARTITIONS 2
5906 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
5907  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
5908  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
5909  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
5911 unified filelist
5912 t1#P#part_1#SP#part_1sp0.MYD
5913 t1#P#part_1#SP#part_1sp0.MYI
5914 t1#P#part_1#SP#part_1sp1.MYD
5915 t1#P#part_1#SP#part_1sp1.MYI
5916 t1#P#part_2#SP#part_2sp0.MYD
5917 t1#P#part_2#SP#part_2sp0.MYI
5918 t1#P#part_2#SP#part_2sp1.MYD
5919 t1#P#part_2#SP#part_2sp1.MYI
5920 t1#P#part_3#SP#part_3sp0.MYD
5921 t1#P#part_3#SP#part_3sp0.MYI
5922 t1#P#part_3#SP#part_3sp1.MYD
5923 t1#P#part_3#SP#part_3sp1.MYI
5924 t1#P#part_4#SP#part_4sp0.MYD
5925 t1#P#part_4#SP#part_4sp0.MYI
5926 t1#P#part_4#SP#part_4sp1.MYD
5927 t1#P#part_4#SP#part_4sp1.MYI
5928 t1.frm
5929 t1.par
5931 # check prerequisites-1 success:    1
5932 # check COUNT(*) success:    1
5933 # check MIN/MAX(f_int1) success:    1
5934 # check MIN/MAX(f_int2) success:    1
5935 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5936 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5937 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5938 WHERE f_int1 IN (2,3);
5939 # check prerequisites-3 success:    1
5940 DELETE FROM t1 WHERE f_charbig = 'delete me';
5941 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5942 # check read via f_int1 success: 1
5943 # check read via f_int2 success: 1
5944         
5945 # check multiple-1 success:     1
5946 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5947         
5948 # check multiple-2 success:     1
5949 INSERT INTO t1 SELECT * FROM t0_template
5950 WHERE MOD(f_int1,3) = 0;
5951         
5952 # check multiple-3 success:     1
5953 UPDATE t1 SET f_int1 = f_int1 + @max_row
5954 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5955 AND @max_row_div2 + @max_row_div4;
5956         
5957 # check multiple-4 success:     1
5958 DELETE FROM t1
5959 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5960 AND @max_row_div2 + @max_row_div4 + @max_row;
5961         
5962 # check multiple-5 success:     1
5963 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5964 INSERT INTO t1
5965 SET f_int1 = @cur_value , f_int2 = @cur_value,
5966 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5967 f_charbig = '#SINGLE#';
5968         
5969 # check single-1 success:       1
5970 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5971 INSERT INTO t1
5972 SET f_int1 = @cur_value , f_int2 = @cur_value,
5973 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5974 f_charbig = '#SINGLE#';
5975         
5976 # check single-2 success:       1
5977 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5978 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5979 UPDATE t1 SET f_int1 = @cur_value2
5980 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5981         
5982 # check single-3 success:       1
5983 SET @cur_value1= -1;
5984 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5985 UPDATE t1 SET f_int1 = @cur_value1
5986 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5987         
5988 # check single-4 success:       1
5989 SELECT MAX(f_int1) INTO @cur_value FROM t1;
5990 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5991         
5992 # check single-5 success:       1
5993 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5994         
5995 # check single-6 success:       1
5996 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5997         
5998 # check single-7 success:       1
5999 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6000 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6001 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6002 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6003 f_charbig = '#NULL#';
6004 INSERT INTO t1
6005 SET f_int1 = NULL , f_int2 = -@max_row,
6006 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6007 f_charbig = '#NULL#';
6008 # check null success:    1
6009         
6010 # check null-1 success:         1
6011 UPDATE t1 SET f_int1 = -@max_row
6012 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6013 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6014         
6015 # check null-2 success:         1
6016 UPDATE t1 SET f_int1 = NULL
6017 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6018 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6019         
6020 # check null-3 success:         1
6021 DELETE FROM t1
6022 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6023 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6024         
6025 # check null-4 success:         1
6026 DELETE FROM t1
6027 WHERE f_int1 = 0 AND f_int2 = 0
6028 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6029 AND f_charbig = '#NULL#';
6030 SET AUTOCOMMIT= 0;
6031 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6032 SELECT f_int1, f_int1, '', '', 'was inserted'
6033 FROM t0_template source_tab
6034 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6035         
6036 # check transactions-1 success:         1
6037 COMMIT WORK;
6038         
6039 # check transactions-2 success:         1
6040 ROLLBACK WORK;
6041         
6042 # check transactions-3 success:         1
6043 DELETE FROM t1 WHERE f_charbig = 'was inserted';
6044 COMMIT WORK;
6045 ROLLBACK WORK;
6046         
6047 # check transactions-4 success:         1
6048 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6049 SELECT f_int1, f_int1, '', '', 'was inserted'
6050 FROM t0_template source_tab
6051 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6052         
6053 # check transactions-5 success:         1
6054 ROLLBACK WORK;
6055 Warnings:
6056 Warning 1196    Some non-transactional changed tables couldn't be rolled back
6057         
6058 # check transactions-6 success:         1
6059 # INFO: Storage engine used for t1 seems to be not transactional.
6060 COMMIT;
6061         
6062 # check transactions-7 success:         1
6063 DELETE FROM t1 WHERE f_charbig = 'was inserted';
6064 COMMIT WORK;
6065 SET @@session.sql_mode = 'traditional';
6066 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6067 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6068 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6069 '', '', 'was inserted' FROM t0_template
6070 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6071 ERROR 22012: Division by 0
6072 COMMIT;
6073         
6074 # check transactions-8 success:         1
6075 # INFO: Storage engine used for t1 seems to be unable to revert
6076 #       changes made by the failing statement.
6077 SET @@session.sql_mode = '';
6078 SET AUTOCOMMIT= 1;
6079 DELETE FROM t1 WHERE f_charbig = 'was inserted';
6080 COMMIT WORK;
6081 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6082         
6083 # check special-1 success:      1
6084 UPDATE t1 SET f_charbig = '';
6085         
6086 # check special-2 success:      1
6087 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6088 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6089 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6090 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6091 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6092 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6093 'just inserted' FROM t0_template
6094 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6095 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6096 BEGIN
6097 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6098 f_charbig = 'updated by trigger'
6099       WHERE f_int1 = new.f_int1;
6100 END|
6101 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6102 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6103 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6104         
6105 # check trigger-1 success:      1
6106 DROP TRIGGER trg_1;
6107 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6108 f_int2 = CAST(f_char1 AS SIGNED INT),
6109 f_charbig = 'just inserted'
6110    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6111 DELETE FROM t0_aux
6112 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6113 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6114 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6115 'just inserted' FROM t0_template
6116 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6117 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6118 BEGIN
6119 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6120 f_charbig = 'updated by trigger'
6121       WHERE f_int1 = new.f_int1;
6122 END|
6123 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6124 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6125 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6126         
6127 # check trigger-2 success:      1
6128 DROP TRIGGER trg_1;
6129 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6130 f_int2 = CAST(f_char1 AS SIGNED INT),
6131 f_charbig = 'just inserted'
6132    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6133 DELETE FROM t0_aux
6134 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6135 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6136 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6137 'just inserted' FROM t0_template
6138 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6139 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6140 BEGIN
6141 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6142 f_charbig = 'updated by trigger'
6143       WHERE f_int1 = new.f_int1;
6144 END|
6145 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6146 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6147         
6148 # check trigger-3 success:      1
6149 DROP TRIGGER trg_1;
6150 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6151 f_int2 = CAST(f_char1 AS SIGNED INT),
6152 f_charbig = 'just inserted'
6153    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6154 DELETE FROM t0_aux
6155 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6156 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6157 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6158 'just inserted' FROM t0_template
6159 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6160 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6161 BEGIN
6162 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6163 f_charbig = 'updated by trigger'
6164       WHERE f_int1 = - old.f_int1;
6165 END|
6166 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6167 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6168         
6169 # check trigger-4 success:      1
6170 DROP TRIGGER trg_1;
6171 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6172 f_int2 = CAST(f_char1 AS SIGNED INT),
6173 f_charbig = 'just inserted'
6174    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6175 DELETE FROM t0_aux
6176 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6177 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6178 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6179 'just inserted' FROM t0_template
6180 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6181 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6182 BEGIN
6183 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6184 f_charbig = 'updated by trigger'
6185       WHERE f_int1 = new.f_int1;
6186 END|
6187 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6188 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6189         
6190 # check trigger-5 success:      1
6191 DROP TRIGGER trg_1;
6192 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6193 f_int2 = CAST(f_char1 AS SIGNED INT),
6194 f_charbig = 'just inserted'
6195    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6196 DELETE FROM t0_aux
6197 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6198 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6199 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6200 'just inserted' FROM t0_template
6201 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6202 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6203 BEGIN
6204 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6205 f_charbig = 'updated by trigger'
6206       WHERE f_int1 = - old.f_int1;
6207 END|
6208 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6209 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6210         
6211 # check trigger-6 success:      1
6212 DROP TRIGGER trg_1;
6213 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6214 f_int2 = CAST(f_char1 AS SIGNED INT),
6215 f_charbig = 'just inserted'
6216    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6217 DELETE FROM t0_aux
6218 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6219 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6220 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6221 'just inserted' FROM t0_template
6222 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6223 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6224 BEGIN
6225 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6226 f_charbig = 'updated by trigger'
6227       WHERE f_int1 = - old.f_int1;
6228 END|
6229 DELETE FROM t0_aux
6230 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6231         
6232 # check trigger-7 success:      1
6233 DROP TRIGGER trg_1;
6234 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6235 f_int2 = CAST(f_char1 AS SIGNED INT),
6236 f_charbig = 'just inserted'
6237    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6238 DELETE FROM t0_aux
6239 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6240 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6241 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6242 'just inserted' FROM t0_template
6243 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6244 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6245 BEGIN
6246 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6247 f_charbig = 'updated by trigger'
6248       WHERE f_int1 = - old.f_int1;
6249 END|
6250 DELETE FROM t0_aux
6251 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6252         
6253 # check trigger-8 success:      1
6254 DROP TRIGGER trg_1;
6255 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6256 f_int2 = CAST(f_char1 AS SIGNED INT),
6257 f_charbig = 'just inserted'
6258    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6259 DELETE FROM t0_aux
6260 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6261 DELETE FROM t1
6262 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6263 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6264 BEGIN
6265 SET new.f_int1 = old.f_int1 + @max_row,
6266 new.f_int2 = old.f_int2 - @max_row,
6267 new.f_charbig = '####updated per update trigger####';
6268 END|
6269 UPDATE t1
6270 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6271 f_charbig = '####updated per update statement itself####';
6272         
6273 # check trigger-9 success:      1
6274 DROP TRIGGER trg_2;
6275 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6276 f_int2 = CAST(f_char1 AS SIGNED INT),
6277 f_charbig = CONCAT('===',f_char1,'===');
6278 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6279 BEGIN
6280 SET new.f_int1 = new.f_int1 + @max_row,
6281 new.f_int2 = new.f_int2 - @max_row,
6282 new.f_charbig = '####updated per update trigger####';
6283 END|
6284 UPDATE t1
6285 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6286 f_charbig = '####updated per update statement itself####';
6287         
6288 # check trigger-10 success:     1
6289 DROP TRIGGER trg_2;
6290 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6291 f_int2 = CAST(f_char1 AS SIGNED INT),
6292 f_charbig = CONCAT('===',f_char1,'===');
6293 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6294 BEGIN
6295 SET new.f_int1 = @my_max1 + @counter,
6296 new.f_int2 = @my_min2 - @counter,
6297 new.f_charbig = '####updated per insert trigger####';
6298 SET @counter = @counter + 1;
6299 END|
6300 SET @counter = 1;
6301 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6302 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6303 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6304 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6305 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6306 ORDER BY f_int1;
6307 DROP TRIGGER trg_3;
6308         
6309 # check trigger-11 success:     1
6310 DELETE FROM t1
6311 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6312 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6313 AND f_charbig = '####updated per insert trigger####';
6314 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6315 BEGIN
6316 SET new.f_int1 = @my_max1 + @counter,
6317 new.f_int2 = @my_min2 - @counter,
6318 new.f_charbig = '####updated per insert trigger####';
6319 SET @counter = @counter + 1;
6320 END|
6321 SET @counter = 1;
6322 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6323 INSERT INTO t1 (f_char1, f_char2, f_charbig)
6324 SELECT CAST(f_int1 AS CHAR),
6325 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6326 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6327 ORDER BY f_int1;
6328 DROP TRIGGER trg_3;
6329         
6330 # check trigger-12 success:     1
6331 DELETE FROM t1
6332 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6333 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6334 AND f_charbig = '####updated per insert trigger####';
6335 ANALYZE  TABLE t1;
6336 Table   Op      Msg_type        Msg_text
6337 test.t1 analyze status  OK
6338 CHECK    TABLE t1 EXTENDED;
6339 Table   Op      Msg_type        Msg_text
6340 test.t1 check   status  OK
6341 CHECKSUM TABLE t1 EXTENDED;
6342 Table   Checksum
6343 test.t1 <some_value>
6344 OPTIMIZE TABLE t1;
6345 Table   Op      Msg_type        Msg_text
6346 test.t1 optimize        status  OK
6347 # check layout success:    1
6348 REPAIR   TABLE t1 EXTENDED;
6349 Table   Op      Msg_type        Msg_text
6350 test.t1 repair  status  OK
6351 # check layout success:    1
6352 TRUNCATE t1;
6353         
6354 # check TRUNCATE success:       1
6355 # check layout success:    1
6356 # End usability test (inc/partition_check.inc)
6357 DROP TABLE t1;
6358 CREATE TABLE t1 (
6359 f_int1 INTEGER,
6360 f_int2 INTEGER,
6361 f_char1 CHAR(20),
6362 f_char2 CHAR(20),
6363 f_charbig VARCHAR(1000)
6366 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
6367 (PARTITION part_1 VALUES LESS THAN (0)
6368 (SUBPARTITION subpart11, SUBPARTITION subpart12),
6369 PARTITION part_2 VALUES LESS THAN (5)
6370 (SUBPARTITION subpart21, SUBPARTITION subpart22),
6371 PARTITION part_3 VALUES LESS THAN (10)
6372 (SUBPARTITION subpart31, SUBPARTITION subpart32),
6373 PARTITION part_4 VALUES LESS THAN (2147483646)
6374 (SUBPARTITION subpart41, SUBPARTITION subpart42));
6375 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6376 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6377 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6378 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
6379 Table   Op      Msg_type        Msg_text
6380 test.t1 analyze status  OK
6381 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6382 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6383 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6384 # Start usability test (inc/partition_check.inc)
6385 create_command
6386 SHOW CREATE TABLE t1;
6387 Table   Create Table
6388 t1      CREATE TABLE `t1` (
6389   `f_int1` int(11) DEFAULT NULL,
6390   `f_int2` int(11) DEFAULT NULL,
6391   `f_char1` char(20) DEFAULT NULL,
6392   `f_char2` char(20) DEFAULT NULL,
6393   `f_charbig` varchar(1000) DEFAULT NULL
6394 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
6395 /*!50100 PARTITION BY RANGE (f_int1)
6396 SUBPARTITION BY KEY (f_int1)
6397 (PARTITION part_1 VALUES LESS THAN (0)
6398  (SUBPARTITION subpart11 ENGINE = MyISAM,
6399   SUBPARTITION subpart12 ENGINE = MyISAM),
6400  PARTITION part_2 VALUES LESS THAN (5)
6401  (SUBPARTITION subpart21 ENGINE = MyISAM,
6402   SUBPARTITION subpart22 ENGINE = MyISAM),
6403  PARTITION part_3 VALUES LESS THAN (10)
6404  (SUBPARTITION subpart31 ENGINE = MyISAM,
6405   SUBPARTITION subpart32 ENGINE = MyISAM),
6406  PARTITION part_4 VALUES LESS THAN (2147483646)
6407  (SUBPARTITION subpart41 ENGINE = MyISAM,
6408   SUBPARTITION subpart42 ENGINE = MyISAM)) */
6410 unified filelist
6411 t1#P#part_1#SP#subpart11.MYD
6412 t1#P#part_1#SP#subpart11.MYI
6413 t1#P#part_1#SP#subpart12.MYD
6414 t1#P#part_1#SP#subpart12.MYI
6415 t1#P#part_2#SP#subpart21.MYD
6416 t1#P#part_2#SP#subpart21.MYI
6417 t1#P#part_2#SP#subpart22.MYD
6418 t1#P#part_2#SP#subpart22.MYI
6419 t1#P#part_3#SP#subpart31.MYD
6420 t1#P#part_3#SP#subpart31.MYI
6421 t1#P#part_3#SP#subpart32.MYD
6422 t1#P#part_3#SP#subpart32.MYI
6423 t1#P#part_4#SP#subpart41.MYD
6424 t1#P#part_4#SP#subpart41.MYI
6425 t1#P#part_4#SP#subpart42.MYD
6426 t1#P#part_4#SP#subpart42.MYI
6427 t1.frm
6428 t1.par
6430 # check prerequisites-1 success:    1
6431 # check COUNT(*) success:    1
6432 # check MIN/MAX(f_int1) success:    1
6433 # check MIN/MAX(f_int2) success:    1
6434 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6435 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6436 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6437 WHERE f_int1 IN (2,3);
6438 # check prerequisites-3 success:    1
6439 DELETE FROM t1 WHERE f_charbig = 'delete me';
6440 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6441 # check read via f_int1 success: 1
6442 # check read via f_int2 success: 1
6443         
6444 # check multiple-1 success:     1
6445 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6446         
6447 # check multiple-2 success:     1
6448 INSERT INTO t1 SELECT * FROM t0_template
6449 WHERE MOD(f_int1,3) = 0;
6450         
6451 # check multiple-3 success:     1
6452 UPDATE t1 SET f_int1 = f_int1 + @max_row
6453 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6454 AND @max_row_div2 + @max_row_div4;
6455         
6456 # check multiple-4 success:     1
6457 DELETE FROM t1
6458 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6459 AND @max_row_div2 + @max_row_div4 + @max_row;
6460         
6461 # check multiple-5 success:     1
6462 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6463 INSERT INTO t1
6464 SET f_int1 = @cur_value , f_int2 = @cur_value,
6465 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6466 f_charbig = '#SINGLE#';
6467         
6468 # check single-1 success:       1
6469 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6470 INSERT INTO t1
6471 SET f_int1 = @cur_value , f_int2 = @cur_value,
6472 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6473 f_charbig = '#SINGLE#';
6474         
6475 # check single-2 success:       1
6476 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6477 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6478 UPDATE t1 SET f_int1 = @cur_value2
6479 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6480         
6481 # check single-3 success:       1
6482 SET @cur_value1= -1;
6483 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6484 UPDATE t1 SET f_int1 = @cur_value1
6485 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6486         
6487 # check single-4 success:       1
6488 SELECT MAX(f_int1) INTO @cur_value FROM t1;
6489 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6490         
6491 # check single-5 success:       1
6492 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6493         
6494 # check single-6 success:       1
6495 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6496 ERROR HY000: Table has no partition for value 2147483647
6497 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6498 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6499 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6500 f_charbig = '#NULL#';
6501 INSERT INTO t1
6502 SET f_int1 = NULL , f_int2 = -@max_row,
6503 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6504 f_charbig = '#NULL#';
6505 # check null success:    1
6506         
6507 # check null-1 success:         1
6508 UPDATE t1 SET f_int1 = -@max_row
6509 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6510 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6511         
6512 # check null-2 success:         1
6513 UPDATE t1 SET f_int1 = NULL
6514 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6515 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6516         
6517 # check null-3 success:         1
6518 DELETE FROM t1
6519 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6520 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6521         
6522 # check null-4 success:         1
6523 DELETE FROM t1
6524 WHERE f_int1 = 0 AND f_int2 = 0
6525 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6526 AND f_charbig = '#NULL#';
6527 SET AUTOCOMMIT= 0;
6528 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6529 SELECT f_int1, f_int1, '', '', 'was inserted'
6530 FROM t0_template source_tab
6531 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6532         
6533 # check transactions-1 success:         1
6534 COMMIT WORK;
6535         
6536 # check transactions-2 success:         1
6537 ROLLBACK WORK;
6538         
6539 # check transactions-3 success:         1
6540 DELETE FROM t1 WHERE f_charbig = 'was inserted';
6541 COMMIT WORK;
6542 ROLLBACK WORK;
6543         
6544 # check transactions-4 success:         1
6545 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6546 SELECT f_int1, f_int1, '', '', 'was inserted'
6547 FROM t0_template source_tab
6548 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6549         
6550 # check transactions-5 success:         1
6551 ROLLBACK WORK;
6552 Warnings:
6553 Warning 1196    Some non-transactional changed tables couldn't be rolled back
6554         
6555 # check transactions-6 success:         1
6556 # INFO: Storage engine used for t1 seems to be not transactional.
6557 COMMIT;
6558         
6559 # check transactions-7 success:         1
6560 DELETE FROM t1 WHERE f_charbig = 'was inserted';
6561 COMMIT WORK;
6562 SET @@session.sql_mode = 'traditional';
6563 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6564 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6565 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6566 '', '', 'was inserted' FROM t0_template
6567 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6568 ERROR 22012: Division by 0
6569 COMMIT;
6570         
6571 # check transactions-8 success:         1
6572 # INFO: Storage engine used for t1 seems to be unable to revert
6573 #       changes made by the failing statement.
6574 SET @@session.sql_mode = '';
6575 SET AUTOCOMMIT= 1;
6576 DELETE FROM t1 WHERE f_charbig = 'was inserted';
6577 COMMIT WORK;
6578 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6579         
6580 # check special-1 success:      1
6581 UPDATE t1 SET f_charbig = '';
6582         
6583 # check special-2 success:      1
6584 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6585 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6586 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6587 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6588 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6589 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6590 'just inserted' FROM t0_template
6591 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6592 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6593 BEGIN
6594 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6595 f_charbig = 'updated by trigger'
6596       WHERE f_int1 = new.f_int1;
6597 END|
6598 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6599 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6600 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6601         
6602 # check trigger-1 success:      1
6603 DROP TRIGGER trg_1;
6604 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6605 f_int2 = CAST(f_char1 AS SIGNED INT),
6606 f_charbig = 'just inserted'
6607    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6608 DELETE FROM t0_aux
6609 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6610 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6611 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6612 'just inserted' FROM t0_template
6613 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6614 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6615 BEGIN
6616 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6617 f_charbig = 'updated by trigger'
6618       WHERE f_int1 = new.f_int1;
6619 END|
6620 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6621 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6622 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6623         
6624 # check trigger-2 success:      1
6625 DROP TRIGGER trg_1;
6626 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6627 f_int2 = CAST(f_char1 AS SIGNED INT),
6628 f_charbig = 'just inserted'
6629    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6630 DELETE FROM t0_aux
6631 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6632 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6633 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6634 'just inserted' FROM t0_template
6635 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6636 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6637 BEGIN
6638 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6639 f_charbig = 'updated by trigger'
6640       WHERE f_int1 = new.f_int1;
6641 END|
6642 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6643 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6644         
6645 # check trigger-3 success:      1
6646 DROP TRIGGER trg_1;
6647 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6648 f_int2 = CAST(f_char1 AS SIGNED INT),
6649 f_charbig = 'just inserted'
6650    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6651 DELETE FROM t0_aux
6652 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6653 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6654 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6655 'just inserted' FROM t0_template
6656 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6657 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6658 BEGIN
6659 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6660 f_charbig = 'updated by trigger'
6661       WHERE f_int1 = - old.f_int1;
6662 END|
6663 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6664 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6665         
6666 # check trigger-4 success:      1
6667 DROP TRIGGER trg_1;
6668 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6669 f_int2 = CAST(f_char1 AS SIGNED INT),
6670 f_charbig = 'just inserted'
6671    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6672 DELETE FROM t0_aux
6673 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6674 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6675 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6676 'just inserted' FROM t0_template
6677 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6678 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6679 BEGIN
6680 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6681 f_charbig = 'updated by trigger'
6682       WHERE f_int1 = new.f_int1;
6683 END|
6684 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6685 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6686         
6687 # check trigger-5 success:      1
6688 DROP TRIGGER trg_1;
6689 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6690 f_int2 = CAST(f_char1 AS SIGNED INT),
6691 f_charbig = 'just inserted'
6692    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6693 DELETE FROM t0_aux
6694 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6695 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6696 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6697 'just inserted' FROM t0_template
6698 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6699 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6700 BEGIN
6701 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6702 f_charbig = 'updated by trigger'
6703       WHERE f_int1 = - old.f_int1;
6704 END|
6705 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
6706 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6707         
6708 # check trigger-6 success:      1
6709 DROP TRIGGER trg_1;
6710 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6711 f_int2 = CAST(f_char1 AS SIGNED INT),
6712 f_charbig = 'just inserted'
6713    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6714 DELETE FROM t0_aux
6715 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6716 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6717 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6718 'just inserted' FROM t0_template
6719 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6720 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6721 BEGIN
6722 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6723 f_charbig = 'updated by trigger'
6724       WHERE f_int1 = - old.f_int1;
6725 END|
6726 DELETE FROM t0_aux
6727 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6728         
6729 # check trigger-7 success:      1
6730 DROP TRIGGER trg_1;
6731 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6732 f_int2 = CAST(f_char1 AS SIGNED INT),
6733 f_charbig = 'just inserted'
6734    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6735 DELETE FROM t0_aux
6736 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6737 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6738 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6739 'just inserted' FROM t0_template
6740 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6741 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6742 BEGIN
6743 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6744 f_charbig = 'updated by trigger'
6745       WHERE f_int1 = - old.f_int1;
6746 END|
6747 DELETE FROM t0_aux
6748 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6749         
6750 # check trigger-8 success:      1
6751 DROP TRIGGER trg_1;
6752 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6753 f_int2 = CAST(f_char1 AS SIGNED INT),
6754 f_charbig = 'just inserted'
6755    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6756 DELETE FROM t0_aux
6757 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6758 DELETE FROM t1
6759 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6760 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6761 BEGIN
6762 SET new.f_int1 = old.f_int1 + @max_row,
6763 new.f_int2 = old.f_int2 - @max_row,
6764 new.f_charbig = '####updated per update trigger####';
6765 END|
6766 UPDATE t1
6767 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6768 f_charbig = '####updated per update statement itself####';
6769         
6770 # check trigger-9 success:      1
6771 DROP TRIGGER trg_2;
6772 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6773 f_int2 = CAST(f_char1 AS SIGNED INT),
6774 f_charbig = CONCAT('===',f_char1,'===');
6775 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6776 BEGIN
6777 SET new.f_int1 = new.f_int1 + @max_row,
6778 new.f_int2 = new.f_int2 - @max_row,
6779 new.f_charbig = '####updated per update trigger####';
6780 END|
6781 UPDATE t1
6782 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6783 f_charbig = '####updated per update statement itself####';
6784         
6785 # check trigger-10 success:     1
6786 DROP TRIGGER trg_2;
6787 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6788 f_int2 = CAST(f_char1 AS SIGNED INT),
6789 f_charbig = CONCAT('===',f_char1,'===');
6790 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6791 BEGIN
6792 SET new.f_int1 = @my_max1 + @counter,
6793 new.f_int2 = @my_min2 - @counter,
6794 new.f_charbig = '####updated per insert trigger####';
6795 SET @counter = @counter + 1;
6796 END|
6797 SET @counter = 1;
6798 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6799 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6800 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6801 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6802 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6803 ORDER BY f_int1;
6804 DROP TRIGGER trg_3;
6805         
6806 # check trigger-11 success:     1
6807 DELETE FROM t1
6808 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6809 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6810 AND f_charbig = '####updated per insert trigger####';
6811 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6812 BEGIN
6813 SET new.f_int1 = @my_max1 + @counter,
6814 new.f_int2 = @my_min2 - @counter,
6815 new.f_charbig = '####updated per insert trigger####';
6816 SET @counter = @counter + 1;
6817 END|
6818 SET @counter = 1;
6819 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6820 INSERT INTO t1 (f_char1, f_char2, f_charbig)
6821 SELECT CAST(f_int1 AS CHAR),
6822 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6823 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6824 ORDER BY f_int1;
6825 DROP TRIGGER trg_3;
6826         
6827 # check trigger-12 success:     1
6828 DELETE FROM t1
6829 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6830 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6831 AND f_charbig = '####updated per insert trigger####';
6832 ANALYZE  TABLE t1;
6833 Table   Op      Msg_type        Msg_text
6834 test.t1 analyze status  OK
6835 CHECK    TABLE t1 EXTENDED;
6836 Table   Op      Msg_type        Msg_text
6837 test.t1 check   status  OK
6838 CHECKSUM TABLE t1 EXTENDED;
6839 Table   Checksum
6840 test.t1 <some_value>
6841 OPTIMIZE TABLE t1;
6842 Table   Op      Msg_type        Msg_text
6843 test.t1 optimize        status  OK
6844 # check layout success:    1
6845 REPAIR   TABLE t1 EXTENDED;
6846 Table   Op      Msg_type        Msg_text
6847 test.t1 repair  status  OK
6848 # check layout success:    1
6849 TRUNCATE t1;
6850         
6851 # check TRUNCATE success:       1
6852 # check layout success:    1
6853 # End usability test (inc/partition_check.inc)
6854 DROP TABLE t1;
6855 CREATE TABLE t1 (
6856 f_int1 INTEGER,
6857 f_int2 INTEGER,
6858 f_char1 CHAR(20),
6859 f_char2 CHAR(20),
6860 f_charbig VARCHAR(1000)
6863 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
6864 (PARTITION part_1 VALUES IN (0)
6865 (SUBPARTITION sp11, SUBPARTITION sp12),
6866 PARTITION part_2 VALUES IN (1)
6867 (SUBPARTITION sp21, SUBPARTITION sp22),
6868 PARTITION part_3 VALUES IN (2)
6869 (SUBPARTITION sp31, SUBPARTITION sp32),
6870 PARTITION part_4 VALUES IN (NULL)
6871 (SUBPARTITION sp41, SUBPARTITION sp42));
6872 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6873 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6874 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6875 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
6876 Table   Op      Msg_type        Msg_text
6877 test.t1 analyze status  OK
6878 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6879 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6880 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6881 # Start usability test (inc/partition_check.inc)
6882 create_command
6883 SHOW CREATE TABLE t1;
6884 Table   Create Table
6885 t1      CREATE TABLE `t1` (
6886   `f_int1` int(11) DEFAULT NULL,
6887   `f_int2` int(11) DEFAULT NULL,
6888   `f_char1` char(20) DEFAULT NULL,
6889   `f_char2` char(20) DEFAULT NULL,
6890   `f_charbig` varchar(1000) DEFAULT NULL
6891 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
6892 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
6893 SUBPARTITION BY HASH (f_int1 + 1)
6894 (PARTITION part_1 VALUES IN (0)
6895  (SUBPARTITION sp11 ENGINE = MyISAM,
6896   SUBPARTITION sp12 ENGINE = MyISAM),
6897  PARTITION part_2 VALUES IN (1)
6898  (SUBPARTITION sp21 ENGINE = MyISAM,
6899   SUBPARTITION sp22 ENGINE = MyISAM),
6900  PARTITION part_3 VALUES IN (2)
6901  (SUBPARTITION sp31 ENGINE = MyISAM,
6902   SUBPARTITION sp32 ENGINE = MyISAM),
6903  PARTITION part_4 VALUES IN (NULL)
6904  (SUBPARTITION sp41 ENGINE = MyISAM,
6905   SUBPARTITION sp42 ENGINE = MyISAM)) */
6907 unified filelist
6908 t1#P#part_1#SP#sp11.MYD
6909 t1#P#part_1#SP#sp11.MYI
6910 t1#P#part_1#SP#sp12.MYD
6911 t1#P#part_1#SP#sp12.MYI
6912 t1#P#part_2#SP#sp21.MYD
6913 t1#P#part_2#SP#sp21.MYI
6914 t1#P#part_2#SP#sp22.MYD
6915 t1#P#part_2#SP#sp22.MYI
6916 t1#P#part_3#SP#sp31.MYD
6917 t1#P#part_3#SP#sp31.MYI
6918 t1#P#part_3#SP#sp32.MYD
6919 t1#P#part_3#SP#sp32.MYI
6920 t1#P#part_4#SP#sp41.MYD
6921 t1#P#part_4#SP#sp41.MYI
6922 t1#P#part_4#SP#sp42.MYD
6923 t1#P#part_4#SP#sp42.MYI
6924 t1.frm
6925 t1.par
6927 # check prerequisites-1 success:    1
6928 # check COUNT(*) success:    1
6929 # check MIN/MAX(f_int1) success:    1
6930 # check MIN/MAX(f_int2) success:    1
6931 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6932 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6933 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6934 WHERE f_int1 IN (2,3);
6935 # check prerequisites-3 success:    1
6936 DELETE FROM t1 WHERE f_charbig = 'delete me';
6937 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6938 # check read via f_int1 success: 1
6939 # check read via f_int2 success: 1
6940         
6941 # check multiple-1 success:     1
6942 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6943         
6944 # check multiple-2 success:     1
6945 INSERT INTO t1 SELECT * FROM t0_template
6946 WHERE MOD(f_int1,3) = 0;
6947         
6948 # check multiple-3 success:     1
6949 UPDATE t1 SET f_int1 = f_int1 + @max_row
6950 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6951 AND @max_row_div2 + @max_row_div4;
6952         
6953 # check multiple-4 success:     1
6954 DELETE FROM t1
6955 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6956 AND @max_row_div2 + @max_row_div4 + @max_row;
6957         
6958 # check multiple-5 success:     1
6959 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6960 INSERT INTO t1
6961 SET f_int1 = @cur_value , f_int2 = @cur_value,
6962 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6963 f_charbig = '#SINGLE#';
6964         
6965 # check single-1 success:       1
6966 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6967 INSERT INTO t1
6968 SET f_int1 = @cur_value , f_int2 = @cur_value,
6969 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6970 f_charbig = '#SINGLE#';
6971         
6972 # check single-2 success:       1
6973 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6974 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6975 UPDATE t1 SET f_int1 = @cur_value2
6976 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6977         
6978 # check single-3 success:       1
6979 SET @cur_value1= -1;
6980 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6981 UPDATE t1 SET f_int1 = @cur_value1
6982 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6983         
6984 # check single-4 success:       1
6985 SELECT MAX(f_int1) INTO @cur_value FROM t1;
6986 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6987         
6988 # check single-5 success:       1
6989 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6990         
6991 # check single-6 success:       1
6992 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6993         
6994 # check single-7 success:       1
6995 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6996 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6997 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6998 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6999 f_charbig = '#NULL#';
7000 INSERT INTO t1
7001 SET f_int1 = NULL , f_int2 = -@max_row,
7002 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7003 f_charbig = '#NULL#';
7004 # check null success:    1
7005         
7006 # check null-1 success:         1
7007 UPDATE t1 SET f_int1 = -@max_row
7008 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7009 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7010         
7011 # check null-2 success:         1
7012 UPDATE t1 SET f_int1 = NULL
7013 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7014 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7015         
7016 # check null-3 success:         1
7017 DELETE FROM t1
7018 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7019 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7020         
7021 # check null-4 success:         1
7022 DELETE FROM t1
7023 WHERE f_int1 = 0 AND f_int2 = 0
7024 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7025 AND f_charbig = '#NULL#';
7026 SET AUTOCOMMIT= 0;
7027 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7028 SELECT f_int1, f_int1, '', '', 'was inserted'
7029 FROM t0_template source_tab
7030 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7031         
7032 # check transactions-1 success:         1
7033 COMMIT WORK;
7034         
7035 # check transactions-2 success:         1
7036 ROLLBACK WORK;
7037         
7038 # check transactions-3 success:         1
7039 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7040 COMMIT WORK;
7041 ROLLBACK WORK;
7042         
7043 # check transactions-4 success:         1
7044 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7045 SELECT f_int1, f_int1, '', '', 'was inserted'
7046 FROM t0_template source_tab
7047 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7048         
7049 # check transactions-5 success:         1
7050 ROLLBACK WORK;
7051 Warnings:
7052 Warning 1196    Some non-transactional changed tables couldn't be rolled back
7053         
7054 # check transactions-6 success:         1
7055 # INFO: Storage engine used for t1 seems to be not transactional.
7056 COMMIT;
7057         
7058 # check transactions-7 success:         1
7059 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7060 COMMIT WORK;
7061 SET @@session.sql_mode = 'traditional';
7062 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7063 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7064 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7065 '', '', 'was inserted' FROM t0_template
7066 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7067 ERROR 22012: Division by 0
7068 COMMIT;
7069         
7070 # check transactions-8 success:         1
7071 # INFO: Storage engine used for t1 seems to be unable to revert
7072 #       changes made by the failing statement.
7073 SET @@session.sql_mode = '';
7074 SET AUTOCOMMIT= 1;
7075 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7076 COMMIT WORK;
7077 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7078         
7079 # check special-1 success:      1
7080 UPDATE t1 SET f_charbig = '';
7081         
7082 # check special-2 success:      1
7083 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7084 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7085 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7086 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7087 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7088 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7089 'just inserted' FROM t0_template
7090 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7091 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7092 BEGIN
7093 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7094 f_charbig = 'updated by trigger'
7095       WHERE f_int1 = new.f_int1;
7096 END|
7097 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7098 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7099 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7100         
7101 # check trigger-1 success:      1
7102 DROP TRIGGER trg_1;
7103 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7104 f_int2 = CAST(f_char1 AS SIGNED INT),
7105 f_charbig = 'just inserted'
7106    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7107 DELETE FROM t0_aux
7108 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7109 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7110 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7111 'just inserted' FROM t0_template
7112 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7113 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7114 BEGIN
7115 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7116 f_charbig = 'updated by trigger'
7117       WHERE f_int1 = new.f_int1;
7118 END|
7119 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7120 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7121 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7122         
7123 # check trigger-2 success:      1
7124 DROP TRIGGER trg_1;
7125 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7126 f_int2 = CAST(f_char1 AS SIGNED INT),
7127 f_charbig = 'just inserted'
7128    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7129 DELETE FROM t0_aux
7130 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7131 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7132 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7133 'just inserted' FROM t0_template
7134 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7135 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7136 BEGIN
7137 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7138 f_charbig = 'updated by trigger'
7139       WHERE f_int1 = new.f_int1;
7140 END|
7141 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7142 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7143         
7144 # check trigger-3 success:      1
7145 DROP TRIGGER trg_1;
7146 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7147 f_int2 = CAST(f_char1 AS SIGNED INT),
7148 f_charbig = 'just inserted'
7149    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7150 DELETE FROM t0_aux
7151 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7152 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7153 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7154 'just inserted' FROM t0_template
7155 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7156 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7157 BEGIN
7158 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7159 f_charbig = 'updated by trigger'
7160       WHERE f_int1 = - old.f_int1;
7161 END|
7162 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7163 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7164         
7165 # check trigger-4 success:      1
7166 DROP TRIGGER trg_1;
7167 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7168 f_int2 = CAST(f_char1 AS SIGNED INT),
7169 f_charbig = 'just inserted'
7170    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7171 DELETE FROM t0_aux
7172 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7173 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7174 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7175 'just inserted' FROM t0_template
7176 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7177 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7178 BEGIN
7179 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7180 f_charbig = 'updated by trigger'
7181       WHERE f_int1 = new.f_int1;
7182 END|
7183 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7184 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7185         
7186 # check trigger-5 success:      1
7187 DROP TRIGGER trg_1;
7188 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7189 f_int2 = CAST(f_char1 AS SIGNED INT),
7190 f_charbig = 'just inserted'
7191    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7192 DELETE FROM t0_aux
7193 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7194 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7195 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7196 'just inserted' FROM t0_template
7197 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7198 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7199 BEGIN
7200 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7201 f_charbig = 'updated by trigger'
7202       WHERE f_int1 = - old.f_int1;
7203 END|
7204 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7205 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7206         
7207 # check trigger-6 success:      1
7208 DROP TRIGGER trg_1;
7209 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7210 f_int2 = CAST(f_char1 AS SIGNED INT),
7211 f_charbig = 'just inserted'
7212    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7213 DELETE FROM t0_aux
7214 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7215 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7216 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7217 'just inserted' FROM t0_template
7218 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7219 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7220 BEGIN
7221 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7222 f_charbig = 'updated by trigger'
7223       WHERE f_int1 = - old.f_int1;
7224 END|
7225 DELETE FROM t0_aux
7226 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7227         
7228 # check trigger-7 success:      1
7229 DROP TRIGGER trg_1;
7230 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7231 f_int2 = CAST(f_char1 AS SIGNED INT),
7232 f_charbig = 'just inserted'
7233    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7234 DELETE FROM t0_aux
7235 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7236 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7237 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7238 'just inserted' FROM t0_template
7239 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7240 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7241 BEGIN
7242 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7243 f_charbig = 'updated by trigger'
7244       WHERE f_int1 = - old.f_int1;
7245 END|
7246 DELETE FROM t0_aux
7247 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7248         
7249 # check trigger-8 success:      1
7250 DROP TRIGGER trg_1;
7251 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7252 f_int2 = CAST(f_char1 AS SIGNED INT),
7253 f_charbig = 'just inserted'
7254    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7255 DELETE FROM t0_aux
7256 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7257 DELETE FROM t1
7258 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7259 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7260 BEGIN
7261 SET new.f_int1 = old.f_int1 + @max_row,
7262 new.f_int2 = old.f_int2 - @max_row,
7263 new.f_charbig = '####updated per update trigger####';
7264 END|
7265 UPDATE t1
7266 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7267 f_charbig = '####updated per update statement itself####';
7268         
7269 # check trigger-9 success:      1
7270 DROP TRIGGER trg_2;
7271 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7272 f_int2 = CAST(f_char1 AS SIGNED INT),
7273 f_charbig = CONCAT('===',f_char1,'===');
7274 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7275 BEGIN
7276 SET new.f_int1 = new.f_int1 + @max_row,
7277 new.f_int2 = new.f_int2 - @max_row,
7278 new.f_charbig = '####updated per update trigger####';
7279 END|
7280 UPDATE t1
7281 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7282 f_charbig = '####updated per update statement itself####';
7283         
7284 # check trigger-10 success:     1
7285 DROP TRIGGER trg_2;
7286 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7287 f_int2 = CAST(f_char1 AS SIGNED INT),
7288 f_charbig = CONCAT('===',f_char1,'===');
7289 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7290 BEGIN
7291 SET new.f_int1 = @my_max1 + @counter,
7292 new.f_int2 = @my_min2 - @counter,
7293 new.f_charbig = '####updated per insert trigger####';
7294 SET @counter = @counter + 1;
7295 END|
7296 SET @counter = 1;
7297 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7298 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7299 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7300 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7301 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7302 ORDER BY f_int1;
7303 DROP TRIGGER trg_3;
7304         
7305 # check trigger-11 success:     1
7306 DELETE FROM t1
7307 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7308 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7309 AND f_charbig = '####updated per insert trigger####';
7310 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7311 BEGIN
7312 SET new.f_int1 = @my_max1 + @counter,
7313 new.f_int2 = @my_min2 - @counter,
7314 new.f_charbig = '####updated per insert trigger####';
7315 SET @counter = @counter + 1;
7316 END|
7317 SET @counter = 1;
7318 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7319 INSERT INTO t1 (f_char1, f_char2, f_charbig)
7320 SELECT CAST(f_int1 AS CHAR),
7321 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7322 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7323 ORDER BY f_int1;
7324 DROP TRIGGER trg_3;
7325         
7326 # check trigger-12 success:     1
7327 DELETE FROM t1
7328 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7329 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7330 AND f_charbig = '####updated per insert trigger####';
7331 ANALYZE  TABLE t1;
7332 Table   Op      Msg_type        Msg_text
7333 test.t1 analyze status  OK
7334 CHECK    TABLE t1 EXTENDED;
7335 Table   Op      Msg_type        Msg_text
7336 test.t1 check   status  OK
7337 CHECKSUM TABLE t1 EXTENDED;
7338 Table   Checksum
7339 test.t1 <some_value>
7340 OPTIMIZE TABLE t1;
7341 Table   Op      Msg_type        Msg_text
7342 test.t1 optimize        status  OK
7343 # check layout success:    1
7344 REPAIR   TABLE t1 EXTENDED;
7345 Table   Op      Msg_type        Msg_text
7346 test.t1 repair  status  OK
7347 # check layout success:    1
7348 TRUNCATE t1;
7349         
7350 # check TRUNCATE success:       1
7351 # check layout success:    1
7352 # End usability test (inc/partition_check.inc)
7353 DROP TABLE t1;
7354 CREATE TABLE t1 (
7355 f_int1 INTEGER,
7356 f_int2 INTEGER,
7357 f_char1 CHAR(20),
7358 f_char2 CHAR(20),
7359 f_charbig VARCHAR(1000)
7362 PARTITION BY LIST(ABS(MOD(f_int1,2)))
7363 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
7364 (PARTITION part_1 VALUES IN (0),
7365  PARTITION part_2 VALUES IN (1),
7366  PARTITION part_3 VALUES IN (NULL));
7367 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7368 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7369 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7370 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
7371 Table   Op      Msg_type        Msg_text
7372 test.t1 analyze status  OK
7373 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7374 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7375 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7376 # Start usability test (inc/partition_check.inc)
7377 create_command
7378 SHOW CREATE TABLE t1;
7379 Table   Create Table
7380 t1      CREATE TABLE `t1` (
7381   `f_int1` int(11) DEFAULT NULL,
7382   `f_int2` int(11) DEFAULT NULL,
7383   `f_char1` char(20) DEFAULT NULL,
7384   `f_char2` char(20) DEFAULT NULL,
7385   `f_charbig` varchar(1000) DEFAULT NULL
7386 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
7387 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
7388 SUBPARTITION BY KEY (f_int1)
7389 SUBPARTITIONS 3
7390 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
7391  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
7392  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
7394 unified filelist
7395 t1#P#part_1#SP#part_1sp0.MYD
7396 t1#P#part_1#SP#part_1sp0.MYI
7397 t1#P#part_1#SP#part_1sp1.MYD
7398 t1#P#part_1#SP#part_1sp1.MYI
7399 t1#P#part_1#SP#part_1sp2.MYD
7400 t1#P#part_1#SP#part_1sp2.MYI
7401 t1#P#part_2#SP#part_2sp0.MYD
7402 t1#P#part_2#SP#part_2sp0.MYI
7403 t1#P#part_2#SP#part_2sp1.MYD
7404 t1#P#part_2#SP#part_2sp1.MYI
7405 t1#P#part_2#SP#part_2sp2.MYD
7406 t1#P#part_2#SP#part_2sp2.MYI
7407 t1#P#part_3#SP#part_3sp0.MYD
7408 t1#P#part_3#SP#part_3sp0.MYI
7409 t1#P#part_3#SP#part_3sp1.MYD
7410 t1#P#part_3#SP#part_3sp1.MYI
7411 t1#P#part_3#SP#part_3sp2.MYD
7412 t1#P#part_3#SP#part_3sp2.MYI
7413 t1.frm
7414 t1.par
7416 # check prerequisites-1 success:    1
7417 # check COUNT(*) success:    1
7418 # check MIN/MAX(f_int1) success:    1
7419 # check MIN/MAX(f_int2) success:    1
7420 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7421 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7422 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7423 WHERE f_int1 IN (2,3);
7424 # check prerequisites-3 success:    1
7425 DELETE FROM t1 WHERE f_charbig = 'delete me';
7426 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
7427 # check read via f_int1 success: 1
7428 # check read via f_int2 success: 1
7429         
7430 # check multiple-1 success:     1
7431 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7432         
7433 # check multiple-2 success:     1
7434 INSERT INTO t1 SELECT * FROM t0_template
7435 WHERE MOD(f_int1,3) = 0;
7436         
7437 # check multiple-3 success:     1
7438 UPDATE t1 SET f_int1 = f_int1 + @max_row
7439 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7440 AND @max_row_div2 + @max_row_div4;
7441         
7442 # check multiple-4 success:     1
7443 DELETE FROM t1
7444 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7445 AND @max_row_div2 + @max_row_div4 + @max_row;
7446         
7447 # check multiple-5 success:     1
7448 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7449 INSERT INTO t1
7450 SET f_int1 = @cur_value , f_int2 = @cur_value,
7451 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7452 f_charbig = '#SINGLE#';
7453         
7454 # check single-1 success:       1
7455 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7456 INSERT INTO t1
7457 SET f_int1 = @cur_value , f_int2 = @cur_value,
7458 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7459 f_charbig = '#SINGLE#';
7460         
7461 # check single-2 success:       1
7462 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7463 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7464 UPDATE t1 SET f_int1 = @cur_value2
7465 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7466         
7467 # check single-3 success:       1
7468 SET @cur_value1= -1;
7469 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7470 UPDATE t1 SET f_int1 = @cur_value1
7471 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7472         
7473 # check single-4 success:       1
7474 SELECT MAX(f_int1) INTO @cur_value FROM t1;
7475 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7476         
7477 # check single-5 success:       1
7478 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7479         
7480 # check single-6 success:       1
7481 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7482         
7483 # check single-7 success:       1
7484 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7485 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7486 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7487 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7488 f_charbig = '#NULL#';
7489 INSERT INTO t1
7490 SET f_int1 = NULL , f_int2 = -@max_row,
7491 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7492 f_charbig = '#NULL#';
7493 # check null success:    1
7494         
7495 # check null-1 success:         1
7496 UPDATE t1 SET f_int1 = -@max_row
7497 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7498 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7499         
7500 # check null-2 success:         1
7501 UPDATE t1 SET f_int1 = NULL
7502 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7503 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7504         
7505 # check null-3 success:         1
7506 DELETE FROM t1
7507 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7508 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7509         
7510 # check null-4 success:         1
7511 DELETE FROM t1
7512 WHERE f_int1 = 0 AND f_int2 = 0
7513 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7514 AND f_charbig = '#NULL#';
7515 SET AUTOCOMMIT= 0;
7516 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7517 SELECT f_int1, f_int1, '', '', 'was inserted'
7518 FROM t0_template source_tab
7519 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7520         
7521 # check transactions-1 success:         1
7522 COMMIT WORK;
7523         
7524 # check transactions-2 success:         1
7525 ROLLBACK WORK;
7526         
7527 # check transactions-3 success:         1
7528 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7529 COMMIT WORK;
7530 ROLLBACK WORK;
7531         
7532 # check transactions-4 success:         1
7533 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7534 SELECT f_int1, f_int1, '', '', 'was inserted'
7535 FROM t0_template source_tab
7536 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7537         
7538 # check transactions-5 success:         1
7539 ROLLBACK WORK;
7540 Warnings:
7541 Warning 1196    Some non-transactional changed tables couldn't be rolled back
7542         
7543 # check transactions-6 success:         1
7544 # INFO: Storage engine used for t1 seems to be not transactional.
7545 COMMIT;
7546         
7547 # check transactions-7 success:         1
7548 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7549 COMMIT WORK;
7550 SET @@session.sql_mode = 'traditional';
7551 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7552 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7553 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7554 '', '', 'was inserted' FROM t0_template
7555 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7556 ERROR 22012: Division by 0
7557 COMMIT;
7558         
7559 # check transactions-8 success:         1
7560 # INFO: Storage engine used for t1 seems to be unable to revert
7561 #       changes made by the failing statement.
7562 SET @@session.sql_mode = '';
7563 SET AUTOCOMMIT= 1;
7564 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7565 COMMIT WORK;
7566 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7567         
7568 # check special-1 success:      1
7569 UPDATE t1 SET f_charbig = '';
7570         
7571 # check special-2 success:      1
7572 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7573 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7574 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7575 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7576 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7577 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7578 'just inserted' FROM t0_template
7579 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7580 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7581 BEGIN
7582 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7583 f_charbig = 'updated by trigger'
7584       WHERE f_int1 = new.f_int1;
7585 END|
7586 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7587 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7588 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7589         
7590 # check trigger-1 success:      1
7591 DROP TRIGGER trg_1;
7592 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7593 f_int2 = CAST(f_char1 AS SIGNED INT),
7594 f_charbig = 'just inserted'
7595    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7596 DELETE FROM t0_aux
7597 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7598 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7599 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7600 'just inserted' FROM t0_template
7601 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7602 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7603 BEGIN
7604 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7605 f_charbig = 'updated by trigger'
7606       WHERE f_int1 = new.f_int1;
7607 END|
7608 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7609 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7610 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7611         
7612 # check trigger-2 success:      1
7613 DROP TRIGGER trg_1;
7614 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7615 f_int2 = CAST(f_char1 AS SIGNED INT),
7616 f_charbig = 'just inserted'
7617    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7618 DELETE FROM t0_aux
7619 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7620 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7621 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7622 'just inserted' FROM t0_template
7623 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7624 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7625 BEGIN
7626 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7627 f_charbig = 'updated by trigger'
7628       WHERE f_int1 = new.f_int1;
7629 END|
7630 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7631 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7632         
7633 # check trigger-3 success:      1
7634 DROP TRIGGER trg_1;
7635 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7636 f_int2 = CAST(f_char1 AS SIGNED INT),
7637 f_charbig = 'just inserted'
7638    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7639 DELETE FROM t0_aux
7640 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7641 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7642 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7643 'just inserted' FROM t0_template
7644 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7645 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7646 BEGIN
7647 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7648 f_charbig = 'updated by trigger'
7649       WHERE f_int1 = - old.f_int1;
7650 END|
7651 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7652 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7653         
7654 # check trigger-4 success:      1
7655 DROP TRIGGER trg_1;
7656 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7657 f_int2 = CAST(f_char1 AS SIGNED INT),
7658 f_charbig = 'just inserted'
7659    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7660 DELETE FROM t0_aux
7661 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7662 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7663 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7664 'just inserted' FROM t0_template
7665 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7666 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7667 BEGIN
7668 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7669 f_charbig = 'updated by trigger'
7670       WHERE f_int1 = new.f_int1;
7671 END|
7672 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7673 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7674         
7675 # check trigger-5 success:      1
7676 DROP TRIGGER trg_1;
7677 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7678 f_int2 = CAST(f_char1 AS SIGNED INT),
7679 f_charbig = 'just inserted'
7680    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7681 DELETE FROM t0_aux
7682 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7683 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7684 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7685 'just inserted' FROM t0_template
7686 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7687 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7688 BEGIN
7689 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7690 f_charbig = 'updated by trigger'
7691       WHERE f_int1 = - old.f_int1;
7692 END|
7693 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
7694 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7695         
7696 # check trigger-6 success:      1
7697 DROP TRIGGER trg_1;
7698 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7699 f_int2 = CAST(f_char1 AS SIGNED INT),
7700 f_charbig = 'just inserted'
7701    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7702 DELETE FROM t0_aux
7703 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7704 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7705 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7706 'just inserted' FROM t0_template
7707 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7708 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7709 BEGIN
7710 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7711 f_charbig = 'updated by trigger'
7712       WHERE f_int1 = - old.f_int1;
7713 END|
7714 DELETE FROM t0_aux
7715 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7716         
7717 # check trigger-7 success:      1
7718 DROP TRIGGER trg_1;
7719 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7720 f_int2 = CAST(f_char1 AS SIGNED INT),
7721 f_charbig = 'just inserted'
7722    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7723 DELETE FROM t0_aux
7724 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7725 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7726 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7727 'just inserted' FROM t0_template
7728 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7729 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7730 BEGIN
7731 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7732 f_charbig = 'updated by trigger'
7733       WHERE f_int1 = - old.f_int1;
7734 END|
7735 DELETE FROM t0_aux
7736 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7737         
7738 # check trigger-8 success:      1
7739 DROP TRIGGER trg_1;
7740 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7741 f_int2 = CAST(f_char1 AS SIGNED INT),
7742 f_charbig = 'just inserted'
7743    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7744 DELETE FROM t0_aux
7745 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7746 DELETE FROM t1
7747 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7748 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7749 BEGIN
7750 SET new.f_int1 = old.f_int1 + @max_row,
7751 new.f_int2 = old.f_int2 - @max_row,
7752 new.f_charbig = '####updated per update trigger####';
7753 END|
7754 UPDATE t1
7755 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7756 f_charbig = '####updated per update statement itself####';
7757         
7758 # check trigger-9 success:      1
7759 DROP TRIGGER trg_2;
7760 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7761 f_int2 = CAST(f_char1 AS SIGNED INT),
7762 f_charbig = CONCAT('===',f_char1,'===');
7763 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7764 BEGIN
7765 SET new.f_int1 = new.f_int1 + @max_row,
7766 new.f_int2 = new.f_int2 - @max_row,
7767 new.f_charbig = '####updated per update trigger####';
7768 END|
7769 UPDATE t1
7770 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7771 f_charbig = '####updated per update statement itself####';
7772         
7773 # check trigger-10 success:     1
7774 DROP TRIGGER trg_2;
7775 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7776 f_int2 = CAST(f_char1 AS SIGNED INT),
7777 f_charbig = CONCAT('===',f_char1,'===');
7778 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7779 BEGIN
7780 SET new.f_int1 = @my_max1 + @counter,
7781 new.f_int2 = @my_min2 - @counter,
7782 new.f_charbig = '####updated per insert trigger####';
7783 SET @counter = @counter + 1;
7784 END|
7785 SET @counter = 1;
7786 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7787 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7788 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7789 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7790 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7791 ORDER BY f_int1;
7792 DROP TRIGGER trg_3;
7793         
7794 # check trigger-11 success:     1
7795 DELETE FROM t1
7796 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7797 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7798 AND f_charbig = '####updated per insert trigger####';
7799 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7800 BEGIN
7801 SET new.f_int1 = @my_max1 + @counter,
7802 new.f_int2 = @my_min2 - @counter,
7803 new.f_charbig = '####updated per insert trigger####';
7804 SET @counter = @counter + 1;
7805 END|
7806 SET @counter = 1;
7807 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7808 INSERT INTO t1 (f_char1, f_char2, f_charbig)
7809 SELECT CAST(f_int1 AS CHAR),
7810 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7811 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7812 ORDER BY f_int1;
7813 DROP TRIGGER trg_3;
7814         
7815 # check trigger-12 success:     1
7816 DELETE FROM t1
7817 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7818 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7819 AND f_charbig = '####updated per insert trigger####';
7820 ANALYZE  TABLE t1;
7821 Table   Op      Msg_type        Msg_text
7822 test.t1 analyze status  OK
7823 CHECK    TABLE t1 EXTENDED;
7824 Table   Op      Msg_type        Msg_text
7825 test.t1 check   status  OK
7826 CHECKSUM TABLE t1 EXTENDED;
7827 Table   Checksum
7828 test.t1 <some_value>
7829 OPTIMIZE TABLE t1;
7830 Table   Op      Msg_type        Msg_text
7831 test.t1 optimize        status  OK
7832 # check layout success:    1
7833 REPAIR   TABLE t1 EXTENDED;
7834 Table   Op      Msg_type        Msg_text
7835 test.t1 repair  status  OK
7836 # check layout success:    1
7837 TRUNCATE t1;
7838         
7839 # check TRUNCATE success:       1
7840 # check layout success:    1
7841 # End usability test (inc/partition_check.inc)
7842 DROP TABLE t1;
7843 #  1.3 ALTER ... ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
7844 DROP TABLE IF EXISTS t1;
7845 CREATE TABLE t1 (
7846 f_int1 INTEGER,
7847 f_int2 INTEGER,
7848 f_char1 CHAR(20),
7849 f_char2 CHAR(20),
7850 f_charbig VARCHAR(1000)
7853 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
7854 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7855 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7856 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7857 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
7858 Table   Op      Msg_type        Msg_text
7859 test.t1 analyze error   Error in list of partitions to test.t1
7860 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7861 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7862 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7863 # Start usability test (inc/partition_check.inc)
7864 create_command
7865 SHOW CREATE TABLE t1;
7866 Table   Create Table
7867 t1      CREATE TABLE `t1` (
7868   `f_int1` int(11) DEFAULT NULL,
7869   `f_int2` int(11) DEFAULT NULL,
7870   `f_char1` char(20) DEFAULT NULL,
7871   `f_char2` char(20) DEFAULT NULL,
7872   `f_charbig` varchar(1000) DEFAULT NULL
7873 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
7874 /*!50100 PARTITION BY HASH (f_int1)
7875 (PARTITION part_1 ENGINE = MyISAM,
7876  PARTITION part_2 ENGINE = MyISAM) */
7878 unified filelist
7879 t1#P#part_1.MYD
7880 t1#P#part_1.MYI
7881 t1#P#part_2.MYD
7882 t1#P#part_2.MYI
7883 t1.frm
7884 t1.par
7886 # check prerequisites-1 success:    1
7887 # check COUNT(*) success:    1
7888 # check MIN/MAX(f_int1) success:    1
7889 # check MIN/MAX(f_int2) success:    1
7890 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7891 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7892 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7893 WHERE f_int1 IN (2,3);
7894 # check prerequisites-3 success:    1
7895 DELETE FROM t1 WHERE f_charbig = 'delete me';
7896 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
7897 # check read via f_int1 success: 1
7898 # check read via f_int2 success: 1
7899         
7900 # check multiple-1 success:     1
7901 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7902         
7903 # check multiple-2 success:     1
7904 INSERT INTO t1 SELECT * FROM t0_template
7905 WHERE MOD(f_int1,3) = 0;
7906         
7907 # check multiple-3 success:     1
7908 UPDATE t1 SET f_int1 = f_int1 + @max_row
7909 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7910 AND @max_row_div2 + @max_row_div4;
7911         
7912 # check multiple-4 success:     1
7913 DELETE FROM t1
7914 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7915 AND @max_row_div2 + @max_row_div4 + @max_row;
7916         
7917 # check multiple-5 success:     1
7918 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7919 INSERT INTO t1
7920 SET f_int1 = @cur_value , f_int2 = @cur_value,
7921 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7922 f_charbig = '#SINGLE#';
7923         
7924 # check single-1 success:       1
7925 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7926 INSERT INTO t1
7927 SET f_int1 = @cur_value , f_int2 = @cur_value,
7928 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7929 f_charbig = '#SINGLE#';
7930         
7931 # check single-2 success:       1
7932 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7933 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7934 UPDATE t1 SET f_int1 = @cur_value2
7935 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7936         
7937 # check single-3 success:       1
7938 SET @cur_value1= -1;
7939 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7940 UPDATE t1 SET f_int1 = @cur_value1
7941 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7942         
7943 # check single-4 success:       1
7944 SELECT MAX(f_int1) INTO @cur_value FROM t1;
7945 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7946         
7947 # check single-5 success:       1
7948 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7949         
7950 # check single-6 success:       1
7951 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7952         
7953 # check single-7 success:       1
7954 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7955 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7956 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7957 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7958 f_charbig = '#NULL#';
7959 INSERT INTO t1
7960 SET f_int1 = NULL , f_int2 = -@max_row,
7961 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7962 f_charbig = '#NULL#';
7963 # check null success:    1
7964         
7965 # check null-1 success:         1
7966 UPDATE t1 SET f_int1 = -@max_row
7967 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7968 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7969         
7970 # check null-2 success:         1
7971 UPDATE t1 SET f_int1 = NULL
7972 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7973 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7974         
7975 # check null-3 success:         1
7976 DELETE FROM t1
7977 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7978 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7979         
7980 # check null-4 success:         1
7981 DELETE FROM t1
7982 WHERE f_int1 = 0 AND f_int2 = 0
7983 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7984 AND f_charbig = '#NULL#';
7985 SET AUTOCOMMIT= 0;
7986 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7987 SELECT f_int1, f_int1, '', '', 'was inserted'
7988 FROM t0_template source_tab
7989 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7990         
7991 # check transactions-1 success:         1
7992 COMMIT WORK;
7993         
7994 # check transactions-2 success:         1
7995 ROLLBACK WORK;
7996         
7997 # check transactions-3 success:         1
7998 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7999 COMMIT WORK;
8000 ROLLBACK WORK;
8001         
8002 # check transactions-4 success:         1
8003 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8004 SELECT f_int1, f_int1, '', '', 'was inserted'
8005 FROM t0_template source_tab
8006 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8007         
8008 # check transactions-5 success:         1
8009 ROLLBACK WORK;
8010 Warnings:
8011 Warning 1196    Some non-transactional changed tables couldn't be rolled back
8012         
8013 # check transactions-6 success:         1
8014 # INFO: Storage engine used for t1 seems to be not transactional.
8015 COMMIT;
8016         
8017 # check transactions-7 success:         1
8018 DELETE FROM t1 WHERE f_charbig = 'was inserted';
8019 COMMIT WORK;
8020 SET @@session.sql_mode = 'traditional';
8021 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8022 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8023 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8024 '', '', 'was inserted' FROM t0_template
8025 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8026 ERROR 22012: Division by 0
8027 COMMIT;
8028         
8029 # check transactions-8 success:         1
8030 # INFO: Storage engine used for t1 seems to be unable to revert
8031 #       changes made by the failing statement.
8032 SET @@session.sql_mode = '';
8033 SET AUTOCOMMIT= 1;
8034 DELETE FROM t1 WHERE f_charbig = 'was inserted';
8035 COMMIT WORK;
8036 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8037         
8038 # check special-1 success:      1
8039 UPDATE t1 SET f_charbig = '';
8040         
8041 # check special-2 success:      1
8042 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8043 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8044 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8045 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8046 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8047 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8048 'just inserted' FROM t0_template
8049 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8050 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8051 BEGIN
8052 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8053 f_charbig = 'updated by trigger'
8054       WHERE f_int1 = new.f_int1;
8055 END|
8056 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8057 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8058 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8059         
8060 # check trigger-1 success:      1
8061 DROP TRIGGER trg_1;
8062 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8063 f_int2 = CAST(f_char1 AS SIGNED INT),
8064 f_charbig = 'just inserted'
8065    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8066 DELETE FROM t0_aux
8067 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8068 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8069 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8070 'just inserted' FROM t0_template
8071 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8072 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8073 BEGIN
8074 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8075 f_charbig = 'updated by trigger'
8076       WHERE f_int1 = new.f_int1;
8077 END|
8078 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8079 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8080 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8081         
8082 # check trigger-2 success:      1
8083 DROP TRIGGER trg_1;
8084 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8085 f_int2 = CAST(f_char1 AS SIGNED INT),
8086 f_charbig = 'just inserted'
8087    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8088 DELETE FROM t0_aux
8089 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8090 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8091 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8092 'just inserted' FROM t0_template
8093 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8094 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8095 BEGIN
8096 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8097 f_charbig = 'updated by trigger'
8098       WHERE f_int1 = new.f_int1;
8099 END|
8100 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8101 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8102         
8103 # check trigger-3 success:      1
8104 DROP TRIGGER trg_1;
8105 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8106 f_int2 = CAST(f_char1 AS SIGNED INT),
8107 f_charbig = 'just inserted'
8108    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8109 DELETE FROM t0_aux
8110 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8111 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8112 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8113 'just inserted' FROM t0_template
8114 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8115 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8116 BEGIN
8117 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8118 f_charbig = 'updated by trigger'
8119       WHERE f_int1 = - old.f_int1;
8120 END|
8121 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8122 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8123         
8124 # check trigger-4 success:      1
8125 DROP TRIGGER trg_1;
8126 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8127 f_int2 = CAST(f_char1 AS SIGNED INT),
8128 f_charbig = 'just inserted'
8129    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8130 DELETE FROM t0_aux
8131 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8132 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8133 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8134 'just inserted' FROM t0_template
8135 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8136 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8137 BEGIN
8138 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8139 f_charbig = 'updated by trigger'
8140       WHERE f_int1 = new.f_int1;
8141 END|
8142 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8143 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8144         
8145 # check trigger-5 success:      1
8146 DROP TRIGGER trg_1;
8147 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8148 f_int2 = CAST(f_char1 AS SIGNED INT),
8149 f_charbig = 'just inserted'
8150    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8151 DELETE FROM t0_aux
8152 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8153 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8154 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8155 'just inserted' FROM t0_template
8156 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8157 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8158 BEGIN
8159 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8160 f_charbig = 'updated by trigger'
8161       WHERE f_int1 = - old.f_int1;
8162 END|
8163 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8164 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8165         
8166 # check trigger-6 success:      1
8167 DROP TRIGGER trg_1;
8168 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8169 f_int2 = CAST(f_char1 AS SIGNED INT),
8170 f_charbig = 'just inserted'
8171    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8172 DELETE FROM t0_aux
8173 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8174 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8175 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8176 'just inserted' FROM t0_template
8177 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8178 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8179 BEGIN
8180 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8181 f_charbig = 'updated by trigger'
8182       WHERE f_int1 = - old.f_int1;
8183 END|
8184 DELETE FROM t0_aux
8185 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8186         
8187 # check trigger-7 success:      1
8188 DROP TRIGGER trg_1;
8189 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8190 f_int2 = CAST(f_char1 AS SIGNED INT),
8191 f_charbig = 'just inserted'
8192    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8193 DELETE FROM t0_aux
8194 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8195 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8196 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8197 'just inserted' FROM t0_template
8198 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8199 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8200 BEGIN
8201 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8202 f_charbig = 'updated by trigger'
8203       WHERE f_int1 = - old.f_int1;
8204 END|
8205 DELETE FROM t0_aux
8206 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8207         
8208 # check trigger-8 success:      1
8209 DROP TRIGGER trg_1;
8210 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8211 f_int2 = CAST(f_char1 AS SIGNED INT),
8212 f_charbig = 'just inserted'
8213    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8214 DELETE FROM t0_aux
8215 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8216 DELETE FROM t1
8217 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8218 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8219 BEGIN
8220 SET new.f_int1 = old.f_int1 + @max_row,
8221 new.f_int2 = old.f_int2 - @max_row,
8222 new.f_charbig = '####updated per update trigger####';
8223 END|
8224 UPDATE t1
8225 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8226 f_charbig = '####updated per update statement itself####';
8227         
8228 # check trigger-9 success:      1
8229 DROP TRIGGER trg_2;
8230 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8231 f_int2 = CAST(f_char1 AS SIGNED INT),
8232 f_charbig = CONCAT('===',f_char1,'===');
8233 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8234 BEGIN
8235 SET new.f_int1 = new.f_int1 + @max_row,
8236 new.f_int2 = new.f_int2 - @max_row,
8237 new.f_charbig = '####updated per update trigger####';
8238 END|
8239 UPDATE t1
8240 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8241 f_charbig = '####updated per update statement itself####';
8242         
8243 # check trigger-10 success:     1
8244 DROP TRIGGER trg_2;
8245 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8246 f_int2 = CAST(f_char1 AS SIGNED INT),
8247 f_charbig = CONCAT('===',f_char1,'===');
8248 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8249 BEGIN
8250 SET new.f_int1 = @my_max1 + @counter,
8251 new.f_int2 = @my_min2 - @counter,
8252 new.f_charbig = '####updated per insert trigger####';
8253 SET @counter = @counter + 1;
8254 END|
8255 SET @counter = 1;
8256 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8257 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8258 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8259 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8260 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8261 ORDER BY f_int1;
8262 DROP TRIGGER trg_3;
8263         
8264 # check trigger-11 success:     1
8265 DELETE FROM t1
8266 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8267 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8268 AND f_charbig = '####updated per insert trigger####';
8269 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8270 BEGIN
8271 SET new.f_int1 = @my_max1 + @counter,
8272 new.f_int2 = @my_min2 - @counter,
8273 new.f_charbig = '####updated per insert trigger####';
8274 SET @counter = @counter + 1;
8275 END|
8276 SET @counter = 1;
8277 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8278 INSERT INTO t1 (f_char1, f_char2, f_charbig)
8279 SELECT CAST(f_int1 AS CHAR),
8280 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8281 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8282 ORDER BY f_int1;
8283 DROP TRIGGER trg_3;
8284         
8285 # check trigger-12 success:     1
8286 DELETE FROM t1
8287 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8288 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8289 AND f_charbig = '####updated per insert trigger####';
8290 ANALYZE  TABLE t1;
8291 Table   Op      Msg_type        Msg_text
8292 test.t1 analyze status  OK
8293 CHECK    TABLE t1 EXTENDED;
8294 Table   Op      Msg_type        Msg_text
8295 test.t1 check   status  OK
8296 CHECKSUM TABLE t1 EXTENDED;
8297 Table   Checksum
8298 test.t1 <some_value>
8299 OPTIMIZE TABLE t1;
8300 Table   Op      Msg_type        Msg_text
8301 test.t1 optimize        status  OK
8302 # check layout success:    1
8303 REPAIR   TABLE t1 EXTENDED;
8304 Table   Op      Msg_type        Msg_text
8305 test.t1 repair  status  OK
8306 # check layout success:    1
8307 TRUNCATE t1;
8308         
8309 # check TRUNCATE success:       1
8310 # check layout success:    1
8311 # End usability test (inc/partition_check.inc)
8312 DROP TABLE t1;
8313 CREATE TABLE t1 (
8314 f_int1 INTEGER,
8315 f_int2 INTEGER,
8316 f_char1 CHAR(20),
8317 f_char2 CHAR(20),
8318 f_charbig VARCHAR(1000)
8321 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
8322 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8323 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8324 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8325 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
8326 Table   Op      Msg_type        Msg_text
8327 test.t1 analyze error   Error in list of partitions to test.t1
8328 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8329 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8330 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8331 # Start usability test (inc/partition_check.inc)
8332 create_command
8333 SHOW CREATE TABLE t1;
8334 Table   Create Table
8335 t1      CREATE TABLE `t1` (
8336   `f_int1` int(11) DEFAULT NULL,
8337   `f_int2` int(11) DEFAULT NULL,
8338   `f_char1` char(20) DEFAULT NULL,
8339   `f_char2` char(20) DEFAULT NULL,
8340   `f_charbig` varchar(1000) DEFAULT NULL
8341 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
8342 /*!50100 PARTITION BY KEY (f_int1)
8343 (PARTITION part_1 ENGINE = MyISAM,
8344  PARTITION part_2 ENGINE = MyISAM,
8345  PARTITION part_3 ENGINE = MyISAM,
8346  PARTITION part_4 ENGINE = MyISAM,
8347  PARTITION part_5 ENGINE = MyISAM) */
8349 unified filelist
8350 t1#P#part_1.MYD
8351 t1#P#part_1.MYI
8352 t1#P#part_2.MYD
8353 t1#P#part_2.MYI
8354 t1#P#part_3.MYD
8355 t1#P#part_3.MYI
8356 t1#P#part_4.MYD
8357 t1#P#part_4.MYI
8358 t1#P#part_5.MYD
8359 t1#P#part_5.MYI
8360 t1.frm
8361 t1.par
8363 # check prerequisites-1 success:    1
8364 # check COUNT(*) success:    1
8365 # check MIN/MAX(f_int1) success:    1
8366 # check MIN/MAX(f_int2) success:    1
8367 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8368 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8369 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8370 WHERE f_int1 IN (2,3);
8371 # check prerequisites-3 success:    1
8372 DELETE FROM t1 WHERE f_charbig = 'delete me';
8373 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
8374 # check read via f_int1 success: 1
8375 # check read via f_int2 success: 1
8376         
8377 # check multiple-1 success:     1
8378 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8379         
8380 # check multiple-2 success:     1
8381 INSERT INTO t1 SELECT * FROM t0_template
8382 WHERE MOD(f_int1,3) = 0;
8383         
8384 # check multiple-3 success:     1
8385 UPDATE t1 SET f_int1 = f_int1 + @max_row
8386 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8387 AND @max_row_div2 + @max_row_div4;
8388         
8389 # check multiple-4 success:     1
8390 DELETE FROM t1
8391 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8392 AND @max_row_div2 + @max_row_div4 + @max_row;
8393         
8394 # check multiple-5 success:     1
8395 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8396 INSERT INTO t1
8397 SET f_int1 = @cur_value , f_int2 = @cur_value,
8398 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8399 f_charbig = '#SINGLE#';
8400         
8401 # check single-1 success:       1
8402 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8403 INSERT INTO t1
8404 SET f_int1 = @cur_value , f_int2 = @cur_value,
8405 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8406 f_charbig = '#SINGLE#';
8407         
8408 # check single-2 success:       1
8409 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8410 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8411 UPDATE t1 SET f_int1 = @cur_value2
8412 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8413         
8414 # check single-3 success:       1
8415 SET @cur_value1= -1;
8416 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8417 UPDATE t1 SET f_int1 = @cur_value1
8418 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8419         
8420 # check single-4 success:       1
8421 SELECT MAX(f_int1) INTO @cur_value FROM t1;
8422 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8423         
8424 # check single-5 success:       1
8425 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8426         
8427 # check single-6 success:       1
8428 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8429         
8430 # check single-7 success:       1
8431 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8432 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8433 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8434 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8435 f_charbig = '#NULL#';
8436 INSERT INTO t1
8437 SET f_int1 = NULL , f_int2 = -@max_row,
8438 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8439 f_charbig = '#NULL#';
8440 # check null success:    1
8441         
8442 # check null-1 success:         1
8443 UPDATE t1 SET f_int1 = -@max_row
8444 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8445 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8446         
8447 # check null-2 success:         1
8448 UPDATE t1 SET f_int1 = NULL
8449 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8450 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8451         
8452 # check null-3 success:         1
8453 DELETE FROM t1
8454 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8455 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8456         
8457 # check null-4 success:         1
8458 DELETE FROM t1
8459 WHERE f_int1 = 0 AND f_int2 = 0
8460 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8461 AND f_charbig = '#NULL#';
8462 SET AUTOCOMMIT= 0;
8463 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8464 SELECT f_int1, f_int1, '', '', 'was inserted'
8465 FROM t0_template source_tab
8466 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8467         
8468 # check transactions-1 success:         1
8469 COMMIT WORK;
8470         
8471 # check transactions-2 success:         1
8472 ROLLBACK WORK;
8473         
8474 # check transactions-3 success:         1
8475 DELETE FROM t1 WHERE f_charbig = 'was inserted';
8476 COMMIT WORK;
8477 ROLLBACK WORK;
8478         
8479 # check transactions-4 success:         1
8480 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8481 SELECT f_int1, f_int1, '', '', 'was inserted'
8482 FROM t0_template source_tab
8483 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8484         
8485 # check transactions-5 success:         1
8486 ROLLBACK WORK;
8487 Warnings:
8488 Warning 1196    Some non-transactional changed tables couldn't be rolled back
8489         
8490 # check transactions-6 success:         1
8491 # INFO: Storage engine used for t1 seems to be not transactional.
8492 COMMIT;
8493         
8494 # check transactions-7 success:         1
8495 DELETE FROM t1 WHERE f_charbig = 'was inserted';
8496 COMMIT WORK;
8497 SET @@session.sql_mode = 'traditional';
8498 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8499 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8500 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8501 '', '', 'was inserted' FROM t0_template
8502 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8503 ERROR 22012: Division by 0
8504 COMMIT;
8505         
8506 # check transactions-8 success:         1
8507 # INFO: Storage engine used for t1 seems to be unable to revert
8508 #       changes made by the failing statement.
8509 SET @@session.sql_mode = '';
8510 SET AUTOCOMMIT= 1;
8511 DELETE FROM t1 WHERE f_charbig = 'was inserted';
8512 COMMIT WORK;
8513 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8514         
8515 # check special-1 success:      1
8516 UPDATE t1 SET f_charbig = '';
8517         
8518 # check special-2 success:      1
8519 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8520 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8521 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8522 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8523 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8524 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8525 'just inserted' FROM t0_template
8526 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8527 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8528 BEGIN
8529 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8530 f_charbig = 'updated by trigger'
8531       WHERE f_int1 = new.f_int1;
8532 END|
8533 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8534 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8535 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8536         
8537 # check trigger-1 success:      1
8538 DROP TRIGGER trg_1;
8539 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8540 f_int2 = CAST(f_char1 AS SIGNED INT),
8541 f_charbig = 'just inserted'
8542    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8543 DELETE FROM t0_aux
8544 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8545 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8546 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8547 'just inserted' FROM t0_template
8548 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8549 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8550 BEGIN
8551 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8552 f_charbig = 'updated by trigger'
8553       WHERE f_int1 = new.f_int1;
8554 END|
8555 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8556 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8557 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8558         
8559 # check trigger-2 success:      1
8560 DROP TRIGGER trg_1;
8561 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8562 f_int2 = CAST(f_char1 AS SIGNED INT),
8563 f_charbig = 'just inserted'
8564    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8565 DELETE FROM t0_aux
8566 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8567 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8568 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8569 'just inserted' FROM t0_template
8570 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8571 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8572 BEGIN
8573 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8574 f_charbig = 'updated by trigger'
8575       WHERE f_int1 = new.f_int1;
8576 END|
8577 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8578 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8579         
8580 # check trigger-3 success:      1
8581 DROP TRIGGER trg_1;
8582 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8583 f_int2 = CAST(f_char1 AS SIGNED INT),
8584 f_charbig = 'just inserted'
8585    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8586 DELETE FROM t0_aux
8587 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8588 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8589 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8590 'just inserted' FROM t0_template
8591 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8592 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8593 BEGIN
8594 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8595 f_charbig = 'updated by trigger'
8596       WHERE f_int1 = - old.f_int1;
8597 END|
8598 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8599 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8600         
8601 # check trigger-4 success:      1
8602 DROP TRIGGER trg_1;
8603 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8604 f_int2 = CAST(f_char1 AS SIGNED INT),
8605 f_charbig = 'just inserted'
8606    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8607 DELETE FROM t0_aux
8608 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8609 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8610 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8611 'just inserted' FROM t0_template
8612 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8613 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8614 BEGIN
8615 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8616 f_charbig = 'updated by trigger'
8617       WHERE f_int1 = new.f_int1;
8618 END|
8619 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8620 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8621         
8622 # check trigger-5 success:      1
8623 DROP TRIGGER trg_1;
8624 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8625 f_int2 = CAST(f_char1 AS SIGNED INT),
8626 f_charbig = 'just inserted'
8627    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8628 DELETE FROM t0_aux
8629 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8630 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8631 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8632 'just inserted' FROM t0_template
8633 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8634 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8635 BEGIN
8636 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8637 f_charbig = 'updated by trigger'
8638       WHERE f_int1 = - old.f_int1;
8639 END|
8640 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
8641 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8642         
8643 # check trigger-6 success:      1
8644 DROP TRIGGER trg_1;
8645 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8646 f_int2 = CAST(f_char1 AS SIGNED INT),
8647 f_charbig = 'just inserted'
8648    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8649 DELETE FROM t0_aux
8650 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8651 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8652 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8653 'just inserted' FROM t0_template
8654 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8655 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8656 BEGIN
8657 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8658 f_charbig = 'updated by trigger'
8659       WHERE f_int1 = - old.f_int1;
8660 END|
8661 DELETE FROM t0_aux
8662 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8663         
8664 # check trigger-7 success:      1
8665 DROP TRIGGER trg_1;
8666 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8667 f_int2 = CAST(f_char1 AS SIGNED INT),
8668 f_charbig = 'just inserted'
8669    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8670 DELETE FROM t0_aux
8671 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8672 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8673 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8674 'just inserted' FROM t0_template
8675 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8676 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8677 BEGIN
8678 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8679 f_charbig = 'updated by trigger'
8680       WHERE f_int1 = - old.f_int1;
8681 END|
8682 DELETE FROM t0_aux
8683 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8684         
8685 # check trigger-8 success:      1
8686 DROP TRIGGER trg_1;
8687 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8688 f_int2 = CAST(f_char1 AS SIGNED INT),
8689 f_charbig = 'just inserted'
8690    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8691 DELETE FROM t0_aux
8692 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8693 DELETE FROM t1
8694 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8695 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8696 BEGIN
8697 SET new.f_int1 = old.f_int1 + @max_row,
8698 new.f_int2 = old.f_int2 - @max_row,
8699 new.f_charbig = '####updated per update trigger####';
8700 END|
8701 UPDATE t1
8702 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8703 f_charbig = '####updated per update statement itself####';
8704         
8705 # check trigger-9 success:      1
8706 DROP TRIGGER trg_2;
8707 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8708 f_int2 = CAST(f_char1 AS SIGNED INT),
8709 f_charbig = CONCAT('===',f_char1,'===');
8710 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8711 BEGIN
8712 SET new.f_int1 = new.f_int1 + @max_row,
8713 new.f_int2 = new.f_int2 - @max_row,
8714 new.f_charbig = '####updated per update trigger####';
8715 END|
8716 UPDATE t1
8717 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8718 f_charbig = '####updated per update statement itself####';
8719         
8720 # check trigger-10 success:     1
8721 DROP TRIGGER trg_2;
8722 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8723 f_int2 = CAST(f_char1 AS SIGNED INT),
8724 f_charbig = CONCAT('===',f_char1,'===');
8725 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8726 BEGIN
8727 SET new.f_int1 = @my_max1 + @counter,
8728 new.f_int2 = @my_min2 - @counter,
8729 new.f_charbig = '####updated per insert trigger####';
8730 SET @counter = @counter + 1;
8731 END|
8732 SET @counter = 1;
8733 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8734 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8735 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8736 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8737 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8738 ORDER BY f_int1;
8739 DROP TRIGGER trg_3;
8740         
8741 # check trigger-11 success:     1
8742 DELETE FROM t1
8743 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8744 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8745 AND f_charbig = '####updated per insert trigger####';
8746 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8747 BEGIN
8748 SET new.f_int1 = @my_max1 + @counter,
8749 new.f_int2 = @my_min2 - @counter,
8750 new.f_charbig = '####updated per insert trigger####';
8751 SET @counter = @counter + 1;
8752 END|
8753 SET @counter = 1;
8754 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8755 INSERT INTO t1 (f_char1, f_char2, f_charbig)
8756 SELECT CAST(f_int1 AS CHAR),
8757 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8758 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8759 ORDER BY f_int1;
8760 DROP TRIGGER trg_3;
8761         
8762 # check trigger-12 success:     1
8763 DELETE FROM t1
8764 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8765 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8766 AND f_charbig = '####updated per insert trigger####';
8767 ANALYZE  TABLE t1;
8768 Table   Op      Msg_type        Msg_text
8769 test.t1 analyze status  OK
8770 CHECK    TABLE t1 EXTENDED;
8771 Table   Op      Msg_type        Msg_text
8772 test.t1 check   status  OK
8773 CHECKSUM TABLE t1 EXTENDED;
8774 Table   Checksum
8775 test.t1 <some_value>
8776 OPTIMIZE TABLE t1;
8777 Table   Op      Msg_type        Msg_text
8778 test.t1 optimize        status  OK
8779 # check layout success:    1
8780 REPAIR   TABLE t1 EXTENDED;
8781 Table   Op      Msg_type        Msg_text
8782 test.t1 repair  status  OK
8783 # check layout success:    1
8784 TRUNCATE t1;
8785         
8786 # check TRUNCATE success:       1
8787 # check layout success:    1
8788 # End usability test (inc/partition_check.inc)
8789 DROP TABLE t1;
8790 CREATE TABLE t1 (
8791 f_int1 INTEGER,
8792 f_int2 INTEGER,
8793 f_char1 CHAR(20),
8794 f_char2 CHAR(20),
8795 f_charbig VARCHAR(1000)
8798 PARTITION BY LIST(MOD(f_int1,4))
8799 (PARTITION part_3 VALUES IN (-3),
8800 PARTITION part_2 VALUES IN (-2),
8801 PARTITION part_1 VALUES IN (-1),
8802 PARTITION part_N VALUES IN (NULL),
8803 PARTITION part0 VALUES IN (0),
8804 PARTITION part1 VALUES IN (1),
8805 PARTITION part2 VALUES IN (2),
8806 PARTITION part3 VALUES IN (3));
8807 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8808 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8809 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8810 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
8811 Table   Op      Msg_type        Msg_text
8812 test.t1 analyze error   Error in list of partitions to test.t1
8813 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8814 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8815 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8816 # Start usability test (inc/partition_check.inc)
8817 create_command
8818 SHOW CREATE TABLE t1;
8819 Table   Create Table
8820 t1      CREATE TABLE `t1` (
8821   `f_int1` int(11) DEFAULT NULL,
8822   `f_int2` int(11) DEFAULT NULL,
8823   `f_char1` char(20) DEFAULT NULL,
8824   `f_char2` char(20) DEFAULT NULL,
8825   `f_charbig` varchar(1000) DEFAULT NULL
8826 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
8827 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
8828 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
8829  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
8830  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
8831  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
8832  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
8833  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
8834  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
8835  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
8837 unified filelist
8838 t1#P#part0.MYD
8839 t1#P#part0.MYI
8840 t1#P#part1.MYD
8841 t1#P#part1.MYI
8842 t1#P#part2.MYD
8843 t1#P#part2.MYI
8844 t1#P#part3.MYD
8845 t1#P#part3.MYI
8846 t1#P#part_1.MYD
8847 t1#P#part_1.MYI
8848 t1#P#part_2.MYD
8849 t1#P#part_2.MYI
8850 t1#P#part_3.MYD
8851 t1#P#part_3.MYI
8852 t1#P#part_N.MYD
8853 t1#P#part_N.MYI
8854 t1.frm
8855 t1.par
8857 # check prerequisites-1 success:    1
8858 # check COUNT(*) success:    1
8859 # check MIN/MAX(f_int1) success:    1
8860 # check MIN/MAX(f_int2) success:    1
8861 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8862 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8863 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8864 WHERE f_int1 IN (2,3);
8865 # check prerequisites-3 success:    1
8866 DELETE FROM t1 WHERE f_charbig = 'delete me';
8867 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
8868 # check read via f_int1 success: 1
8869 # check read via f_int2 success: 1
8870         
8871 # check multiple-1 success:     1
8872 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8873         
8874 # check multiple-2 success:     1
8875 INSERT INTO t1 SELECT * FROM t0_template
8876 WHERE MOD(f_int1,3) = 0;
8877         
8878 # check multiple-3 success:     1
8879 UPDATE t1 SET f_int1 = f_int1 + @max_row
8880 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8881 AND @max_row_div2 + @max_row_div4;
8882         
8883 # check multiple-4 success:     1
8884 DELETE FROM t1
8885 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8886 AND @max_row_div2 + @max_row_div4 + @max_row;
8887         
8888 # check multiple-5 success:     1
8889 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8890 INSERT INTO t1
8891 SET f_int1 = @cur_value , f_int2 = @cur_value,
8892 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8893 f_charbig = '#SINGLE#';
8894         
8895 # check single-1 success:       1
8896 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8897 INSERT INTO t1
8898 SET f_int1 = @cur_value , f_int2 = @cur_value,
8899 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8900 f_charbig = '#SINGLE#';
8901         
8902 # check single-2 success:       1
8903 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8904 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8905 UPDATE t1 SET f_int1 = @cur_value2
8906 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8907         
8908 # check single-3 success:       1
8909 SET @cur_value1= -1;
8910 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8911 UPDATE t1 SET f_int1 = @cur_value1
8912 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8913         
8914 # check single-4 success:       1
8915 SELECT MAX(f_int1) INTO @cur_value FROM t1;
8916 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8917         
8918 # check single-5 success:       1
8919 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8920         
8921 # check single-6 success:       1
8922 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8923         
8924 # check single-7 success:       1
8925 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8926 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8927 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8928 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8929 f_charbig = '#NULL#';
8930 INSERT INTO t1
8931 SET f_int1 = NULL , f_int2 = -@max_row,
8932 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8933 f_charbig = '#NULL#';
8934 # check null success:    1
8935         
8936 # check null-1 success:         1
8937 UPDATE t1 SET f_int1 = -@max_row
8938 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8939 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8940         
8941 # check null-2 success:         1
8942 UPDATE t1 SET f_int1 = NULL
8943 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8944 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8945         
8946 # check null-3 success:         1
8947 DELETE FROM t1
8948 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8949 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8950         
8951 # check null-4 success:         1
8952 DELETE FROM t1
8953 WHERE f_int1 = 0 AND f_int2 = 0
8954 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8955 AND f_charbig = '#NULL#';
8956 SET AUTOCOMMIT= 0;
8957 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8958 SELECT f_int1, f_int1, '', '', 'was inserted'
8959 FROM t0_template source_tab
8960 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8961         
8962 # check transactions-1 success:         1
8963 COMMIT WORK;
8964         
8965 # check transactions-2 success:         1
8966 ROLLBACK WORK;
8967         
8968 # check transactions-3 success:         1
8969 DELETE FROM t1 WHERE f_charbig = 'was inserted';
8970 COMMIT WORK;
8971 ROLLBACK WORK;
8972         
8973 # check transactions-4 success:         1
8974 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8975 SELECT f_int1, f_int1, '', '', 'was inserted'
8976 FROM t0_template source_tab
8977 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8978         
8979 # check transactions-5 success:         1
8980 ROLLBACK WORK;
8981 Warnings:
8982 Warning 1196    Some non-transactional changed tables couldn't be rolled back
8983         
8984 # check transactions-6 success:         1
8985 # INFO: Storage engine used for t1 seems to be not transactional.
8986 COMMIT;
8987         
8988 # check transactions-7 success:         1
8989 DELETE FROM t1 WHERE f_charbig = 'was inserted';
8990 COMMIT WORK;
8991 SET @@session.sql_mode = 'traditional';
8992 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8993 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8994 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8995 '', '', 'was inserted' FROM t0_template
8996 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8997 ERROR 22012: Division by 0
8998 COMMIT;
8999         
9000 # check transactions-8 success:         1
9001 # INFO: Storage engine used for t1 seems to be unable to revert
9002 #       changes made by the failing statement.
9003 SET @@session.sql_mode = '';
9004 SET AUTOCOMMIT= 1;
9005 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9006 COMMIT WORK;
9007 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9008         
9009 # check special-1 success:      1
9010 UPDATE t1 SET f_charbig = '';
9011         
9012 # check special-2 success:      1
9013 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9014 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9015 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9016 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9017 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9018 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9019 'just inserted' FROM t0_template
9020 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9021 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9022 BEGIN
9023 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9024 f_charbig = 'updated by trigger'
9025       WHERE f_int1 = new.f_int1;
9026 END|
9027 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9028 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9029 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9030         
9031 # check trigger-1 success:      1
9032 DROP TRIGGER trg_1;
9033 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9034 f_int2 = CAST(f_char1 AS SIGNED INT),
9035 f_charbig = 'just inserted'
9036    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9037 DELETE FROM t0_aux
9038 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9039 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9040 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9041 'just inserted' FROM t0_template
9042 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9043 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9044 BEGIN
9045 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9046 f_charbig = 'updated by trigger'
9047       WHERE f_int1 = new.f_int1;
9048 END|
9049 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9050 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9051 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9052         
9053 # check trigger-2 success:      1
9054 DROP TRIGGER trg_1;
9055 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9056 f_int2 = CAST(f_char1 AS SIGNED INT),
9057 f_charbig = 'just inserted'
9058    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9059 DELETE FROM t0_aux
9060 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9061 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9062 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9063 'just inserted' FROM t0_template
9064 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9065 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9066 BEGIN
9067 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9068 f_charbig = 'updated by trigger'
9069       WHERE f_int1 = new.f_int1;
9070 END|
9071 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9072 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9073         
9074 # check trigger-3 success:      1
9075 DROP TRIGGER trg_1;
9076 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9077 f_int2 = CAST(f_char1 AS SIGNED INT),
9078 f_charbig = 'just inserted'
9079    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9080 DELETE FROM t0_aux
9081 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9082 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9083 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9084 'just inserted' FROM t0_template
9085 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9086 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9087 BEGIN
9088 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9089 f_charbig = 'updated by trigger'
9090       WHERE f_int1 = - old.f_int1;
9091 END|
9092 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9093 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9094         
9095 # check trigger-4 success:      1
9096 DROP TRIGGER trg_1;
9097 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9098 f_int2 = CAST(f_char1 AS SIGNED INT),
9099 f_charbig = 'just inserted'
9100    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9101 DELETE FROM t0_aux
9102 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9103 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9104 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9105 'just inserted' FROM t0_template
9106 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9107 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9108 BEGIN
9109 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9110 f_charbig = 'updated by trigger'
9111       WHERE f_int1 = new.f_int1;
9112 END|
9113 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9114 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9115         
9116 # check trigger-5 success:      1
9117 DROP TRIGGER trg_1;
9118 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9119 f_int2 = CAST(f_char1 AS SIGNED INT),
9120 f_charbig = 'just inserted'
9121    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9122 DELETE FROM t0_aux
9123 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9124 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9125 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9126 'just inserted' FROM t0_template
9127 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9128 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9129 BEGIN
9130 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9131 f_charbig = 'updated by trigger'
9132       WHERE f_int1 = - old.f_int1;
9133 END|
9134 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9135 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9136         
9137 # check trigger-6 success:      1
9138 DROP TRIGGER trg_1;
9139 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9140 f_int2 = CAST(f_char1 AS SIGNED INT),
9141 f_charbig = 'just inserted'
9142    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9143 DELETE FROM t0_aux
9144 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9145 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9146 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9147 'just inserted' FROM t0_template
9148 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9149 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9150 BEGIN
9151 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9152 f_charbig = 'updated by trigger'
9153       WHERE f_int1 = - old.f_int1;
9154 END|
9155 DELETE FROM t0_aux
9156 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9157         
9158 # check trigger-7 success:      1
9159 DROP TRIGGER trg_1;
9160 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9161 f_int2 = CAST(f_char1 AS SIGNED INT),
9162 f_charbig = 'just inserted'
9163    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9164 DELETE FROM t0_aux
9165 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9166 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9167 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9168 'just inserted' FROM t0_template
9169 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9170 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9171 BEGIN
9172 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9173 f_charbig = 'updated by trigger'
9174       WHERE f_int1 = - old.f_int1;
9175 END|
9176 DELETE FROM t0_aux
9177 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9178         
9179 # check trigger-8 success:      1
9180 DROP TRIGGER trg_1;
9181 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9182 f_int2 = CAST(f_char1 AS SIGNED INT),
9183 f_charbig = 'just inserted'
9184    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9185 DELETE FROM t0_aux
9186 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9187 DELETE FROM t1
9188 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9189 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9190 BEGIN
9191 SET new.f_int1 = old.f_int1 + @max_row,
9192 new.f_int2 = old.f_int2 - @max_row,
9193 new.f_charbig = '####updated per update trigger####';
9194 END|
9195 UPDATE t1
9196 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9197 f_charbig = '####updated per update statement itself####';
9198         
9199 # check trigger-9 success:      1
9200 DROP TRIGGER trg_2;
9201 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9202 f_int2 = CAST(f_char1 AS SIGNED INT),
9203 f_charbig = CONCAT('===',f_char1,'===');
9204 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9205 BEGIN
9206 SET new.f_int1 = new.f_int1 + @max_row,
9207 new.f_int2 = new.f_int2 - @max_row,
9208 new.f_charbig = '####updated per update trigger####';
9209 END|
9210 UPDATE t1
9211 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9212 f_charbig = '####updated per update statement itself####';
9213         
9214 # check trigger-10 success:     1
9215 DROP TRIGGER trg_2;
9216 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9217 f_int2 = CAST(f_char1 AS SIGNED INT),
9218 f_charbig = CONCAT('===',f_char1,'===');
9219 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9220 BEGIN
9221 SET new.f_int1 = @my_max1 + @counter,
9222 new.f_int2 = @my_min2 - @counter,
9223 new.f_charbig = '####updated per insert trigger####';
9224 SET @counter = @counter + 1;
9225 END|
9226 SET @counter = 1;
9227 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9228 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9229 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9230 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9231 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9232 ORDER BY f_int1;
9233 DROP TRIGGER trg_3;
9234         
9235 # check trigger-11 success:     1
9236 DELETE FROM t1
9237 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9238 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9239 AND f_charbig = '####updated per insert trigger####';
9240 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9241 BEGIN
9242 SET new.f_int1 = @my_max1 + @counter,
9243 new.f_int2 = @my_min2 - @counter,
9244 new.f_charbig = '####updated per insert trigger####';
9245 SET @counter = @counter + 1;
9246 END|
9247 SET @counter = 1;
9248 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9249 INSERT INTO t1 (f_char1, f_char2, f_charbig)
9250 SELECT CAST(f_int1 AS CHAR),
9251 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9252 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9253 ORDER BY f_int1;
9254 DROP TRIGGER trg_3;
9255         
9256 # check trigger-12 success:     1
9257 DELETE FROM t1
9258 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9259 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9260 AND f_charbig = '####updated per insert trigger####';
9261 ANALYZE  TABLE t1;
9262 Table   Op      Msg_type        Msg_text
9263 test.t1 analyze status  OK
9264 CHECK    TABLE t1 EXTENDED;
9265 Table   Op      Msg_type        Msg_text
9266 test.t1 check   status  OK
9267 CHECKSUM TABLE t1 EXTENDED;
9268 Table   Checksum
9269 test.t1 <some_value>
9270 OPTIMIZE TABLE t1;
9271 Table   Op      Msg_type        Msg_text
9272 test.t1 optimize        status  OK
9273 # check layout success:    1
9274 REPAIR   TABLE t1 EXTENDED;
9275 Table   Op      Msg_type        Msg_text
9276 test.t1 repair  status  OK
9277 # check layout success:    1
9278 TRUNCATE t1;
9279         
9280 # check TRUNCATE success:       1
9281 # check layout success:    1
9282 # End usability test (inc/partition_check.inc)
9283 DROP TABLE t1;
9284 CREATE TABLE t1 (
9285 f_int1 INTEGER,
9286 f_int2 INTEGER,
9287 f_char1 CHAR(20),
9288 f_char2 CHAR(20),
9289 f_charbig VARCHAR(1000)
9292 PARTITION BY RANGE(f_int1)
9293 (PARTITION parta VALUES LESS THAN (0),
9294 PARTITION part_1 VALUES LESS THAN (5),
9295 PARTITION part_2 VALUES LESS THAN (10),
9296 PARTITION part_3 VALUES LESS THAN (10 + 5),
9297 PARTITION part_4 VALUES LESS THAN (20),
9298 PARTITION part_5 VALUES LESS THAN (2147483646));
9299 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9300 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9301 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9302 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
9303 Table   Op      Msg_type        Msg_text
9304 test.t1 analyze error   Error in list of partitions to test.t1
9305 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9306 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9307 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9308 # Start usability test (inc/partition_check.inc)
9309 create_command
9310 SHOW CREATE TABLE t1;
9311 Table   Create Table
9312 t1      CREATE TABLE `t1` (
9313   `f_int1` int(11) DEFAULT NULL,
9314   `f_int2` int(11) DEFAULT NULL,
9315   `f_char1` char(20) DEFAULT NULL,
9316   `f_char2` char(20) DEFAULT NULL,
9317   `f_charbig` varchar(1000) DEFAULT NULL
9318 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
9319 /*!50100 PARTITION BY RANGE (f_int1)
9320 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
9321  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
9322  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
9323  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
9324  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
9325  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
9327 unified filelist
9328 t1#P#part_1.MYD
9329 t1#P#part_1.MYI
9330 t1#P#part_2.MYD
9331 t1#P#part_2.MYI
9332 t1#P#part_3.MYD
9333 t1#P#part_3.MYI
9334 t1#P#part_4.MYD
9335 t1#P#part_4.MYI
9336 t1#P#part_5.MYD
9337 t1#P#part_5.MYI
9338 t1#P#parta.MYD
9339 t1#P#parta.MYI
9340 t1.frm
9341 t1.par
9343 # check prerequisites-1 success:    1
9344 # check COUNT(*) success:    1
9345 # check MIN/MAX(f_int1) success:    1
9346 # check MIN/MAX(f_int2) success:    1
9347 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9348 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9349 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9350 WHERE f_int1 IN (2,3);
9351 # check prerequisites-3 success:    1
9352 DELETE FROM t1 WHERE f_charbig = 'delete me';
9353 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
9354 # check read via f_int1 success: 1
9355 # check read via f_int2 success: 1
9356         
9357 # check multiple-1 success:     1
9358 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9359         
9360 # check multiple-2 success:     1
9361 INSERT INTO t1 SELECT * FROM t0_template
9362 WHERE MOD(f_int1,3) = 0;
9363         
9364 # check multiple-3 success:     1
9365 UPDATE t1 SET f_int1 = f_int1 + @max_row
9366 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9367 AND @max_row_div2 + @max_row_div4;
9368         
9369 # check multiple-4 success:     1
9370 DELETE FROM t1
9371 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9372 AND @max_row_div2 + @max_row_div4 + @max_row;
9373         
9374 # check multiple-5 success:     1
9375 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9376 INSERT INTO t1
9377 SET f_int1 = @cur_value , f_int2 = @cur_value,
9378 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9379 f_charbig = '#SINGLE#';
9380         
9381 # check single-1 success:       1
9382 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9383 INSERT INTO t1
9384 SET f_int1 = @cur_value , f_int2 = @cur_value,
9385 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9386 f_charbig = '#SINGLE#';
9387         
9388 # check single-2 success:       1
9389 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9390 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9391 UPDATE t1 SET f_int1 = @cur_value2
9392 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9393         
9394 # check single-3 success:       1
9395 SET @cur_value1= -1;
9396 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9397 UPDATE t1 SET f_int1 = @cur_value1
9398 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9399         
9400 # check single-4 success:       1
9401 SELECT MAX(f_int1) INTO @cur_value FROM t1;
9402 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9403         
9404 # check single-5 success:       1
9405 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9406         
9407 # check single-6 success:       1
9408 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9409 ERROR HY000: Table has no partition for value 2147483647
9410 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9411 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9412 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9413 f_charbig = '#NULL#';
9414 INSERT INTO t1
9415 SET f_int1 = NULL , f_int2 = -@max_row,
9416 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9417 f_charbig = '#NULL#';
9418 # check null success:    1
9419         
9420 # check null-1 success:         1
9421 UPDATE t1 SET f_int1 = -@max_row
9422 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9423 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9424         
9425 # check null-2 success:         1
9426 UPDATE t1 SET f_int1 = NULL
9427 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9428 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9429         
9430 # check null-3 success:         1
9431 DELETE FROM t1
9432 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9433 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9434         
9435 # check null-4 success:         1
9436 DELETE FROM t1
9437 WHERE f_int1 = 0 AND f_int2 = 0
9438 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9439 AND f_charbig = '#NULL#';
9440 SET AUTOCOMMIT= 0;
9441 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9442 SELECT f_int1, f_int1, '', '', 'was inserted'
9443 FROM t0_template source_tab
9444 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9445         
9446 # check transactions-1 success:         1
9447 COMMIT WORK;
9448         
9449 # check transactions-2 success:         1
9450 ROLLBACK WORK;
9451         
9452 # check transactions-3 success:         1
9453 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9454 COMMIT WORK;
9455 ROLLBACK WORK;
9456         
9457 # check transactions-4 success:         1
9458 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9459 SELECT f_int1, f_int1, '', '', 'was inserted'
9460 FROM t0_template source_tab
9461 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9462         
9463 # check transactions-5 success:         1
9464 ROLLBACK WORK;
9465 Warnings:
9466 Warning 1196    Some non-transactional changed tables couldn't be rolled back
9467         
9468 # check transactions-6 success:         1
9469 # INFO: Storage engine used for t1 seems to be not transactional.
9470 COMMIT;
9471         
9472 # check transactions-7 success:         1
9473 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9474 COMMIT WORK;
9475 SET @@session.sql_mode = 'traditional';
9476 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9477 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9478 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9479 '', '', 'was inserted' FROM t0_template
9480 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9481 ERROR 22012: Division by 0
9482 COMMIT;
9483         
9484 # check transactions-8 success:         1
9485 # INFO: Storage engine used for t1 seems to be unable to revert
9486 #       changes made by the failing statement.
9487 SET @@session.sql_mode = '';
9488 SET AUTOCOMMIT= 1;
9489 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9490 COMMIT WORK;
9491 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9492         
9493 # check special-1 success:      1
9494 UPDATE t1 SET f_charbig = '';
9495         
9496 # check special-2 success:      1
9497 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9498 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9499 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9500 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9501 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9502 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9503 'just inserted' FROM t0_template
9504 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9505 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9506 BEGIN
9507 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9508 f_charbig = 'updated by trigger'
9509       WHERE f_int1 = new.f_int1;
9510 END|
9511 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9512 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9513 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9514         
9515 # check trigger-1 success:      1
9516 DROP TRIGGER trg_1;
9517 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9518 f_int2 = CAST(f_char1 AS SIGNED INT),
9519 f_charbig = 'just inserted'
9520    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9521 DELETE FROM t0_aux
9522 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9523 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9524 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9525 'just inserted' FROM t0_template
9526 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9527 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9528 BEGIN
9529 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9530 f_charbig = 'updated by trigger'
9531       WHERE f_int1 = new.f_int1;
9532 END|
9533 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9534 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9535 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9536         
9537 # check trigger-2 success:      1
9538 DROP TRIGGER trg_1;
9539 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9540 f_int2 = CAST(f_char1 AS SIGNED INT),
9541 f_charbig = 'just inserted'
9542    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9543 DELETE FROM t0_aux
9544 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9545 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9546 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9547 'just inserted' FROM t0_template
9548 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9549 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9550 BEGIN
9551 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9552 f_charbig = 'updated by trigger'
9553       WHERE f_int1 = new.f_int1;
9554 END|
9555 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9556 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9557         
9558 # check trigger-3 success:      1
9559 DROP TRIGGER trg_1;
9560 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9561 f_int2 = CAST(f_char1 AS SIGNED INT),
9562 f_charbig = 'just inserted'
9563    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9564 DELETE FROM t0_aux
9565 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9566 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9567 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9568 'just inserted' FROM t0_template
9569 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9570 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9571 BEGIN
9572 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9573 f_charbig = 'updated by trigger'
9574       WHERE f_int1 = - old.f_int1;
9575 END|
9576 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9577 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9578         
9579 # check trigger-4 success:      1
9580 DROP TRIGGER trg_1;
9581 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9582 f_int2 = CAST(f_char1 AS SIGNED INT),
9583 f_charbig = 'just inserted'
9584    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9585 DELETE FROM t0_aux
9586 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9587 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9588 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9589 'just inserted' FROM t0_template
9590 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9591 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9592 BEGIN
9593 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9594 f_charbig = 'updated by trigger'
9595       WHERE f_int1 = new.f_int1;
9596 END|
9597 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9598 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9599         
9600 # check trigger-5 success:      1
9601 DROP TRIGGER trg_1;
9602 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9603 f_int2 = CAST(f_char1 AS SIGNED INT),
9604 f_charbig = 'just inserted'
9605    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9606 DELETE FROM t0_aux
9607 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9608 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9609 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9610 'just inserted' FROM t0_template
9611 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9612 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9613 BEGIN
9614 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9615 f_charbig = 'updated by trigger'
9616       WHERE f_int1 = - old.f_int1;
9617 END|
9618 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
9619 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9620         
9621 # check trigger-6 success:      1
9622 DROP TRIGGER trg_1;
9623 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9624 f_int2 = CAST(f_char1 AS SIGNED INT),
9625 f_charbig = 'just inserted'
9626    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9627 DELETE FROM t0_aux
9628 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9629 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9630 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9631 'just inserted' FROM t0_template
9632 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9633 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9634 BEGIN
9635 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9636 f_charbig = 'updated by trigger'
9637       WHERE f_int1 = - old.f_int1;
9638 END|
9639 DELETE FROM t0_aux
9640 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9641         
9642 # check trigger-7 success:      1
9643 DROP TRIGGER trg_1;
9644 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9645 f_int2 = CAST(f_char1 AS SIGNED INT),
9646 f_charbig = 'just inserted'
9647    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9648 DELETE FROM t0_aux
9649 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9650 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9651 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9652 'just inserted' FROM t0_template
9653 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9654 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9655 BEGIN
9656 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9657 f_charbig = 'updated by trigger'
9658       WHERE f_int1 = - old.f_int1;
9659 END|
9660 DELETE FROM t0_aux
9661 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9662         
9663 # check trigger-8 success:      1
9664 DROP TRIGGER trg_1;
9665 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9666 f_int2 = CAST(f_char1 AS SIGNED INT),
9667 f_charbig = 'just inserted'
9668    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9669 DELETE FROM t0_aux
9670 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9671 DELETE FROM t1
9672 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9673 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9674 BEGIN
9675 SET new.f_int1 = old.f_int1 + @max_row,
9676 new.f_int2 = old.f_int2 - @max_row,
9677 new.f_charbig = '####updated per update trigger####';
9678 END|
9679 UPDATE t1
9680 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9681 f_charbig = '####updated per update statement itself####';
9682         
9683 # check trigger-9 success:      1
9684 DROP TRIGGER trg_2;
9685 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9686 f_int2 = CAST(f_char1 AS SIGNED INT),
9687 f_charbig = CONCAT('===',f_char1,'===');
9688 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9689 BEGIN
9690 SET new.f_int1 = new.f_int1 + @max_row,
9691 new.f_int2 = new.f_int2 - @max_row,
9692 new.f_charbig = '####updated per update trigger####';
9693 END|
9694 UPDATE t1
9695 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9696 f_charbig = '####updated per update statement itself####';
9697         
9698 # check trigger-10 success:     1
9699 DROP TRIGGER trg_2;
9700 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9701 f_int2 = CAST(f_char1 AS SIGNED INT),
9702 f_charbig = CONCAT('===',f_char1,'===');
9703 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9704 BEGIN
9705 SET new.f_int1 = @my_max1 + @counter,
9706 new.f_int2 = @my_min2 - @counter,
9707 new.f_charbig = '####updated per insert trigger####';
9708 SET @counter = @counter + 1;
9709 END|
9710 SET @counter = 1;
9711 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9712 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9713 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9714 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9715 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9716 ORDER BY f_int1;
9717 DROP TRIGGER trg_3;
9718         
9719 # check trigger-11 success:     1
9720 DELETE FROM t1
9721 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9722 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9723 AND f_charbig = '####updated per insert trigger####';
9724 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9725 BEGIN
9726 SET new.f_int1 = @my_max1 + @counter,
9727 new.f_int2 = @my_min2 - @counter,
9728 new.f_charbig = '####updated per insert trigger####';
9729 SET @counter = @counter + 1;
9730 END|
9731 SET @counter = 1;
9732 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9733 INSERT INTO t1 (f_char1, f_char2, f_charbig)
9734 SELECT CAST(f_int1 AS CHAR),
9735 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9736 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9737 ORDER BY f_int1;
9738 DROP TRIGGER trg_3;
9739         
9740 # check trigger-12 success:     1
9741 DELETE FROM t1
9742 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9743 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9744 AND f_charbig = '####updated per insert trigger####';
9745 ANALYZE  TABLE t1;
9746 Table   Op      Msg_type        Msg_text
9747 test.t1 analyze status  OK
9748 CHECK    TABLE t1 EXTENDED;
9749 Table   Op      Msg_type        Msg_text
9750 test.t1 check   status  OK
9751 CHECKSUM TABLE t1 EXTENDED;
9752 Table   Checksum
9753 test.t1 <some_value>
9754 OPTIMIZE TABLE t1;
9755 Table   Op      Msg_type        Msg_text
9756 test.t1 optimize        status  OK
9757 # check layout success:    1
9758 REPAIR   TABLE t1 EXTENDED;
9759 Table   Op      Msg_type        Msg_text
9760 test.t1 repair  status  OK
9761 # check layout success:    1
9762 TRUNCATE t1;
9763         
9764 # check TRUNCATE success:       1
9765 # check layout success:    1
9766 # End usability test (inc/partition_check.inc)
9767 DROP TABLE t1;
9768 CREATE TABLE t1 (
9769 f_int1 INTEGER,
9770 f_int2 INTEGER,
9771 f_char1 CHAR(20),
9772 f_char2 CHAR(20),
9773 f_charbig VARCHAR(1000)
9776 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
9777 (PARTITION part_1 VALUES LESS THAN (0),
9778 PARTITION part_2 VALUES LESS THAN (5),
9779 PARTITION part_3 VALUES LESS THAN (10),
9780 PARTITION part_4 VALUES LESS THAN (2147483646));
9781 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9782 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9783 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9784 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
9785 Table   Op      Msg_type        Msg_text
9786 test.t1 analyze error   Error in list of partitions to test.t1
9787 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9788 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9789 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9790 # Start usability test (inc/partition_check.inc)
9791 create_command
9792 SHOW CREATE TABLE t1;
9793 Table   Create Table
9794 t1      CREATE TABLE `t1` (
9795   `f_int1` int(11) DEFAULT NULL,
9796   `f_int2` int(11) DEFAULT NULL,
9797   `f_char1` char(20) DEFAULT NULL,
9798   `f_char2` char(20) DEFAULT NULL,
9799   `f_charbig` varchar(1000) DEFAULT NULL
9800 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
9801 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
9802 SUBPARTITION BY HASH (f_int1)
9803 SUBPARTITIONS 2
9804 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
9805  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
9806  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
9807  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
9809 unified filelist
9810 t1#P#part_1#SP#part_1sp0.MYD
9811 t1#P#part_1#SP#part_1sp0.MYI
9812 t1#P#part_1#SP#part_1sp1.MYD
9813 t1#P#part_1#SP#part_1sp1.MYI
9814 t1#P#part_2#SP#part_2sp0.MYD
9815 t1#P#part_2#SP#part_2sp0.MYI
9816 t1#P#part_2#SP#part_2sp1.MYD
9817 t1#P#part_2#SP#part_2sp1.MYI
9818 t1#P#part_3#SP#part_3sp0.MYD
9819 t1#P#part_3#SP#part_3sp0.MYI
9820 t1#P#part_3#SP#part_3sp1.MYD
9821 t1#P#part_3#SP#part_3sp1.MYI
9822 t1#P#part_4#SP#part_4sp0.MYD
9823 t1#P#part_4#SP#part_4sp0.MYI
9824 t1#P#part_4#SP#part_4sp1.MYD
9825 t1#P#part_4#SP#part_4sp1.MYI
9826 t1.frm
9827 t1.par
9829 # check prerequisites-1 success:    1
9830 # check COUNT(*) success:    1
9831 # check MIN/MAX(f_int1) success:    1
9832 # check MIN/MAX(f_int2) success:    1
9833 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9834 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9835 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9836 WHERE f_int1 IN (2,3);
9837 # check prerequisites-3 success:    1
9838 DELETE FROM t1 WHERE f_charbig = 'delete me';
9839 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
9840 # check read via f_int1 success: 1
9841 # check read via f_int2 success: 1
9842         
9843 # check multiple-1 success:     1
9844 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9845         
9846 # check multiple-2 success:     1
9847 INSERT INTO t1 SELECT * FROM t0_template
9848 WHERE MOD(f_int1,3) = 0;
9849         
9850 # check multiple-3 success:     1
9851 UPDATE t1 SET f_int1 = f_int1 + @max_row
9852 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9853 AND @max_row_div2 + @max_row_div4;
9854         
9855 # check multiple-4 success:     1
9856 DELETE FROM t1
9857 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9858 AND @max_row_div2 + @max_row_div4 + @max_row;
9859         
9860 # check multiple-5 success:     1
9861 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9862 INSERT INTO t1
9863 SET f_int1 = @cur_value , f_int2 = @cur_value,
9864 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9865 f_charbig = '#SINGLE#';
9866         
9867 # check single-1 success:       1
9868 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9869 INSERT INTO t1
9870 SET f_int1 = @cur_value , f_int2 = @cur_value,
9871 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9872 f_charbig = '#SINGLE#';
9873         
9874 # check single-2 success:       1
9875 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9876 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9877 UPDATE t1 SET f_int1 = @cur_value2
9878 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9879         
9880 # check single-3 success:       1
9881 SET @cur_value1= -1;
9882 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9883 UPDATE t1 SET f_int1 = @cur_value1
9884 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9885         
9886 # check single-4 success:       1
9887 SELECT MAX(f_int1) INTO @cur_value FROM t1;
9888 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9889         
9890 # check single-5 success:       1
9891 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9892         
9893 # check single-6 success:       1
9894 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9895         
9896 # check single-7 success:       1
9897 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
9898 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9899 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9900 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9901 f_charbig = '#NULL#';
9902 INSERT INTO t1
9903 SET f_int1 = NULL , f_int2 = -@max_row,
9904 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9905 f_charbig = '#NULL#';
9906 # check null success:    1
9907         
9908 # check null-1 success:         1
9909 UPDATE t1 SET f_int1 = -@max_row
9910 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9911 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9912         
9913 # check null-2 success:         1
9914 UPDATE t1 SET f_int1 = NULL
9915 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9916 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9917         
9918 # check null-3 success:         1
9919 DELETE FROM t1
9920 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9921 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9922         
9923 # check null-4 success:         1
9924 DELETE FROM t1
9925 WHERE f_int1 = 0 AND f_int2 = 0
9926 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9927 AND f_charbig = '#NULL#';
9928 SET AUTOCOMMIT= 0;
9929 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9930 SELECT f_int1, f_int1, '', '', 'was inserted'
9931 FROM t0_template source_tab
9932 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9933         
9934 # check transactions-1 success:         1
9935 COMMIT WORK;
9936         
9937 # check transactions-2 success:         1
9938 ROLLBACK WORK;
9939         
9940 # check transactions-3 success:         1
9941 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9942 COMMIT WORK;
9943 ROLLBACK WORK;
9944         
9945 # check transactions-4 success:         1
9946 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9947 SELECT f_int1, f_int1, '', '', 'was inserted'
9948 FROM t0_template source_tab
9949 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9950         
9951 # check transactions-5 success:         1
9952 ROLLBACK WORK;
9953 Warnings:
9954 Warning 1196    Some non-transactional changed tables couldn't be rolled back
9955         
9956 # check transactions-6 success:         1
9957 # INFO: Storage engine used for t1 seems to be not transactional.
9958 COMMIT;
9959         
9960 # check transactions-7 success:         1
9961 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9962 COMMIT WORK;
9963 SET @@session.sql_mode = 'traditional';
9964 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9965 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9966 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9967 '', '', 'was inserted' FROM t0_template
9968 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9969 ERROR 22012: Division by 0
9970 COMMIT;
9971         
9972 # check transactions-8 success:         1
9973 # INFO: Storage engine used for t1 seems to be unable to revert
9974 #       changes made by the failing statement.
9975 SET @@session.sql_mode = '';
9976 SET AUTOCOMMIT= 1;
9977 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9978 COMMIT WORK;
9979 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9980         
9981 # check special-1 success:      1
9982 UPDATE t1 SET f_charbig = '';
9983         
9984 # check special-2 success:      1
9985 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9986 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9987 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9988 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9989 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9990 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9991 'just inserted' FROM t0_template
9992 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9993 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9994 BEGIN
9995 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9996 f_charbig = 'updated by trigger'
9997       WHERE f_int1 = new.f_int1;
9998 END|
9999 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10000 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10001 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10002         
10003 # check trigger-1 success:      1
10004 DROP TRIGGER trg_1;
10005 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10006 f_int2 = CAST(f_char1 AS SIGNED INT),
10007 f_charbig = 'just inserted'
10008    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10009 DELETE FROM t0_aux
10010 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10011 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10012 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10013 'just inserted' FROM t0_template
10014 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10015 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10016 BEGIN
10017 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10018 f_charbig = 'updated by trigger'
10019       WHERE f_int1 = new.f_int1;
10020 END|
10021 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10022 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10023 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10024         
10025 # check trigger-2 success:      1
10026 DROP TRIGGER trg_1;
10027 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10028 f_int2 = CAST(f_char1 AS SIGNED INT),
10029 f_charbig = 'just inserted'
10030    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10031 DELETE FROM t0_aux
10032 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10033 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10034 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10035 'just inserted' FROM t0_template
10036 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10037 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10038 BEGIN
10039 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10040 f_charbig = 'updated by trigger'
10041       WHERE f_int1 = new.f_int1;
10042 END|
10043 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10044 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10045         
10046 # check trigger-3 success:      1
10047 DROP TRIGGER trg_1;
10048 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10049 f_int2 = CAST(f_char1 AS SIGNED INT),
10050 f_charbig = 'just inserted'
10051    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10052 DELETE FROM t0_aux
10053 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10054 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10055 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10056 'just inserted' FROM t0_template
10057 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10058 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10059 BEGIN
10060 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10061 f_charbig = 'updated by trigger'
10062       WHERE f_int1 = - old.f_int1;
10063 END|
10064 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10065 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10066         
10067 # check trigger-4 success:      1
10068 DROP TRIGGER trg_1;
10069 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10070 f_int2 = CAST(f_char1 AS SIGNED INT),
10071 f_charbig = 'just inserted'
10072    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10073 DELETE FROM t0_aux
10074 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10075 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10076 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10077 'just inserted' FROM t0_template
10078 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10079 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10080 BEGIN
10081 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10082 f_charbig = 'updated by trigger'
10083       WHERE f_int1 = new.f_int1;
10084 END|
10085 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10086 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10087         
10088 # check trigger-5 success:      1
10089 DROP TRIGGER trg_1;
10090 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10091 f_int2 = CAST(f_char1 AS SIGNED INT),
10092 f_charbig = 'just inserted'
10093    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10094 DELETE FROM t0_aux
10095 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10096 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10097 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10098 'just inserted' FROM t0_template
10099 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10100 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10101 BEGIN
10102 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10103 f_charbig = 'updated by trigger'
10104       WHERE f_int1 = - old.f_int1;
10105 END|
10106 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10107 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10108         
10109 # check trigger-6 success:      1
10110 DROP TRIGGER trg_1;
10111 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10112 f_int2 = CAST(f_char1 AS SIGNED INT),
10113 f_charbig = 'just inserted'
10114    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10115 DELETE FROM t0_aux
10116 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10117 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10118 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10119 'just inserted' FROM t0_template
10120 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10121 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10122 BEGIN
10123 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10124 f_charbig = 'updated by trigger'
10125       WHERE f_int1 = - old.f_int1;
10126 END|
10127 DELETE FROM t0_aux
10128 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10129         
10130 # check trigger-7 success:      1
10131 DROP TRIGGER trg_1;
10132 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10133 f_int2 = CAST(f_char1 AS SIGNED INT),
10134 f_charbig = 'just inserted'
10135    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10136 DELETE FROM t0_aux
10137 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10138 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10139 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10140 'just inserted' FROM t0_template
10141 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10142 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10143 BEGIN
10144 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10145 f_charbig = 'updated by trigger'
10146       WHERE f_int1 = - old.f_int1;
10147 END|
10148 DELETE FROM t0_aux
10149 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10150         
10151 # check trigger-8 success:      1
10152 DROP TRIGGER trg_1;
10153 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10154 f_int2 = CAST(f_char1 AS SIGNED INT),
10155 f_charbig = 'just inserted'
10156    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10157 DELETE FROM t0_aux
10158 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10159 DELETE FROM t1
10160 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10161 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10162 BEGIN
10163 SET new.f_int1 = old.f_int1 + @max_row,
10164 new.f_int2 = old.f_int2 - @max_row,
10165 new.f_charbig = '####updated per update trigger####';
10166 END|
10167 UPDATE t1
10168 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10169 f_charbig = '####updated per update statement itself####';
10170         
10171 # check trigger-9 success:      1
10172 DROP TRIGGER trg_2;
10173 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10174 f_int2 = CAST(f_char1 AS SIGNED INT),
10175 f_charbig = CONCAT('===',f_char1,'===');
10176 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10177 BEGIN
10178 SET new.f_int1 = new.f_int1 + @max_row,
10179 new.f_int2 = new.f_int2 - @max_row,
10180 new.f_charbig = '####updated per update trigger####';
10181 END|
10182 UPDATE t1
10183 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10184 f_charbig = '####updated per update statement itself####';
10185         
10186 # check trigger-10 success:     1
10187 DROP TRIGGER trg_2;
10188 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10189 f_int2 = CAST(f_char1 AS SIGNED INT),
10190 f_charbig = CONCAT('===',f_char1,'===');
10191 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10192 BEGIN
10193 SET new.f_int1 = @my_max1 + @counter,
10194 new.f_int2 = @my_min2 - @counter,
10195 new.f_charbig = '####updated per insert trigger####';
10196 SET @counter = @counter + 1;
10197 END|
10198 SET @counter = 1;
10199 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10200 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10201 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10202 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10203 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10204 ORDER BY f_int1;
10205 DROP TRIGGER trg_3;
10206         
10207 # check trigger-11 success:     1
10208 DELETE FROM t1
10209 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10210 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10211 AND f_charbig = '####updated per insert trigger####';
10212 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10213 BEGIN
10214 SET new.f_int1 = @my_max1 + @counter,
10215 new.f_int2 = @my_min2 - @counter,
10216 new.f_charbig = '####updated per insert trigger####';
10217 SET @counter = @counter + 1;
10218 END|
10219 SET @counter = 1;
10220 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10221 INSERT INTO t1 (f_char1, f_char2, f_charbig)
10222 SELECT CAST(f_int1 AS CHAR),
10223 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10224 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10225 ORDER BY f_int1;
10226 DROP TRIGGER trg_3;
10227         
10228 # check trigger-12 success:     1
10229 DELETE FROM t1
10230 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10231 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10232 AND f_charbig = '####updated per insert trigger####';
10233 ANALYZE  TABLE t1;
10234 Table   Op      Msg_type        Msg_text
10235 test.t1 analyze status  OK
10236 CHECK    TABLE t1 EXTENDED;
10237 Table   Op      Msg_type        Msg_text
10238 test.t1 check   status  OK
10239 CHECKSUM TABLE t1 EXTENDED;
10240 Table   Checksum
10241 test.t1 <some_value>
10242 OPTIMIZE TABLE t1;
10243 Table   Op      Msg_type        Msg_text
10244 test.t1 optimize        status  OK
10245 # check layout success:    1
10246 REPAIR   TABLE t1 EXTENDED;
10247 Table   Op      Msg_type        Msg_text
10248 test.t1 repair  status  OK
10249 # check layout success:    1
10250 TRUNCATE t1;
10251         
10252 # check TRUNCATE success:       1
10253 # check layout success:    1
10254 # End usability test (inc/partition_check.inc)
10255 DROP TABLE t1;
10256 CREATE TABLE t1 (
10257 f_int1 INTEGER,
10258 f_int2 INTEGER,
10259 f_char1 CHAR(20),
10260 f_char2 CHAR(20),
10261 f_charbig VARCHAR(1000)
10264 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
10265 (PARTITION part_1 VALUES LESS THAN (0)
10266 (SUBPARTITION subpart11, SUBPARTITION subpart12),
10267 PARTITION part_2 VALUES LESS THAN (5)
10268 (SUBPARTITION subpart21, SUBPARTITION subpart22),
10269 PARTITION part_3 VALUES LESS THAN (10)
10270 (SUBPARTITION subpart31, SUBPARTITION subpart32),
10271 PARTITION part_4 VALUES LESS THAN (2147483646)
10272 (SUBPARTITION subpart41, SUBPARTITION subpart42));
10273 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10274 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10275 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10276 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
10277 Table   Op      Msg_type        Msg_text
10278 test.t1 analyze error   Error in list of partitions to test.t1
10279 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10280 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10281 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10282 # Start usability test (inc/partition_check.inc)
10283 create_command
10284 SHOW CREATE TABLE t1;
10285 Table   Create Table
10286 t1      CREATE TABLE `t1` (
10287   `f_int1` int(11) DEFAULT NULL,
10288   `f_int2` int(11) DEFAULT NULL,
10289   `f_char1` char(20) DEFAULT NULL,
10290   `f_char2` char(20) DEFAULT NULL,
10291   `f_charbig` varchar(1000) DEFAULT NULL
10292 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
10293 /*!50100 PARTITION BY RANGE (f_int1)
10294 SUBPARTITION BY KEY (f_int1)
10295 (PARTITION part_1 VALUES LESS THAN (0)
10296  (SUBPARTITION subpart11 ENGINE = MyISAM,
10297   SUBPARTITION subpart12 ENGINE = MyISAM),
10298  PARTITION part_2 VALUES LESS THAN (5)
10299  (SUBPARTITION subpart21 ENGINE = MyISAM,
10300   SUBPARTITION subpart22 ENGINE = MyISAM),
10301  PARTITION part_3 VALUES LESS THAN (10)
10302  (SUBPARTITION subpart31 ENGINE = MyISAM,
10303   SUBPARTITION subpart32 ENGINE = MyISAM),
10304  PARTITION part_4 VALUES LESS THAN (2147483646)
10305  (SUBPARTITION subpart41 ENGINE = MyISAM,
10306   SUBPARTITION subpart42 ENGINE = MyISAM)) */
10308 unified filelist
10309 t1#P#part_1#SP#subpart11.MYD
10310 t1#P#part_1#SP#subpart11.MYI
10311 t1#P#part_1#SP#subpart12.MYD
10312 t1#P#part_1#SP#subpart12.MYI
10313 t1#P#part_2#SP#subpart21.MYD
10314 t1#P#part_2#SP#subpart21.MYI
10315 t1#P#part_2#SP#subpart22.MYD
10316 t1#P#part_2#SP#subpart22.MYI
10317 t1#P#part_3#SP#subpart31.MYD
10318 t1#P#part_3#SP#subpart31.MYI
10319 t1#P#part_3#SP#subpart32.MYD
10320 t1#P#part_3#SP#subpart32.MYI
10321 t1#P#part_4#SP#subpart41.MYD
10322 t1#P#part_4#SP#subpart41.MYI
10323 t1#P#part_4#SP#subpart42.MYD
10324 t1#P#part_4#SP#subpart42.MYI
10325 t1.frm
10326 t1.par
10328 # check prerequisites-1 success:    1
10329 # check COUNT(*) success:    1
10330 # check MIN/MAX(f_int1) success:    1
10331 # check MIN/MAX(f_int2) success:    1
10332 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10333 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10334 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10335 WHERE f_int1 IN (2,3);
10336 # check prerequisites-3 success:    1
10337 DELETE FROM t1 WHERE f_charbig = 'delete me';
10338 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
10339 # check read via f_int1 success: 1
10340 # check read via f_int2 success: 1
10341         
10342 # check multiple-1 success:     1
10343 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10344         
10345 # check multiple-2 success:     1
10346 INSERT INTO t1 SELECT * FROM t0_template
10347 WHERE MOD(f_int1,3) = 0;
10348         
10349 # check multiple-3 success:     1
10350 UPDATE t1 SET f_int1 = f_int1 + @max_row
10351 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10352 AND @max_row_div2 + @max_row_div4;
10353         
10354 # check multiple-4 success:     1
10355 DELETE FROM t1
10356 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10357 AND @max_row_div2 + @max_row_div4 + @max_row;
10358         
10359 # check multiple-5 success:     1
10360 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10361 INSERT INTO t1
10362 SET f_int1 = @cur_value , f_int2 = @cur_value,
10363 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10364 f_charbig = '#SINGLE#';
10365         
10366 # check single-1 success:       1
10367 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10368 INSERT INTO t1
10369 SET f_int1 = @cur_value , f_int2 = @cur_value,
10370 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10371 f_charbig = '#SINGLE#';
10372         
10373 # check single-2 success:       1
10374 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10375 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10376 UPDATE t1 SET f_int1 = @cur_value2
10377 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10378         
10379 # check single-3 success:       1
10380 SET @cur_value1= -1;
10381 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10382 UPDATE t1 SET f_int1 = @cur_value1
10383 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10384         
10385 # check single-4 success:       1
10386 SELECT MAX(f_int1) INTO @cur_value FROM t1;
10387 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10388         
10389 # check single-5 success:       1
10390 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10391         
10392 # check single-6 success:       1
10393 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10394 ERROR HY000: Table has no partition for value 2147483647
10395 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10396 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10397 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10398 f_charbig = '#NULL#';
10399 INSERT INTO t1
10400 SET f_int1 = NULL , f_int2 = -@max_row,
10401 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10402 f_charbig = '#NULL#';
10403 # check null success:    1
10404         
10405 # check null-1 success:         1
10406 UPDATE t1 SET f_int1 = -@max_row
10407 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10408 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10409         
10410 # check null-2 success:         1
10411 UPDATE t1 SET f_int1 = NULL
10412 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10413 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10414         
10415 # check null-3 success:         1
10416 DELETE FROM t1
10417 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10418 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10419         
10420 # check null-4 success:         1
10421 DELETE FROM t1
10422 WHERE f_int1 = 0 AND f_int2 = 0
10423 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10424 AND f_charbig = '#NULL#';
10425 SET AUTOCOMMIT= 0;
10426 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10427 SELECT f_int1, f_int1, '', '', 'was inserted'
10428 FROM t0_template source_tab
10429 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10430         
10431 # check transactions-1 success:         1
10432 COMMIT WORK;
10433         
10434 # check transactions-2 success:         1
10435 ROLLBACK WORK;
10436         
10437 # check transactions-3 success:         1
10438 DELETE FROM t1 WHERE f_charbig = 'was inserted';
10439 COMMIT WORK;
10440 ROLLBACK WORK;
10441         
10442 # check transactions-4 success:         1
10443 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10444 SELECT f_int1, f_int1, '', '', 'was inserted'
10445 FROM t0_template source_tab
10446 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10447         
10448 # check transactions-5 success:         1
10449 ROLLBACK WORK;
10450 Warnings:
10451 Warning 1196    Some non-transactional changed tables couldn't be rolled back
10452         
10453 # check transactions-6 success:         1
10454 # INFO: Storage engine used for t1 seems to be not transactional.
10455 COMMIT;
10456         
10457 # check transactions-7 success:         1
10458 DELETE FROM t1 WHERE f_charbig = 'was inserted';
10459 COMMIT WORK;
10460 SET @@session.sql_mode = 'traditional';
10461 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10462 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10463 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10464 '', '', 'was inserted' FROM t0_template
10465 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10466 ERROR 22012: Division by 0
10467 COMMIT;
10468         
10469 # check transactions-8 success:         1
10470 # INFO: Storage engine used for t1 seems to be unable to revert
10471 #       changes made by the failing statement.
10472 SET @@session.sql_mode = '';
10473 SET AUTOCOMMIT= 1;
10474 DELETE FROM t1 WHERE f_charbig = 'was inserted';
10475 COMMIT WORK;
10476 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10477         
10478 # check special-1 success:      1
10479 UPDATE t1 SET f_charbig = '';
10480         
10481 # check special-2 success:      1
10482 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10483 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10484 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10485 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10486 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10487 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10488 'just inserted' FROM t0_template
10489 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10490 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10491 BEGIN
10492 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10493 f_charbig = 'updated by trigger'
10494       WHERE f_int1 = new.f_int1;
10495 END|
10496 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10497 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10498 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10499         
10500 # check trigger-1 success:      1
10501 DROP TRIGGER trg_1;
10502 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10503 f_int2 = CAST(f_char1 AS SIGNED INT),
10504 f_charbig = 'just inserted'
10505    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10506 DELETE FROM t0_aux
10507 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10508 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10509 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10510 'just inserted' FROM t0_template
10511 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10512 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10513 BEGIN
10514 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10515 f_charbig = 'updated by trigger'
10516       WHERE f_int1 = new.f_int1;
10517 END|
10518 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10519 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10520 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10521         
10522 # check trigger-2 success:      1
10523 DROP TRIGGER trg_1;
10524 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10525 f_int2 = CAST(f_char1 AS SIGNED INT),
10526 f_charbig = 'just inserted'
10527    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10528 DELETE FROM t0_aux
10529 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10530 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10531 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10532 'just inserted' FROM t0_template
10533 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10534 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10535 BEGIN
10536 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10537 f_charbig = 'updated by trigger'
10538       WHERE f_int1 = new.f_int1;
10539 END|
10540 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10541 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10542         
10543 # check trigger-3 success:      1
10544 DROP TRIGGER trg_1;
10545 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10546 f_int2 = CAST(f_char1 AS SIGNED INT),
10547 f_charbig = 'just inserted'
10548    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10549 DELETE FROM t0_aux
10550 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10551 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10552 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10553 'just inserted' FROM t0_template
10554 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10555 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10556 BEGIN
10557 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10558 f_charbig = 'updated by trigger'
10559       WHERE f_int1 = - old.f_int1;
10560 END|
10561 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10562 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10563         
10564 # check trigger-4 success:      1
10565 DROP TRIGGER trg_1;
10566 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10567 f_int2 = CAST(f_char1 AS SIGNED INT),
10568 f_charbig = 'just inserted'
10569    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10570 DELETE FROM t0_aux
10571 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10572 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10573 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10574 'just inserted' FROM t0_template
10575 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10576 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10577 BEGIN
10578 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10579 f_charbig = 'updated by trigger'
10580       WHERE f_int1 = new.f_int1;
10581 END|
10582 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10583 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10584         
10585 # check trigger-5 success:      1
10586 DROP TRIGGER trg_1;
10587 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10588 f_int2 = CAST(f_char1 AS SIGNED INT),
10589 f_charbig = 'just inserted'
10590    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10591 DELETE FROM t0_aux
10592 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10593 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10594 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10595 'just inserted' FROM t0_template
10596 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10597 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10598 BEGIN
10599 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10600 f_charbig = 'updated by trigger'
10601       WHERE f_int1 = - old.f_int1;
10602 END|
10603 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
10604 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10605         
10606 # check trigger-6 success:      1
10607 DROP TRIGGER trg_1;
10608 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10609 f_int2 = CAST(f_char1 AS SIGNED INT),
10610 f_charbig = 'just inserted'
10611    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10612 DELETE FROM t0_aux
10613 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10614 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10615 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10616 'just inserted' FROM t0_template
10617 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10618 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10619 BEGIN
10620 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10621 f_charbig = 'updated by trigger'
10622       WHERE f_int1 = - old.f_int1;
10623 END|
10624 DELETE FROM t0_aux
10625 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10626         
10627 # check trigger-7 success:      1
10628 DROP TRIGGER trg_1;
10629 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10630 f_int2 = CAST(f_char1 AS SIGNED INT),
10631 f_charbig = 'just inserted'
10632    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10633 DELETE FROM t0_aux
10634 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10635 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10636 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10637 'just inserted' FROM t0_template
10638 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10639 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10640 BEGIN
10641 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10642 f_charbig = 'updated by trigger'
10643       WHERE f_int1 = - old.f_int1;
10644 END|
10645 DELETE FROM t0_aux
10646 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10647         
10648 # check trigger-8 success:      1
10649 DROP TRIGGER trg_1;
10650 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10651 f_int2 = CAST(f_char1 AS SIGNED INT),
10652 f_charbig = 'just inserted'
10653    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10654 DELETE FROM t0_aux
10655 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10656 DELETE FROM t1
10657 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10658 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10659 BEGIN
10660 SET new.f_int1 = old.f_int1 + @max_row,
10661 new.f_int2 = old.f_int2 - @max_row,
10662 new.f_charbig = '####updated per update trigger####';
10663 END|
10664 UPDATE t1
10665 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10666 f_charbig = '####updated per update statement itself####';
10667         
10668 # check trigger-9 success:      1
10669 DROP TRIGGER trg_2;
10670 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10671 f_int2 = CAST(f_char1 AS SIGNED INT),
10672 f_charbig = CONCAT('===',f_char1,'===');
10673 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10674 BEGIN
10675 SET new.f_int1 = new.f_int1 + @max_row,
10676 new.f_int2 = new.f_int2 - @max_row,
10677 new.f_charbig = '####updated per update trigger####';
10678 END|
10679 UPDATE t1
10680 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10681 f_charbig = '####updated per update statement itself####';
10682         
10683 # check trigger-10 success:     1
10684 DROP TRIGGER trg_2;
10685 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10686 f_int2 = CAST(f_char1 AS SIGNED INT),
10687 f_charbig = CONCAT('===',f_char1,'===');
10688 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10689 BEGIN
10690 SET new.f_int1 = @my_max1 + @counter,
10691 new.f_int2 = @my_min2 - @counter,
10692 new.f_charbig = '####updated per insert trigger####';
10693 SET @counter = @counter + 1;
10694 END|
10695 SET @counter = 1;
10696 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10697 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10698 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10699 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10700 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10701 ORDER BY f_int1;
10702 DROP TRIGGER trg_3;
10703         
10704 # check trigger-11 success:     1
10705 DELETE FROM t1
10706 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10707 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10708 AND f_charbig = '####updated per insert trigger####';
10709 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10710 BEGIN
10711 SET new.f_int1 = @my_max1 + @counter,
10712 new.f_int2 = @my_min2 - @counter,
10713 new.f_charbig = '####updated per insert trigger####';
10714 SET @counter = @counter + 1;
10715 END|
10716 SET @counter = 1;
10717 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10718 INSERT INTO t1 (f_char1, f_char2, f_charbig)
10719 SELECT CAST(f_int1 AS CHAR),
10720 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10721 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10722 ORDER BY f_int1;
10723 DROP TRIGGER trg_3;
10724         
10725 # check trigger-12 success:     1
10726 DELETE FROM t1
10727 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10728 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10729 AND f_charbig = '####updated per insert trigger####';
10730 ANALYZE  TABLE t1;
10731 Table   Op      Msg_type        Msg_text
10732 test.t1 analyze status  OK
10733 CHECK    TABLE t1 EXTENDED;
10734 Table   Op      Msg_type        Msg_text
10735 test.t1 check   status  OK
10736 CHECKSUM TABLE t1 EXTENDED;
10737 Table   Checksum
10738 test.t1 <some_value>
10739 OPTIMIZE TABLE t1;
10740 Table   Op      Msg_type        Msg_text
10741 test.t1 optimize        status  OK
10742 # check layout success:    1
10743 REPAIR   TABLE t1 EXTENDED;
10744 Table   Op      Msg_type        Msg_text
10745 test.t1 repair  status  OK
10746 # check layout success:    1
10747 TRUNCATE t1;
10748         
10749 # check TRUNCATE success:       1
10750 # check layout success:    1
10751 # End usability test (inc/partition_check.inc)
10752 DROP TABLE t1;
10753 CREATE TABLE t1 (
10754 f_int1 INTEGER,
10755 f_int2 INTEGER,
10756 f_char1 CHAR(20),
10757 f_char2 CHAR(20),
10758 f_charbig VARCHAR(1000)
10761 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
10762 (PARTITION part_1 VALUES IN (0)
10763 (SUBPARTITION sp11, SUBPARTITION sp12),
10764 PARTITION part_2 VALUES IN (1)
10765 (SUBPARTITION sp21, SUBPARTITION sp22),
10766 PARTITION part_3 VALUES IN (2)
10767 (SUBPARTITION sp31, SUBPARTITION sp32),
10768 PARTITION part_4 VALUES IN (NULL)
10769 (SUBPARTITION sp41, SUBPARTITION sp42));
10770 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10771 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10772 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10773 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
10774 Table   Op      Msg_type        Msg_text
10775 test.t1 analyze error   Error in list of partitions to test.t1
10776 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10777 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10778 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10779 # Start usability test (inc/partition_check.inc)
10780 create_command
10781 SHOW CREATE TABLE t1;
10782 Table   Create Table
10783 t1      CREATE TABLE `t1` (
10784   `f_int1` int(11) DEFAULT NULL,
10785   `f_int2` int(11) DEFAULT NULL,
10786   `f_char1` char(20) DEFAULT NULL,
10787   `f_char2` char(20) DEFAULT NULL,
10788   `f_charbig` varchar(1000) DEFAULT NULL
10789 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
10790 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
10791 SUBPARTITION BY HASH (f_int1 + 1)
10792 (PARTITION part_1 VALUES IN (0)
10793  (SUBPARTITION sp11 ENGINE = MyISAM,
10794   SUBPARTITION sp12 ENGINE = MyISAM),
10795  PARTITION part_2 VALUES IN (1)
10796  (SUBPARTITION sp21 ENGINE = MyISAM,
10797   SUBPARTITION sp22 ENGINE = MyISAM),
10798  PARTITION part_3 VALUES IN (2)
10799  (SUBPARTITION sp31 ENGINE = MyISAM,
10800   SUBPARTITION sp32 ENGINE = MyISAM),
10801  PARTITION part_4 VALUES IN (NULL)
10802  (SUBPARTITION sp41 ENGINE = MyISAM,
10803   SUBPARTITION sp42 ENGINE = MyISAM)) */
10805 unified filelist
10806 t1#P#part_1#SP#sp11.MYD
10807 t1#P#part_1#SP#sp11.MYI
10808 t1#P#part_1#SP#sp12.MYD
10809 t1#P#part_1#SP#sp12.MYI
10810 t1#P#part_2#SP#sp21.MYD
10811 t1#P#part_2#SP#sp21.MYI
10812 t1#P#part_2#SP#sp22.MYD
10813 t1#P#part_2#SP#sp22.MYI
10814 t1#P#part_3#SP#sp31.MYD
10815 t1#P#part_3#SP#sp31.MYI
10816 t1#P#part_3#SP#sp32.MYD
10817 t1#P#part_3#SP#sp32.MYI
10818 t1#P#part_4#SP#sp41.MYD
10819 t1#P#part_4#SP#sp41.MYI
10820 t1#P#part_4#SP#sp42.MYD
10821 t1#P#part_4#SP#sp42.MYI
10822 t1.frm
10823 t1.par
10825 # check prerequisites-1 success:    1
10826 # check COUNT(*) success:    1
10827 # check MIN/MAX(f_int1) success:    1
10828 # check MIN/MAX(f_int2) success:    1
10829 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10830 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10831 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10832 WHERE f_int1 IN (2,3);
10833 # check prerequisites-3 success:    1
10834 DELETE FROM t1 WHERE f_charbig = 'delete me';
10835 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
10836 # check read via f_int1 success: 1
10837 # check read via f_int2 success: 1
10838         
10839 # check multiple-1 success:     1
10840 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10841         
10842 # check multiple-2 success:     1
10843 INSERT INTO t1 SELECT * FROM t0_template
10844 WHERE MOD(f_int1,3) = 0;
10845         
10846 # check multiple-3 success:     1
10847 UPDATE t1 SET f_int1 = f_int1 + @max_row
10848 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10849 AND @max_row_div2 + @max_row_div4;
10850         
10851 # check multiple-4 success:     1
10852 DELETE FROM t1
10853 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10854 AND @max_row_div2 + @max_row_div4 + @max_row;
10855         
10856 # check multiple-5 success:     1
10857 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10858 INSERT INTO t1
10859 SET f_int1 = @cur_value , f_int2 = @cur_value,
10860 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10861 f_charbig = '#SINGLE#';
10862         
10863 # check single-1 success:       1
10864 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10865 INSERT INTO t1
10866 SET f_int1 = @cur_value , f_int2 = @cur_value,
10867 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10868 f_charbig = '#SINGLE#';
10869         
10870 # check single-2 success:       1
10871 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10872 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10873 UPDATE t1 SET f_int1 = @cur_value2
10874 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10875         
10876 # check single-3 success:       1
10877 SET @cur_value1= -1;
10878 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10879 UPDATE t1 SET f_int1 = @cur_value1
10880 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10881         
10882 # check single-4 success:       1
10883 SELECT MAX(f_int1) INTO @cur_value FROM t1;
10884 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10885         
10886 # check single-5 success:       1
10887 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10888         
10889 # check single-6 success:       1
10890 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10891         
10892 # check single-7 success:       1
10893 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
10894 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10895 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10896 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10897 f_charbig = '#NULL#';
10898 INSERT INTO t1
10899 SET f_int1 = NULL , f_int2 = -@max_row,
10900 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10901 f_charbig = '#NULL#';
10902 # check null success:    1
10903         
10904 # check null-1 success:         1
10905 UPDATE t1 SET f_int1 = -@max_row
10906 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10907 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10908         
10909 # check null-2 success:         1
10910 UPDATE t1 SET f_int1 = NULL
10911 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10912 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10913         
10914 # check null-3 success:         1
10915 DELETE FROM t1
10916 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10917 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10918         
10919 # check null-4 success:         1
10920 DELETE FROM t1
10921 WHERE f_int1 = 0 AND f_int2 = 0
10922 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10923 AND f_charbig = '#NULL#';
10924 SET AUTOCOMMIT= 0;
10925 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10926 SELECT f_int1, f_int1, '', '', 'was inserted'
10927 FROM t0_template source_tab
10928 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10929         
10930 # check transactions-1 success:         1
10931 COMMIT WORK;
10932         
10933 # check transactions-2 success:         1
10934 ROLLBACK WORK;
10935         
10936 # check transactions-3 success:         1
10937 DELETE FROM t1 WHERE f_charbig = 'was inserted';
10938 COMMIT WORK;
10939 ROLLBACK WORK;
10940         
10941 # check transactions-4 success:         1
10942 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10943 SELECT f_int1, f_int1, '', '', 'was inserted'
10944 FROM t0_template source_tab
10945 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10946         
10947 # check transactions-5 success:         1
10948 ROLLBACK WORK;
10949 Warnings:
10950 Warning 1196    Some non-transactional changed tables couldn't be rolled back
10951         
10952 # check transactions-6 success:         1
10953 # INFO: Storage engine used for t1 seems to be not transactional.
10954 COMMIT;
10955         
10956 # check transactions-7 success:         1
10957 DELETE FROM t1 WHERE f_charbig = 'was inserted';
10958 COMMIT WORK;
10959 SET @@session.sql_mode = 'traditional';
10960 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10961 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10962 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10963 '', '', 'was inserted' FROM t0_template
10964 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10965 ERROR 22012: Division by 0
10966 COMMIT;
10967         
10968 # check transactions-8 success:         1
10969 # INFO: Storage engine used for t1 seems to be unable to revert
10970 #       changes made by the failing statement.
10971 SET @@session.sql_mode = '';
10972 SET AUTOCOMMIT= 1;
10973 DELETE FROM t1 WHERE f_charbig = 'was inserted';
10974 COMMIT WORK;
10975 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10976         
10977 # check special-1 success:      1
10978 UPDATE t1 SET f_charbig = '';
10979         
10980 # check special-2 success:      1
10981 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10982 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10983 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10984 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10985 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10986 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10987 'just inserted' FROM t0_template
10988 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10989 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10990 BEGIN
10991 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10992 f_charbig = 'updated by trigger'
10993       WHERE f_int1 = new.f_int1;
10994 END|
10995 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10996 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10997 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10998         
10999 # check trigger-1 success:      1
11000 DROP TRIGGER trg_1;
11001 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11002 f_int2 = CAST(f_char1 AS SIGNED INT),
11003 f_charbig = 'just inserted'
11004    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11005 DELETE FROM t0_aux
11006 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11007 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11008 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11009 'just inserted' FROM t0_template
11010 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11011 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11012 BEGIN
11013 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11014 f_charbig = 'updated by trigger'
11015       WHERE f_int1 = new.f_int1;
11016 END|
11017 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11018 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11019 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11020         
11021 # check trigger-2 success:      1
11022 DROP TRIGGER trg_1;
11023 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11024 f_int2 = CAST(f_char1 AS SIGNED INT),
11025 f_charbig = 'just inserted'
11026    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11027 DELETE FROM t0_aux
11028 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11029 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11030 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11031 'just inserted' FROM t0_template
11032 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11033 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11034 BEGIN
11035 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11036 f_charbig = 'updated by trigger'
11037       WHERE f_int1 = new.f_int1;
11038 END|
11039 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11040 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11041         
11042 # check trigger-3 success:      1
11043 DROP TRIGGER trg_1;
11044 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11045 f_int2 = CAST(f_char1 AS SIGNED INT),
11046 f_charbig = 'just inserted'
11047    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11048 DELETE FROM t0_aux
11049 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11050 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11051 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11052 'just inserted' FROM t0_template
11053 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11054 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11055 BEGIN
11056 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11057 f_charbig = 'updated by trigger'
11058       WHERE f_int1 = - old.f_int1;
11059 END|
11060 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11061 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11062         
11063 # check trigger-4 success:      1
11064 DROP TRIGGER trg_1;
11065 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11066 f_int2 = CAST(f_char1 AS SIGNED INT),
11067 f_charbig = 'just inserted'
11068    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11069 DELETE FROM t0_aux
11070 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11071 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11072 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11073 'just inserted' FROM t0_template
11074 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11075 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11076 BEGIN
11077 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11078 f_charbig = 'updated by trigger'
11079       WHERE f_int1 = new.f_int1;
11080 END|
11081 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11082 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11083         
11084 # check trigger-5 success:      1
11085 DROP TRIGGER trg_1;
11086 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11087 f_int2 = CAST(f_char1 AS SIGNED INT),
11088 f_charbig = 'just inserted'
11089    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11090 DELETE FROM t0_aux
11091 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11092 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11093 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11094 'just inserted' FROM t0_template
11095 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11096 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11097 BEGIN
11098 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11099 f_charbig = 'updated by trigger'
11100       WHERE f_int1 = - old.f_int1;
11101 END|
11102 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11103 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11104         
11105 # check trigger-6 success:      1
11106 DROP TRIGGER trg_1;
11107 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11108 f_int2 = CAST(f_char1 AS SIGNED INT),
11109 f_charbig = 'just inserted'
11110    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11111 DELETE FROM t0_aux
11112 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11113 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11114 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11115 'just inserted' FROM t0_template
11116 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11117 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11118 BEGIN
11119 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11120 f_charbig = 'updated by trigger'
11121       WHERE f_int1 = - old.f_int1;
11122 END|
11123 DELETE FROM t0_aux
11124 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11125         
11126 # check trigger-7 success:      1
11127 DROP TRIGGER trg_1;
11128 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11129 f_int2 = CAST(f_char1 AS SIGNED INT),
11130 f_charbig = 'just inserted'
11131    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11132 DELETE FROM t0_aux
11133 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11134 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11135 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11136 'just inserted' FROM t0_template
11137 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11138 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11139 BEGIN
11140 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11141 f_charbig = 'updated by trigger'
11142       WHERE f_int1 = - old.f_int1;
11143 END|
11144 DELETE FROM t0_aux
11145 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11146         
11147 # check trigger-8 success:      1
11148 DROP TRIGGER trg_1;
11149 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11150 f_int2 = CAST(f_char1 AS SIGNED INT),
11151 f_charbig = 'just inserted'
11152    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11153 DELETE FROM t0_aux
11154 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11155 DELETE FROM t1
11156 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11157 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11158 BEGIN
11159 SET new.f_int1 = old.f_int1 + @max_row,
11160 new.f_int2 = old.f_int2 - @max_row,
11161 new.f_charbig = '####updated per update trigger####';
11162 END|
11163 UPDATE t1
11164 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11165 f_charbig = '####updated per update statement itself####';
11166         
11167 # check trigger-9 success:      1
11168 DROP TRIGGER trg_2;
11169 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11170 f_int2 = CAST(f_char1 AS SIGNED INT),
11171 f_charbig = CONCAT('===',f_char1,'===');
11172 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11173 BEGIN
11174 SET new.f_int1 = new.f_int1 + @max_row,
11175 new.f_int2 = new.f_int2 - @max_row,
11176 new.f_charbig = '####updated per update trigger####';
11177 END|
11178 UPDATE t1
11179 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11180 f_charbig = '####updated per update statement itself####';
11181         
11182 # check trigger-10 success:     1
11183 DROP TRIGGER trg_2;
11184 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11185 f_int2 = CAST(f_char1 AS SIGNED INT),
11186 f_charbig = CONCAT('===',f_char1,'===');
11187 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11188 BEGIN
11189 SET new.f_int1 = @my_max1 + @counter,
11190 new.f_int2 = @my_min2 - @counter,
11191 new.f_charbig = '####updated per insert trigger####';
11192 SET @counter = @counter + 1;
11193 END|
11194 SET @counter = 1;
11195 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11196 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11197 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11198 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11199 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11200 ORDER BY f_int1;
11201 DROP TRIGGER trg_3;
11202         
11203 # check trigger-11 success:     1
11204 DELETE FROM t1
11205 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11206 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11207 AND f_charbig = '####updated per insert trigger####';
11208 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11209 BEGIN
11210 SET new.f_int1 = @my_max1 + @counter,
11211 new.f_int2 = @my_min2 - @counter,
11212 new.f_charbig = '####updated per insert trigger####';
11213 SET @counter = @counter + 1;
11214 END|
11215 SET @counter = 1;
11216 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11217 INSERT INTO t1 (f_char1, f_char2, f_charbig)
11218 SELECT CAST(f_int1 AS CHAR),
11219 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11220 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11221 ORDER BY f_int1;
11222 DROP TRIGGER trg_3;
11223         
11224 # check trigger-12 success:     1
11225 DELETE FROM t1
11226 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11227 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11228 AND f_charbig = '####updated per insert trigger####';
11229 ANALYZE  TABLE t1;
11230 Table   Op      Msg_type        Msg_text
11231 test.t1 analyze status  OK
11232 CHECK    TABLE t1 EXTENDED;
11233 Table   Op      Msg_type        Msg_text
11234 test.t1 check   status  OK
11235 CHECKSUM TABLE t1 EXTENDED;
11236 Table   Checksum
11237 test.t1 <some_value>
11238 OPTIMIZE TABLE t1;
11239 Table   Op      Msg_type        Msg_text
11240 test.t1 optimize        status  OK
11241 # check layout success:    1
11242 REPAIR   TABLE t1 EXTENDED;
11243 Table   Op      Msg_type        Msg_text
11244 test.t1 repair  status  OK
11245 # check layout success:    1
11246 TRUNCATE t1;
11247         
11248 # check TRUNCATE success:       1
11249 # check layout success:    1
11250 # End usability test (inc/partition_check.inc)
11251 DROP TABLE t1;
11252 CREATE TABLE t1 (
11253 f_int1 INTEGER,
11254 f_int2 INTEGER,
11255 f_char1 CHAR(20),
11256 f_char2 CHAR(20),
11257 f_charbig VARCHAR(1000)
11260 PARTITION BY LIST(ABS(MOD(f_int1,2)))
11261 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
11262 (PARTITION part_1 VALUES IN (0),
11263  PARTITION part_2 VALUES IN (1),
11264  PARTITION part_3 VALUES IN (NULL));
11265 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11266 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11267 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11268 ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
11269 Table   Op      Msg_type        Msg_text
11270 test.t1 analyze error   Error in list of partitions to test.t1
11271 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11272 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11273 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11274 # Start usability test (inc/partition_check.inc)
11275 create_command
11276 SHOW CREATE TABLE t1;
11277 Table   Create Table
11278 t1      CREATE TABLE `t1` (
11279   `f_int1` int(11) DEFAULT NULL,
11280   `f_int2` int(11) DEFAULT NULL,
11281   `f_char1` char(20) DEFAULT NULL,
11282   `f_char2` char(20) DEFAULT NULL,
11283   `f_charbig` varchar(1000) DEFAULT NULL
11284 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
11285 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
11286 SUBPARTITION BY KEY (f_int1)
11287 SUBPARTITIONS 3
11288 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
11289  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
11290  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
11292 unified filelist
11293 t1#P#part_1#SP#part_1sp0.MYD
11294 t1#P#part_1#SP#part_1sp0.MYI
11295 t1#P#part_1#SP#part_1sp1.MYD
11296 t1#P#part_1#SP#part_1sp1.MYI
11297 t1#P#part_1#SP#part_1sp2.MYD
11298 t1#P#part_1#SP#part_1sp2.MYI
11299 t1#P#part_2#SP#part_2sp0.MYD
11300 t1#P#part_2#SP#part_2sp0.MYI
11301 t1#P#part_2#SP#part_2sp1.MYD
11302 t1#P#part_2#SP#part_2sp1.MYI
11303 t1#P#part_2#SP#part_2sp2.MYD
11304 t1#P#part_2#SP#part_2sp2.MYI
11305 t1#P#part_3#SP#part_3sp0.MYD
11306 t1#P#part_3#SP#part_3sp0.MYI
11307 t1#P#part_3#SP#part_3sp1.MYD
11308 t1#P#part_3#SP#part_3sp1.MYI
11309 t1#P#part_3#SP#part_3sp2.MYD
11310 t1#P#part_3#SP#part_3sp2.MYI
11311 t1.frm
11312 t1.par
11314 # check prerequisites-1 success:    1
11315 # check COUNT(*) success:    1
11316 # check MIN/MAX(f_int1) success:    1
11317 # check MIN/MAX(f_int2) success:    1
11318 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11319 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11320 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11321 WHERE f_int1 IN (2,3);
11322 # check prerequisites-3 success:    1
11323 DELETE FROM t1 WHERE f_charbig = 'delete me';
11324 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
11325 # check read via f_int1 success: 1
11326 # check read via f_int2 success: 1
11327         
11328 # check multiple-1 success:     1
11329 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11330         
11331 # check multiple-2 success:     1
11332 INSERT INTO t1 SELECT * FROM t0_template
11333 WHERE MOD(f_int1,3) = 0;
11334         
11335 # check multiple-3 success:     1
11336 UPDATE t1 SET f_int1 = f_int1 + @max_row
11337 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11338 AND @max_row_div2 + @max_row_div4;
11339         
11340 # check multiple-4 success:     1
11341 DELETE FROM t1
11342 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11343 AND @max_row_div2 + @max_row_div4 + @max_row;
11344         
11345 # check multiple-5 success:     1
11346 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11347 INSERT INTO t1
11348 SET f_int1 = @cur_value , f_int2 = @cur_value,
11349 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11350 f_charbig = '#SINGLE#';
11351         
11352 # check single-1 success:       1
11353 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11354 INSERT INTO t1
11355 SET f_int1 = @cur_value , f_int2 = @cur_value,
11356 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11357 f_charbig = '#SINGLE#';
11358         
11359 # check single-2 success:       1
11360 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11361 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11362 UPDATE t1 SET f_int1 = @cur_value2
11363 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11364         
11365 # check single-3 success:       1
11366 SET @cur_value1= -1;
11367 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11368 UPDATE t1 SET f_int1 = @cur_value1
11369 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11370         
11371 # check single-4 success:       1
11372 SELECT MAX(f_int1) INTO @cur_value FROM t1;
11373 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11374         
11375 # check single-5 success:       1
11376 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11377         
11378 # check single-6 success:       1
11379 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11380         
11381 # check single-7 success:       1
11382 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11383 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11384 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11385 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11386 f_charbig = '#NULL#';
11387 INSERT INTO t1
11388 SET f_int1 = NULL , f_int2 = -@max_row,
11389 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11390 f_charbig = '#NULL#';
11391 # check null success:    1
11392         
11393 # check null-1 success:         1
11394 UPDATE t1 SET f_int1 = -@max_row
11395 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11396 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11397         
11398 # check null-2 success:         1
11399 UPDATE t1 SET f_int1 = NULL
11400 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11401 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11402         
11403 # check null-3 success:         1
11404 DELETE FROM t1
11405 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11406 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11407         
11408 # check null-4 success:         1
11409 DELETE FROM t1
11410 WHERE f_int1 = 0 AND f_int2 = 0
11411 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11412 AND f_charbig = '#NULL#';
11413 SET AUTOCOMMIT= 0;
11414 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11415 SELECT f_int1, f_int1, '', '', 'was inserted'
11416 FROM t0_template source_tab
11417 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11418         
11419 # check transactions-1 success:         1
11420 COMMIT WORK;
11421         
11422 # check transactions-2 success:         1
11423 ROLLBACK WORK;
11424         
11425 # check transactions-3 success:         1
11426 DELETE FROM t1 WHERE f_charbig = 'was inserted';
11427 COMMIT WORK;
11428 ROLLBACK WORK;
11429         
11430 # check transactions-4 success:         1
11431 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11432 SELECT f_int1, f_int1, '', '', 'was inserted'
11433 FROM t0_template source_tab
11434 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11435         
11436 # check transactions-5 success:         1
11437 ROLLBACK WORK;
11438 Warnings:
11439 Warning 1196    Some non-transactional changed tables couldn't be rolled back
11440         
11441 # check transactions-6 success:         1
11442 # INFO: Storage engine used for t1 seems to be not transactional.
11443 COMMIT;
11444         
11445 # check transactions-7 success:         1
11446 DELETE FROM t1 WHERE f_charbig = 'was inserted';
11447 COMMIT WORK;
11448 SET @@session.sql_mode = 'traditional';
11449 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11450 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11451 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11452 '', '', 'was inserted' FROM t0_template
11453 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11454 ERROR 22012: Division by 0
11455 COMMIT;
11456         
11457 # check transactions-8 success:         1
11458 # INFO: Storage engine used for t1 seems to be unable to revert
11459 #       changes made by the failing statement.
11460 SET @@session.sql_mode = '';
11461 SET AUTOCOMMIT= 1;
11462 DELETE FROM t1 WHERE f_charbig = 'was inserted';
11463 COMMIT WORK;
11464 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11465         
11466 # check special-1 success:      1
11467 UPDATE t1 SET f_charbig = '';
11468         
11469 # check special-2 success:      1
11470 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11471 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11472 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11473 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11474 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11475 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11476 'just inserted' FROM t0_template
11477 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11478 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11479 BEGIN
11480 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11481 f_charbig = 'updated by trigger'
11482       WHERE f_int1 = new.f_int1;
11483 END|
11484 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11485 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11486 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11487         
11488 # check trigger-1 success:      1
11489 DROP TRIGGER trg_1;
11490 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11491 f_int2 = CAST(f_char1 AS SIGNED INT),
11492 f_charbig = 'just inserted'
11493    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11494 DELETE FROM t0_aux
11495 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11496 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11497 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11498 'just inserted' FROM t0_template
11499 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11500 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11501 BEGIN
11502 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11503 f_charbig = 'updated by trigger'
11504       WHERE f_int1 = new.f_int1;
11505 END|
11506 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11507 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11508 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11509         
11510 # check trigger-2 success:      1
11511 DROP TRIGGER trg_1;
11512 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11513 f_int2 = CAST(f_char1 AS SIGNED INT),
11514 f_charbig = 'just inserted'
11515    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11516 DELETE FROM t0_aux
11517 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11518 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11519 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11520 'just inserted' FROM t0_template
11521 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11522 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11523 BEGIN
11524 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11525 f_charbig = 'updated by trigger'
11526       WHERE f_int1 = new.f_int1;
11527 END|
11528 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11529 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11530         
11531 # check trigger-3 success:      1
11532 DROP TRIGGER trg_1;
11533 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11534 f_int2 = CAST(f_char1 AS SIGNED INT),
11535 f_charbig = 'just inserted'
11536    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11537 DELETE FROM t0_aux
11538 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11539 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11540 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11541 'just inserted' FROM t0_template
11542 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11543 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11544 BEGIN
11545 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11546 f_charbig = 'updated by trigger'
11547       WHERE f_int1 = - old.f_int1;
11548 END|
11549 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11550 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11551         
11552 # check trigger-4 success:      1
11553 DROP TRIGGER trg_1;
11554 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11555 f_int2 = CAST(f_char1 AS SIGNED INT),
11556 f_charbig = 'just inserted'
11557    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11558 DELETE FROM t0_aux
11559 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11560 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11561 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11562 'just inserted' FROM t0_template
11563 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11564 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11565 BEGIN
11566 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11567 f_charbig = 'updated by trigger'
11568       WHERE f_int1 = new.f_int1;
11569 END|
11570 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11571 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11572         
11573 # check trigger-5 success:      1
11574 DROP TRIGGER trg_1;
11575 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11576 f_int2 = CAST(f_char1 AS SIGNED INT),
11577 f_charbig = 'just inserted'
11578    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11579 DELETE FROM t0_aux
11580 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11581 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11582 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11583 'just inserted' FROM t0_template
11584 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11585 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11586 BEGIN
11587 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11588 f_charbig = 'updated by trigger'
11589       WHERE f_int1 = - old.f_int1;
11590 END|
11591 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11592 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11593         
11594 # check trigger-6 success:      1
11595 DROP TRIGGER trg_1;
11596 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11597 f_int2 = CAST(f_char1 AS SIGNED INT),
11598 f_charbig = 'just inserted'
11599    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11600 DELETE FROM t0_aux
11601 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11602 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11603 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11604 'just inserted' FROM t0_template
11605 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11606 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11607 BEGIN
11608 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11609 f_charbig = 'updated by trigger'
11610       WHERE f_int1 = - old.f_int1;
11611 END|
11612 DELETE FROM t0_aux
11613 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11614         
11615 # check trigger-7 success:      1
11616 DROP TRIGGER trg_1;
11617 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11618 f_int2 = CAST(f_char1 AS SIGNED INT),
11619 f_charbig = 'just inserted'
11620    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11621 DELETE FROM t0_aux
11622 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11623 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11624 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11625 'just inserted' FROM t0_template
11626 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11627 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11628 BEGIN
11629 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11630 f_charbig = 'updated by trigger'
11631       WHERE f_int1 = - old.f_int1;
11632 END|
11633 DELETE FROM t0_aux
11634 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11635         
11636 # check trigger-8 success:      1
11637 DROP TRIGGER trg_1;
11638 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11639 f_int2 = CAST(f_char1 AS SIGNED INT),
11640 f_charbig = 'just inserted'
11641    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11642 DELETE FROM t0_aux
11643 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11644 DELETE FROM t1
11645 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11646 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11647 BEGIN
11648 SET new.f_int1 = old.f_int1 + @max_row,
11649 new.f_int2 = old.f_int2 - @max_row,
11650 new.f_charbig = '####updated per update trigger####';
11651 END|
11652 UPDATE t1
11653 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11654 f_charbig = '####updated per update statement itself####';
11655         
11656 # check trigger-9 success:      1
11657 DROP TRIGGER trg_2;
11658 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11659 f_int2 = CAST(f_char1 AS SIGNED INT),
11660 f_charbig = CONCAT('===',f_char1,'===');
11661 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11662 BEGIN
11663 SET new.f_int1 = new.f_int1 + @max_row,
11664 new.f_int2 = new.f_int2 - @max_row,
11665 new.f_charbig = '####updated per update trigger####';
11666 END|
11667 UPDATE t1
11668 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11669 f_charbig = '####updated per update statement itself####';
11670         
11671 # check trigger-10 success:     1
11672 DROP TRIGGER trg_2;
11673 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11674 f_int2 = CAST(f_char1 AS SIGNED INT),
11675 f_charbig = CONCAT('===',f_char1,'===');
11676 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11677 BEGIN
11678 SET new.f_int1 = @my_max1 + @counter,
11679 new.f_int2 = @my_min2 - @counter,
11680 new.f_charbig = '####updated per insert trigger####';
11681 SET @counter = @counter + 1;
11682 END|
11683 SET @counter = 1;
11684 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11685 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11686 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11687 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11688 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11689 ORDER BY f_int1;
11690 DROP TRIGGER trg_3;
11691         
11692 # check trigger-11 success:     1
11693 DELETE FROM t1
11694 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11695 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11696 AND f_charbig = '####updated per insert trigger####';
11697 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11698 BEGIN
11699 SET new.f_int1 = @my_max1 + @counter,
11700 new.f_int2 = @my_min2 - @counter,
11701 new.f_charbig = '####updated per insert trigger####';
11702 SET @counter = @counter + 1;
11703 END|
11704 SET @counter = 1;
11705 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11706 INSERT INTO t1 (f_char1, f_char2, f_charbig)
11707 SELECT CAST(f_int1 AS CHAR),
11708 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11709 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11710 ORDER BY f_int1;
11711 DROP TRIGGER trg_3;
11712         
11713 # check trigger-12 success:     1
11714 DELETE FROM t1
11715 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11716 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11717 AND f_charbig = '####updated per insert trigger####';
11718 ANALYZE  TABLE t1;
11719 Table   Op      Msg_type        Msg_text
11720 test.t1 analyze status  OK
11721 CHECK    TABLE t1 EXTENDED;
11722 Table   Op      Msg_type        Msg_text
11723 test.t1 check   status  OK
11724 CHECKSUM TABLE t1 EXTENDED;
11725 Table   Checksum
11726 test.t1 <some_value>
11727 OPTIMIZE TABLE t1;
11728 Table   Op      Msg_type        Msg_text
11729 test.t1 optimize        status  OK
11730 # check layout success:    1
11731 REPAIR   TABLE t1 EXTENDED;
11732 Table   Op      Msg_type        Msg_text
11733 test.t1 repair  status  OK
11734 # check layout success:    1
11735 TRUNCATE t1;
11736         
11737 # check TRUNCATE success:       1
11738 # check layout success:    1
11739 # End usability test (inc/partition_check.inc)
11740 DROP TABLE t1;
11741 #  1.4 ALTER ... ANALYZE PARTITION part_1,part_1,part_1;
11742 DROP TABLE IF EXISTS t1;
11743 CREATE TABLE t1 (
11744 f_int1 INTEGER,
11745 f_int2 INTEGER,
11746 f_char1 CHAR(20),
11747 f_char2 CHAR(20),
11748 f_charbig VARCHAR(1000)
11751 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
11752 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11753 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11754 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11755 ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
11756 Table   Op      Msg_type        Msg_text
11757 test.t1 analyze error   Error in list of partitions to test.t1
11758 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11759 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11760 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11761 # Start usability test (inc/partition_check.inc)
11762 create_command
11763 SHOW CREATE TABLE t1;
11764 Table   Create Table
11765 t1      CREATE TABLE `t1` (
11766   `f_int1` int(11) DEFAULT NULL,
11767   `f_int2` int(11) DEFAULT NULL,
11768   `f_char1` char(20) DEFAULT NULL,
11769   `f_char2` char(20) DEFAULT NULL,
11770   `f_charbig` varchar(1000) DEFAULT NULL
11771 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
11772 /*!50100 PARTITION BY HASH (f_int1)
11773 (PARTITION part_1 ENGINE = MyISAM,
11774  PARTITION part_2 ENGINE = MyISAM) */
11776 unified filelist
11777 t1#P#part_1.MYD
11778 t1#P#part_1.MYI
11779 t1#P#part_2.MYD
11780 t1#P#part_2.MYI
11781 t1.frm
11782 t1.par
11784 # check prerequisites-1 success:    1
11785 # check COUNT(*) success:    1
11786 # check MIN/MAX(f_int1) success:    1
11787 # check MIN/MAX(f_int2) success:    1
11788 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11789 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11790 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11791 WHERE f_int1 IN (2,3);
11792 # check prerequisites-3 success:    1
11793 DELETE FROM t1 WHERE f_charbig = 'delete me';
11794 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
11795 # check read via f_int1 success: 1
11796 # check read via f_int2 success: 1
11797         
11798 # check multiple-1 success:     1
11799 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11800         
11801 # check multiple-2 success:     1
11802 INSERT INTO t1 SELECT * FROM t0_template
11803 WHERE MOD(f_int1,3) = 0;
11804         
11805 # check multiple-3 success:     1
11806 UPDATE t1 SET f_int1 = f_int1 + @max_row
11807 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11808 AND @max_row_div2 + @max_row_div4;
11809         
11810 # check multiple-4 success:     1
11811 DELETE FROM t1
11812 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11813 AND @max_row_div2 + @max_row_div4 + @max_row;
11814         
11815 # check multiple-5 success:     1
11816 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11817 INSERT INTO t1
11818 SET f_int1 = @cur_value , f_int2 = @cur_value,
11819 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11820 f_charbig = '#SINGLE#';
11821         
11822 # check single-1 success:       1
11823 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11824 INSERT INTO t1
11825 SET f_int1 = @cur_value , f_int2 = @cur_value,
11826 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11827 f_charbig = '#SINGLE#';
11828         
11829 # check single-2 success:       1
11830 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11831 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11832 UPDATE t1 SET f_int1 = @cur_value2
11833 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11834         
11835 # check single-3 success:       1
11836 SET @cur_value1= -1;
11837 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11838 UPDATE t1 SET f_int1 = @cur_value1
11839 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11840         
11841 # check single-4 success:       1
11842 SELECT MAX(f_int1) INTO @cur_value FROM t1;
11843 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11844         
11845 # check single-5 success:       1
11846 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11847         
11848 # check single-6 success:       1
11849 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11850         
11851 # check single-7 success:       1
11852 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11853 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11854 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11855 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11856 f_charbig = '#NULL#';
11857 INSERT INTO t1
11858 SET f_int1 = NULL , f_int2 = -@max_row,
11859 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11860 f_charbig = '#NULL#';
11861 # check null success:    1
11862         
11863 # check null-1 success:         1
11864 UPDATE t1 SET f_int1 = -@max_row
11865 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11866 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11867         
11868 # check null-2 success:         1
11869 UPDATE t1 SET f_int1 = NULL
11870 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11871 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11872         
11873 # check null-3 success:         1
11874 DELETE FROM t1
11875 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11876 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11877         
11878 # check null-4 success:         1
11879 DELETE FROM t1
11880 WHERE f_int1 = 0 AND f_int2 = 0
11881 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11882 AND f_charbig = '#NULL#';
11883 SET AUTOCOMMIT= 0;
11884 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11885 SELECT f_int1, f_int1, '', '', 'was inserted'
11886 FROM t0_template source_tab
11887 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11888         
11889 # check transactions-1 success:         1
11890 COMMIT WORK;
11891         
11892 # check transactions-2 success:         1
11893 ROLLBACK WORK;
11894         
11895 # check transactions-3 success:         1
11896 DELETE FROM t1 WHERE f_charbig = 'was inserted';
11897 COMMIT WORK;
11898 ROLLBACK WORK;
11899         
11900 # check transactions-4 success:         1
11901 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11902 SELECT f_int1, f_int1, '', '', 'was inserted'
11903 FROM t0_template source_tab
11904 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11905         
11906 # check transactions-5 success:         1
11907 ROLLBACK WORK;
11908 Warnings:
11909 Warning 1196    Some non-transactional changed tables couldn't be rolled back
11910         
11911 # check transactions-6 success:         1
11912 # INFO: Storage engine used for t1 seems to be not transactional.
11913 COMMIT;
11914         
11915 # check transactions-7 success:         1
11916 DELETE FROM t1 WHERE f_charbig = 'was inserted';
11917 COMMIT WORK;
11918 SET @@session.sql_mode = 'traditional';
11919 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11920 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11921 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11922 '', '', 'was inserted' FROM t0_template
11923 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11924 ERROR 22012: Division by 0
11925 COMMIT;
11926         
11927 # check transactions-8 success:         1
11928 # INFO: Storage engine used for t1 seems to be unable to revert
11929 #       changes made by the failing statement.
11930 SET @@session.sql_mode = '';
11931 SET AUTOCOMMIT= 1;
11932 DELETE FROM t1 WHERE f_charbig = 'was inserted';
11933 COMMIT WORK;
11934 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11935         
11936 # check special-1 success:      1
11937 UPDATE t1 SET f_charbig = '';
11938         
11939 # check special-2 success:      1
11940 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11941 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11942 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11943 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11944 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11945 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11946 'just inserted' FROM t0_template
11947 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11948 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11949 BEGIN
11950 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11951 f_charbig = 'updated by trigger'
11952       WHERE f_int1 = new.f_int1;
11953 END|
11954 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11955 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11956 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11957         
11958 # check trigger-1 success:      1
11959 DROP TRIGGER trg_1;
11960 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11961 f_int2 = CAST(f_char1 AS SIGNED INT),
11962 f_charbig = 'just inserted'
11963    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11964 DELETE FROM t0_aux
11965 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11966 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11967 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11968 'just inserted' FROM t0_template
11969 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11970 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11971 BEGIN
11972 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11973 f_charbig = 'updated by trigger'
11974       WHERE f_int1 = new.f_int1;
11975 END|
11976 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11977 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11978 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11979         
11980 # check trigger-2 success:      1
11981 DROP TRIGGER trg_1;
11982 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11983 f_int2 = CAST(f_char1 AS SIGNED INT),
11984 f_charbig = 'just inserted'
11985    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11986 DELETE FROM t0_aux
11987 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11988 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11989 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11990 'just inserted' FROM t0_template
11991 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11992 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11993 BEGIN
11994 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11995 f_charbig = 'updated by trigger'
11996       WHERE f_int1 = new.f_int1;
11997 END|
11998 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
11999 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12000         
12001 # check trigger-3 success:      1
12002 DROP TRIGGER trg_1;
12003 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12004 f_int2 = CAST(f_char1 AS SIGNED INT),
12005 f_charbig = 'just inserted'
12006    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12007 DELETE FROM t0_aux
12008 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12009 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12010 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12011 'just inserted' FROM t0_template
12012 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12013 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12014 BEGIN
12015 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12016 f_charbig = 'updated by trigger'
12017       WHERE f_int1 = - old.f_int1;
12018 END|
12019 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12020 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12021         
12022 # check trigger-4 success:      1
12023 DROP TRIGGER trg_1;
12024 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12025 f_int2 = CAST(f_char1 AS SIGNED INT),
12026 f_charbig = 'just inserted'
12027    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12028 DELETE FROM t0_aux
12029 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12030 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12031 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12032 'just inserted' FROM t0_template
12033 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12034 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12035 BEGIN
12036 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12037 f_charbig = 'updated by trigger'
12038       WHERE f_int1 = new.f_int1;
12039 END|
12040 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12041 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12042         
12043 # check trigger-5 success:      1
12044 DROP TRIGGER trg_1;
12045 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12046 f_int2 = CAST(f_char1 AS SIGNED INT),
12047 f_charbig = 'just inserted'
12048    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12049 DELETE FROM t0_aux
12050 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12051 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12052 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12053 'just inserted' FROM t0_template
12054 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12055 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12056 BEGIN
12057 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12058 f_charbig = 'updated by trigger'
12059       WHERE f_int1 = - old.f_int1;
12060 END|
12061 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12062 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12063         
12064 # check trigger-6 success:      1
12065 DROP TRIGGER trg_1;
12066 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12067 f_int2 = CAST(f_char1 AS SIGNED INT),
12068 f_charbig = 'just inserted'
12069    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12070 DELETE FROM t0_aux
12071 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12072 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12073 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12074 'just inserted' FROM t0_template
12075 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12076 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12077 BEGIN
12078 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12079 f_charbig = 'updated by trigger'
12080       WHERE f_int1 = - old.f_int1;
12081 END|
12082 DELETE FROM t0_aux
12083 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12084         
12085 # check trigger-7 success:      1
12086 DROP TRIGGER trg_1;
12087 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12088 f_int2 = CAST(f_char1 AS SIGNED INT),
12089 f_charbig = 'just inserted'
12090    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12091 DELETE FROM t0_aux
12092 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12093 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12094 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12095 'just inserted' FROM t0_template
12096 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12097 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12098 BEGIN
12099 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12100 f_charbig = 'updated by trigger'
12101       WHERE f_int1 = - old.f_int1;
12102 END|
12103 DELETE FROM t0_aux
12104 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12105         
12106 # check trigger-8 success:      1
12107 DROP TRIGGER trg_1;
12108 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12109 f_int2 = CAST(f_char1 AS SIGNED INT),
12110 f_charbig = 'just inserted'
12111    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12112 DELETE FROM t0_aux
12113 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12114 DELETE FROM t1
12115 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12116 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12117 BEGIN
12118 SET new.f_int1 = old.f_int1 + @max_row,
12119 new.f_int2 = old.f_int2 - @max_row,
12120 new.f_charbig = '####updated per update trigger####';
12121 END|
12122 UPDATE t1
12123 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12124 f_charbig = '####updated per update statement itself####';
12125         
12126 # check trigger-9 success:      1
12127 DROP TRIGGER trg_2;
12128 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12129 f_int2 = CAST(f_char1 AS SIGNED INT),
12130 f_charbig = CONCAT('===',f_char1,'===');
12131 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12132 BEGIN
12133 SET new.f_int1 = new.f_int1 + @max_row,
12134 new.f_int2 = new.f_int2 - @max_row,
12135 new.f_charbig = '####updated per update trigger####';
12136 END|
12137 UPDATE t1
12138 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12139 f_charbig = '####updated per update statement itself####';
12140         
12141 # check trigger-10 success:     1
12142 DROP TRIGGER trg_2;
12143 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12144 f_int2 = CAST(f_char1 AS SIGNED INT),
12145 f_charbig = CONCAT('===',f_char1,'===');
12146 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12147 BEGIN
12148 SET new.f_int1 = @my_max1 + @counter,
12149 new.f_int2 = @my_min2 - @counter,
12150 new.f_charbig = '####updated per insert trigger####';
12151 SET @counter = @counter + 1;
12152 END|
12153 SET @counter = 1;
12154 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12155 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12156 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12157 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12158 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12159 ORDER BY f_int1;
12160 DROP TRIGGER trg_3;
12161         
12162 # check trigger-11 success:     1
12163 DELETE FROM t1
12164 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12165 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12166 AND f_charbig = '####updated per insert trigger####';
12167 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12168 BEGIN
12169 SET new.f_int1 = @my_max1 + @counter,
12170 new.f_int2 = @my_min2 - @counter,
12171 new.f_charbig = '####updated per insert trigger####';
12172 SET @counter = @counter + 1;
12173 END|
12174 SET @counter = 1;
12175 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12176 INSERT INTO t1 (f_char1, f_char2, f_charbig)
12177 SELECT CAST(f_int1 AS CHAR),
12178 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12179 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12180 ORDER BY f_int1;
12181 DROP TRIGGER trg_3;
12182         
12183 # check trigger-12 success:     1
12184 DELETE FROM t1
12185 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12186 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12187 AND f_charbig = '####updated per insert trigger####';
12188 ANALYZE  TABLE t1;
12189 Table   Op      Msg_type        Msg_text
12190 test.t1 analyze status  OK
12191 CHECK    TABLE t1 EXTENDED;
12192 Table   Op      Msg_type        Msg_text
12193 test.t1 check   status  OK
12194 CHECKSUM TABLE t1 EXTENDED;
12195 Table   Checksum
12196 test.t1 <some_value>
12197 OPTIMIZE TABLE t1;
12198 Table   Op      Msg_type        Msg_text
12199 test.t1 optimize        status  OK
12200 # check layout success:    1
12201 REPAIR   TABLE t1 EXTENDED;
12202 Table   Op      Msg_type        Msg_text
12203 test.t1 repair  status  OK
12204 # check layout success:    1
12205 TRUNCATE t1;
12206         
12207 # check TRUNCATE success:       1
12208 # check layout success:    1
12209 # End usability test (inc/partition_check.inc)
12210 DROP TABLE t1;
12211 CREATE TABLE t1 (
12212 f_int1 INTEGER,
12213 f_int2 INTEGER,
12214 f_char1 CHAR(20),
12215 f_char2 CHAR(20),
12216 f_charbig VARCHAR(1000)
12219 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
12220 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12221 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12222 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12223 ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
12224 Table   Op      Msg_type        Msg_text
12225 test.t1 analyze error   Error in list of partitions to test.t1
12226 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12227 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12228 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12229 # Start usability test (inc/partition_check.inc)
12230 create_command
12231 SHOW CREATE TABLE t1;
12232 Table   Create Table
12233 t1      CREATE TABLE `t1` (
12234   `f_int1` int(11) DEFAULT NULL,
12235   `f_int2` int(11) DEFAULT NULL,
12236   `f_char1` char(20) DEFAULT NULL,
12237   `f_char2` char(20) DEFAULT NULL,
12238   `f_charbig` varchar(1000) DEFAULT NULL
12239 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
12240 /*!50100 PARTITION BY KEY (f_int1)
12241 (PARTITION part_1 ENGINE = MyISAM,
12242  PARTITION part_2 ENGINE = MyISAM,
12243  PARTITION part_3 ENGINE = MyISAM,
12244  PARTITION part_4 ENGINE = MyISAM,
12245  PARTITION part_5 ENGINE = MyISAM) */
12247 unified filelist
12248 t1#P#part_1.MYD
12249 t1#P#part_1.MYI
12250 t1#P#part_2.MYD
12251 t1#P#part_2.MYI
12252 t1#P#part_3.MYD
12253 t1#P#part_3.MYI
12254 t1#P#part_4.MYD
12255 t1#P#part_4.MYI
12256 t1#P#part_5.MYD
12257 t1#P#part_5.MYI
12258 t1.frm
12259 t1.par
12261 # check prerequisites-1 success:    1
12262 # check COUNT(*) success:    1
12263 # check MIN/MAX(f_int1) success:    1
12264 # check MIN/MAX(f_int2) success:    1
12265 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12266 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12267 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12268 WHERE f_int1 IN (2,3);
12269 # check prerequisites-3 success:    1
12270 DELETE FROM t1 WHERE f_charbig = 'delete me';
12271 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
12272 # check read via f_int1 success: 1
12273 # check read via f_int2 success: 1
12274         
12275 # check multiple-1 success:     1
12276 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12277         
12278 # check multiple-2 success:     1
12279 INSERT INTO t1 SELECT * FROM t0_template
12280 WHERE MOD(f_int1,3) = 0;
12281         
12282 # check multiple-3 success:     1
12283 UPDATE t1 SET f_int1 = f_int1 + @max_row
12284 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12285 AND @max_row_div2 + @max_row_div4;
12286         
12287 # check multiple-4 success:     1
12288 DELETE FROM t1
12289 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12290 AND @max_row_div2 + @max_row_div4 + @max_row;
12291         
12292 # check multiple-5 success:     1
12293 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12294 INSERT INTO t1
12295 SET f_int1 = @cur_value , f_int2 = @cur_value,
12296 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12297 f_charbig = '#SINGLE#';
12298         
12299 # check single-1 success:       1
12300 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12301 INSERT INTO t1
12302 SET f_int1 = @cur_value , f_int2 = @cur_value,
12303 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12304 f_charbig = '#SINGLE#';
12305         
12306 # check single-2 success:       1
12307 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12308 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12309 UPDATE t1 SET f_int1 = @cur_value2
12310 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12311         
12312 # check single-3 success:       1
12313 SET @cur_value1= -1;
12314 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12315 UPDATE t1 SET f_int1 = @cur_value1
12316 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12317         
12318 # check single-4 success:       1
12319 SELECT MAX(f_int1) INTO @cur_value FROM t1;
12320 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12321         
12322 # check single-5 success:       1
12323 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12324         
12325 # check single-6 success:       1
12326 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12327         
12328 # check single-7 success:       1
12329 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12330 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12331 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12332 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12333 f_charbig = '#NULL#';
12334 INSERT INTO t1
12335 SET f_int1 = NULL , f_int2 = -@max_row,
12336 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12337 f_charbig = '#NULL#';
12338 # check null success:    1
12339         
12340 # check null-1 success:         1
12341 UPDATE t1 SET f_int1 = -@max_row
12342 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12343 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12344         
12345 # check null-2 success:         1
12346 UPDATE t1 SET f_int1 = NULL
12347 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12348 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12349         
12350 # check null-3 success:         1
12351 DELETE FROM t1
12352 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12353 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12354         
12355 # check null-4 success:         1
12356 DELETE FROM t1
12357 WHERE f_int1 = 0 AND f_int2 = 0
12358 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12359 AND f_charbig = '#NULL#';
12360 SET AUTOCOMMIT= 0;
12361 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12362 SELECT f_int1, f_int1, '', '', 'was inserted'
12363 FROM t0_template source_tab
12364 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12365         
12366 # check transactions-1 success:         1
12367 COMMIT WORK;
12368         
12369 # check transactions-2 success:         1
12370 ROLLBACK WORK;
12371         
12372 # check transactions-3 success:         1
12373 DELETE FROM t1 WHERE f_charbig = 'was inserted';
12374 COMMIT WORK;
12375 ROLLBACK WORK;
12376         
12377 # check transactions-4 success:         1
12378 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12379 SELECT f_int1, f_int1, '', '', 'was inserted'
12380 FROM t0_template source_tab
12381 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12382         
12383 # check transactions-5 success:         1
12384 ROLLBACK WORK;
12385 Warnings:
12386 Warning 1196    Some non-transactional changed tables couldn't be rolled back
12387         
12388 # check transactions-6 success:         1
12389 # INFO: Storage engine used for t1 seems to be not transactional.
12390 COMMIT;
12391         
12392 # check transactions-7 success:         1
12393 DELETE FROM t1 WHERE f_charbig = 'was inserted';
12394 COMMIT WORK;
12395 SET @@session.sql_mode = 'traditional';
12396 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12397 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12398 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12399 '', '', 'was inserted' FROM t0_template
12400 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12401 ERROR 22012: Division by 0
12402 COMMIT;
12403         
12404 # check transactions-8 success:         1
12405 # INFO: Storage engine used for t1 seems to be unable to revert
12406 #       changes made by the failing statement.
12407 SET @@session.sql_mode = '';
12408 SET AUTOCOMMIT= 1;
12409 DELETE FROM t1 WHERE f_charbig = 'was inserted';
12410 COMMIT WORK;
12411 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12412         
12413 # check special-1 success:      1
12414 UPDATE t1 SET f_charbig = '';
12415         
12416 # check special-2 success:      1
12417 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12418 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12419 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12420 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12421 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12422 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12423 'just inserted' FROM t0_template
12424 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12425 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12426 BEGIN
12427 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12428 f_charbig = 'updated by trigger'
12429       WHERE f_int1 = new.f_int1;
12430 END|
12431 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12432 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12433 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12434         
12435 # check trigger-1 success:      1
12436 DROP TRIGGER trg_1;
12437 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12438 f_int2 = CAST(f_char1 AS SIGNED INT),
12439 f_charbig = 'just inserted'
12440    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12441 DELETE FROM t0_aux
12442 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12443 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12444 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12445 'just inserted' FROM t0_template
12446 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12447 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12448 BEGIN
12449 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12450 f_charbig = 'updated by trigger'
12451       WHERE f_int1 = new.f_int1;
12452 END|
12453 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12454 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12455 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12456         
12457 # check trigger-2 success:      1
12458 DROP TRIGGER trg_1;
12459 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12460 f_int2 = CAST(f_char1 AS SIGNED INT),
12461 f_charbig = 'just inserted'
12462    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12463 DELETE FROM t0_aux
12464 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12465 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12466 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12467 'just inserted' FROM t0_template
12468 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12469 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12470 BEGIN
12471 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12472 f_charbig = 'updated by trigger'
12473       WHERE f_int1 = new.f_int1;
12474 END|
12475 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12476 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12477         
12478 # check trigger-3 success:      1
12479 DROP TRIGGER trg_1;
12480 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12481 f_int2 = CAST(f_char1 AS SIGNED INT),
12482 f_charbig = 'just inserted'
12483    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12484 DELETE FROM t0_aux
12485 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12486 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12487 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12488 'just inserted' FROM t0_template
12489 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12490 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12491 BEGIN
12492 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12493 f_charbig = 'updated by trigger'
12494       WHERE f_int1 = - old.f_int1;
12495 END|
12496 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12497 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12498         
12499 # check trigger-4 success:      1
12500 DROP TRIGGER trg_1;
12501 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12502 f_int2 = CAST(f_char1 AS SIGNED INT),
12503 f_charbig = 'just inserted'
12504    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12505 DELETE FROM t0_aux
12506 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12507 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12508 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12509 'just inserted' FROM t0_template
12510 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12511 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12512 BEGIN
12513 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12514 f_charbig = 'updated by trigger'
12515       WHERE f_int1 = new.f_int1;
12516 END|
12517 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12518 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12519         
12520 # check trigger-5 success:      1
12521 DROP TRIGGER trg_1;
12522 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12523 f_int2 = CAST(f_char1 AS SIGNED INT),
12524 f_charbig = 'just inserted'
12525    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12526 DELETE FROM t0_aux
12527 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12528 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12529 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12530 'just inserted' FROM t0_template
12531 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12532 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12533 BEGIN
12534 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12535 f_charbig = 'updated by trigger'
12536       WHERE f_int1 = - old.f_int1;
12537 END|
12538 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12539 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12540         
12541 # check trigger-6 success:      1
12542 DROP TRIGGER trg_1;
12543 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12544 f_int2 = CAST(f_char1 AS SIGNED INT),
12545 f_charbig = 'just inserted'
12546    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12547 DELETE FROM t0_aux
12548 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12549 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12550 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12551 'just inserted' FROM t0_template
12552 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12553 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12554 BEGIN
12555 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12556 f_charbig = 'updated by trigger'
12557       WHERE f_int1 = - old.f_int1;
12558 END|
12559 DELETE FROM t0_aux
12560 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12561         
12562 # check trigger-7 success:      1
12563 DROP TRIGGER trg_1;
12564 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12565 f_int2 = CAST(f_char1 AS SIGNED INT),
12566 f_charbig = 'just inserted'
12567    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12568 DELETE FROM t0_aux
12569 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12570 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12571 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12572 'just inserted' FROM t0_template
12573 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12574 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12575 BEGIN
12576 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12577 f_charbig = 'updated by trigger'
12578       WHERE f_int1 = - old.f_int1;
12579 END|
12580 DELETE FROM t0_aux
12581 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12582         
12583 # check trigger-8 success:      1
12584 DROP TRIGGER trg_1;
12585 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12586 f_int2 = CAST(f_char1 AS SIGNED INT),
12587 f_charbig = 'just inserted'
12588    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12589 DELETE FROM t0_aux
12590 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12591 DELETE FROM t1
12592 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12593 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12594 BEGIN
12595 SET new.f_int1 = old.f_int1 + @max_row,
12596 new.f_int2 = old.f_int2 - @max_row,
12597 new.f_charbig = '####updated per update trigger####';
12598 END|
12599 UPDATE t1
12600 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12601 f_charbig = '####updated per update statement itself####';
12602         
12603 # check trigger-9 success:      1
12604 DROP TRIGGER trg_2;
12605 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12606 f_int2 = CAST(f_char1 AS SIGNED INT),
12607 f_charbig = CONCAT('===',f_char1,'===');
12608 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12609 BEGIN
12610 SET new.f_int1 = new.f_int1 + @max_row,
12611 new.f_int2 = new.f_int2 - @max_row,
12612 new.f_charbig = '####updated per update trigger####';
12613 END|
12614 UPDATE t1
12615 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12616 f_charbig = '####updated per update statement itself####';
12617         
12618 # check trigger-10 success:     1
12619 DROP TRIGGER trg_2;
12620 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12621 f_int2 = CAST(f_char1 AS SIGNED INT),
12622 f_charbig = CONCAT('===',f_char1,'===');
12623 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12624 BEGIN
12625 SET new.f_int1 = @my_max1 + @counter,
12626 new.f_int2 = @my_min2 - @counter,
12627 new.f_charbig = '####updated per insert trigger####';
12628 SET @counter = @counter + 1;
12629 END|
12630 SET @counter = 1;
12631 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12632 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12633 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12634 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12635 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12636 ORDER BY f_int1;
12637 DROP TRIGGER trg_3;
12638         
12639 # check trigger-11 success:     1
12640 DELETE FROM t1
12641 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12642 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12643 AND f_charbig = '####updated per insert trigger####';
12644 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12645 BEGIN
12646 SET new.f_int1 = @my_max1 + @counter,
12647 new.f_int2 = @my_min2 - @counter,
12648 new.f_charbig = '####updated per insert trigger####';
12649 SET @counter = @counter + 1;
12650 END|
12651 SET @counter = 1;
12652 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12653 INSERT INTO t1 (f_char1, f_char2, f_charbig)
12654 SELECT CAST(f_int1 AS CHAR),
12655 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12656 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12657 ORDER BY f_int1;
12658 DROP TRIGGER trg_3;
12659         
12660 # check trigger-12 success:     1
12661 DELETE FROM t1
12662 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12663 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12664 AND f_charbig = '####updated per insert trigger####';
12665 ANALYZE  TABLE t1;
12666 Table   Op      Msg_type        Msg_text
12667 test.t1 analyze status  OK
12668 CHECK    TABLE t1 EXTENDED;
12669 Table   Op      Msg_type        Msg_text
12670 test.t1 check   status  OK
12671 CHECKSUM TABLE t1 EXTENDED;
12672 Table   Checksum
12673 test.t1 <some_value>
12674 OPTIMIZE TABLE t1;
12675 Table   Op      Msg_type        Msg_text
12676 test.t1 optimize        status  OK
12677 # check layout success:    1
12678 REPAIR   TABLE t1 EXTENDED;
12679 Table   Op      Msg_type        Msg_text
12680 test.t1 repair  status  OK
12681 # check layout success:    1
12682 TRUNCATE t1;
12683         
12684 # check TRUNCATE success:       1
12685 # check layout success:    1
12686 # End usability test (inc/partition_check.inc)
12687 DROP TABLE t1;
12688 CREATE TABLE t1 (
12689 f_int1 INTEGER,
12690 f_int2 INTEGER,
12691 f_char1 CHAR(20),
12692 f_char2 CHAR(20),
12693 f_charbig VARCHAR(1000)
12696 PARTITION BY LIST(MOD(f_int1,4))
12697 (PARTITION part_3 VALUES IN (-3),
12698 PARTITION part_2 VALUES IN (-2),
12699 PARTITION part_1 VALUES IN (-1),
12700 PARTITION part_N VALUES IN (NULL),
12701 PARTITION part0 VALUES IN (0),
12702 PARTITION part1 VALUES IN (1),
12703 PARTITION part2 VALUES IN (2),
12704 PARTITION part3 VALUES IN (3));
12705 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12706 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12707 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12708 ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
12709 Table   Op      Msg_type        Msg_text
12710 test.t1 analyze error   Error in list of partitions to test.t1
12711 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12712 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12713 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12714 # Start usability test (inc/partition_check.inc)
12715 create_command
12716 SHOW CREATE TABLE t1;
12717 Table   Create Table
12718 t1      CREATE TABLE `t1` (
12719   `f_int1` int(11) DEFAULT NULL,
12720   `f_int2` int(11) DEFAULT NULL,
12721   `f_char1` char(20) DEFAULT NULL,
12722   `f_char2` char(20) DEFAULT NULL,
12723   `f_charbig` varchar(1000) DEFAULT NULL
12724 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
12725 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
12726 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
12727  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
12728  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
12729  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
12730  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
12731  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
12732  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
12733  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
12735 unified filelist
12736 t1#P#part0.MYD
12737 t1#P#part0.MYI
12738 t1#P#part1.MYD
12739 t1#P#part1.MYI
12740 t1#P#part2.MYD
12741 t1#P#part2.MYI
12742 t1#P#part3.MYD
12743 t1#P#part3.MYI
12744 t1#P#part_1.MYD
12745 t1#P#part_1.MYI
12746 t1#P#part_2.MYD
12747 t1#P#part_2.MYI
12748 t1#P#part_3.MYD
12749 t1#P#part_3.MYI
12750 t1#P#part_N.MYD
12751 t1#P#part_N.MYI
12752 t1.frm
12753 t1.par
12755 # check prerequisites-1 success:    1
12756 # check COUNT(*) success:    1
12757 # check MIN/MAX(f_int1) success:    1
12758 # check MIN/MAX(f_int2) success:    1
12759 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12760 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12761 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12762 WHERE f_int1 IN (2,3);
12763 # check prerequisites-3 success:    1
12764 DELETE FROM t1 WHERE f_charbig = 'delete me';
12765 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
12766 # check read via f_int1 success: 1
12767 # check read via f_int2 success: 1
12768         
12769 # check multiple-1 success:     1
12770 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12771         
12772 # check multiple-2 success:     1
12773 INSERT INTO t1 SELECT * FROM t0_template
12774 WHERE MOD(f_int1,3) = 0;
12775         
12776 # check multiple-3 success:     1
12777 UPDATE t1 SET f_int1 = f_int1 + @max_row
12778 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12779 AND @max_row_div2 + @max_row_div4;
12780         
12781 # check multiple-4 success:     1
12782 DELETE FROM t1
12783 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12784 AND @max_row_div2 + @max_row_div4 + @max_row;
12785         
12786 # check multiple-5 success:     1
12787 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12788 INSERT INTO t1
12789 SET f_int1 = @cur_value , f_int2 = @cur_value,
12790 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12791 f_charbig = '#SINGLE#';
12792         
12793 # check single-1 success:       1
12794 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12795 INSERT INTO t1
12796 SET f_int1 = @cur_value , f_int2 = @cur_value,
12797 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12798 f_charbig = '#SINGLE#';
12799         
12800 # check single-2 success:       1
12801 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12802 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12803 UPDATE t1 SET f_int1 = @cur_value2
12804 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12805         
12806 # check single-3 success:       1
12807 SET @cur_value1= -1;
12808 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12809 UPDATE t1 SET f_int1 = @cur_value1
12810 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12811         
12812 # check single-4 success:       1
12813 SELECT MAX(f_int1) INTO @cur_value FROM t1;
12814 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12815         
12816 # check single-5 success:       1
12817 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12818         
12819 # check single-6 success:       1
12820 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12821         
12822 # check single-7 success:       1
12823 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12824 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12825 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12826 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12827 f_charbig = '#NULL#';
12828 INSERT INTO t1
12829 SET f_int1 = NULL , f_int2 = -@max_row,
12830 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12831 f_charbig = '#NULL#';
12832 # check null success:    1
12833         
12834 # check null-1 success:         1
12835 UPDATE t1 SET f_int1 = -@max_row
12836 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12837 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12838         
12839 # check null-2 success:         1
12840 UPDATE t1 SET f_int1 = NULL
12841 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12842 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12843         
12844 # check null-3 success:         1
12845 DELETE FROM t1
12846 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12847 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12848         
12849 # check null-4 success:         1
12850 DELETE FROM t1
12851 WHERE f_int1 = 0 AND f_int2 = 0
12852 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12853 AND f_charbig = '#NULL#';
12854 SET AUTOCOMMIT= 0;
12855 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12856 SELECT f_int1, f_int1, '', '', 'was inserted'
12857 FROM t0_template source_tab
12858 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12859         
12860 # check transactions-1 success:         1
12861 COMMIT WORK;
12862         
12863 # check transactions-2 success:         1
12864 ROLLBACK WORK;
12865         
12866 # check transactions-3 success:         1
12867 DELETE FROM t1 WHERE f_charbig = 'was inserted';
12868 COMMIT WORK;
12869 ROLLBACK WORK;
12870         
12871 # check transactions-4 success:         1
12872 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12873 SELECT f_int1, f_int1, '', '', 'was inserted'
12874 FROM t0_template source_tab
12875 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12876         
12877 # check transactions-5 success:         1
12878 ROLLBACK WORK;
12879 Warnings:
12880 Warning 1196    Some non-transactional changed tables couldn't be rolled back
12881         
12882 # check transactions-6 success:         1
12883 # INFO: Storage engine used for t1 seems to be not transactional.
12884 COMMIT;
12885         
12886 # check transactions-7 success:         1
12887 DELETE FROM t1 WHERE f_charbig = 'was inserted';
12888 COMMIT WORK;
12889 SET @@session.sql_mode = 'traditional';
12890 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12891 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12892 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12893 '', '', 'was inserted' FROM t0_template
12894 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12895 ERROR 22012: Division by 0
12896 COMMIT;
12897         
12898 # check transactions-8 success:         1
12899 # INFO: Storage engine used for t1 seems to be unable to revert
12900 #       changes made by the failing statement.
12901 SET @@session.sql_mode = '';
12902 SET AUTOCOMMIT= 1;
12903 DELETE FROM t1 WHERE f_charbig = 'was inserted';
12904 COMMIT WORK;
12905 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12906         
12907 # check special-1 success:      1
12908 UPDATE t1 SET f_charbig = '';
12909         
12910 # check special-2 success:      1
12911 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12912 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12913 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12914 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12915 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12916 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12917 'just inserted' FROM t0_template
12918 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12919 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12920 BEGIN
12921 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12922 f_charbig = 'updated by trigger'
12923       WHERE f_int1 = new.f_int1;
12924 END|
12925 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12926 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12927 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12928         
12929 # check trigger-1 success:      1
12930 DROP TRIGGER trg_1;
12931 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12932 f_int2 = CAST(f_char1 AS SIGNED INT),
12933 f_charbig = 'just inserted'
12934    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12935 DELETE FROM t0_aux
12936 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12937 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12938 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12939 'just inserted' FROM t0_template
12940 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12941 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12942 BEGIN
12943 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12944 f_charbig = 'updated by trigger'
12945       WHERE f_int1 = new.f_int1;
12946 END|
12947 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12948 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12949 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12950         
12951 # check trigger-2 success:      1
12952 DROP TRIGGER trg_1;
12953 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12954 f_int2 = CAST(f_char1 AS SIGNED INT),
12955 f_charbig = 'just inserted'
12956    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12957 DELETE FROM t0_aux
12958 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12959 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12960 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12961 'just inserted' FROM t0_template
12962 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12963 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12964 BEGIN
12965 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12966 f_charbig = 'updated by trigger'
12967       WHERE f_int1 = new.f_int1;
12968 END|
12969 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12970 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12971         
12972 # check trigger-3 success:      1
12973 DROP TRIGGER trg_1;
12974 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12975 f_int2 = CAST(f_char1 AS SIGNED INT),
12976 f_charbig = 'just inserted'
12977    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12978 DELETE FROM t0_aux
12979 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12980 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12981 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12982 'just inserted' FROM t0_template
12983 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12984 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12985 BEGIN
12986 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12987 f_charbig = 'updated by trigger'
12988       WHERE f_int1 = - old.f_int1;
12989 END|
12990 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
12991 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12992         
12993 # check trigger-4 success:      1
12994 DROP TRIGGER trg_1;
12995 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12996 f_int2 = CAST(f_char1 AS SIGNED INT),
12997 f_charbig = 'just inserted'
12998    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12999 DELETE FROM t0_aux
13000 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13001 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13002 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13003 'just inserted' FROM t0_template
13004 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13005 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13006 BEGIN
13007 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13008 f_charbig = 'updated by trigger'
13009       WHERE f_int1 = new.f_int1;
13010 END|
13011 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13012 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13013         
13014 # check trigger-5 success:      1
13015 DROP TRIGGER trg_1;
13016 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13017 f_int2 = CAST(f_char1 AS SIGNED INT),
13018 f_charbig = 'just inserted'
13019    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13020 DELETE FROM t0_aux
13021 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13022 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13023 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13024 'just inserted' FROM t0_template
13025 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13026 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13027 BEGIN
13028 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13029 f_charbig = 'updated by trigger'
13030       WHERE f_int1 = - old.f_int1;
13031 END|
13032 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13033 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13034         
13035 # check trigger-6 success:      1
13036 DROP TRIGGER trg_1;
13037 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13038 f_int2 = CAST(f_char1 AS SIGNED INT),
13039 f_charbig = 'just inserted'
13040    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13041 DELETE FROM t0_aux
13042 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13043 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13044 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13045 'just inserted' FROM t0_template
13046 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13047 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13048 BEGIN
13049 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13050 f_charbig = 'updated by trigger'
13051       WHERE f_int1 = - old.f_int1;
13052 END|
13053 DELETE FROM t0_aux
13054 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13055         
13056 # check trigger-7 success:      1
13057 DROP TRIGGER trg_1;
13058 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13059 f_int2 = CAST(f_char1 AS SIGNED INT),
13060 f_charbig = 'just inserted'
13061    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13062 DELETE FROM t0_aux
13063 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13064 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13065 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13066 'just inserted' FROM t0_template
13067 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13068 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13069 BEGIN
13070 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13071 f_charbig = 'updated by trigger'
13072       WHERE f_int1 = - old.f_int1;
13073 END|
13074 DELETE FROM t0_aux
13075 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13076         
13077 # check trigger-8 success:      1
13078 DROP TRIGGER trg_1;
13079 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13080 f_int2 = CAST(f_char1 AS SIGNED INT),
13081 f_charbig = 'just inserted'
13082    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13083 DELETE FROM t0_aux
13084 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13085 DELETE FROM t1
13086 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13087 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13088 BEGIN
13089 SET new.f_int1 = old.f_int1 + @max_row,
13090 new.f_int2 = old.f_int2 - @max_row,
13091 new.f_charbig = '####updated per update trigger####';
13092 END|
13093 UPDATE t1
13094 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13095 f_charbig = '####updated per update statement itself####';
13096         
13097 # check trigger-9 success:      1
13098 DROP TRIGGER trg_2;
13099 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13100 f_int2 = CAST(f_char1 AS SIGNED INT),
13101 f_charbig = CONCAT('===',f_char1,'===');
13102 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13103 BEGIN
13104 SET new.f_int1 = new.f_int1 + @max_row,
13105 new.f_int2 = new.f_int2 - @max_row,
13106 new.f_charbig = '####updated per update trigger####';
13107 END|
13108 UPDATE t1
13109 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13110 f_charbig = '####updated per update statement itself####';
13111         
13112 # check trigger-10 success:     1
13113 DROP TRIGGER trg_2;
13114 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13115 f_int2 = CAST(f_char1 AS SIGNED INT),
13116 f_charbig = CONCAT('===',f_char1,'===');
13117 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13118 BEGIN
13119 SET new.f_int1 = @my_max1 + @counter,
13120 new.f_int2 = @my_min2 - @counter,
13121 new.f_charbig = '####updated per insert trigger####';
13122 SET @counter = @counter + 1;
13123 END|
13124 SET @counter = 1;
13125 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13126 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13127 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13128 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13129 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13130 ORDER BY f_int1;
13131 DROP TRIGGER trg_3;
13132         
13133 # check trigger-11 success:     1
13134 DELETE FROM t1
13135 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13136 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13137 AND f_charbig = '####updated per insert trigger####';
13138 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13139 BEGIN
13140 SET new.f_int1 = @my_max1 + @counter,
13141 new.f_int2 = @my_min2 - @counter,
13142 new.f_charbig = '####updated per insert trigger####';
13143 SET @counter = @counter + 1;
13144 END|
13145 SET @counter = 1;
13146 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13147 INSERT INTO t1 (f_char1, f_char2, f_charbig)
13148 SELECT CAST(f_int1 AS CHAR),
13149 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13150 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13151 ORDER BY f_int1;
13152 DROP TRIGGER trg_3;
13153         
13154 # check trigger-12 success:     1
13155 DELETE FROM t1
13156 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13157 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13158 AND f_charbig = '####updated per insert trigger####';
13159 ANALYZE  TABLE t1;
13160 Table   Op      Msg_type        Msg_text
13161 test.t1 analyze status  OK
13162 CHECK    TABLE t1 EXTENDED;
13163 Table   Op      Msg_type        Msg_text
13164 test.t1 check   status  OK
13165 CHECKSUM TABLE t1 EXTENDED;
13166 Table   Checksum
13167 test.t1 <some_value>
13168 OPTIMIZE TABLE t1;
13169 Table   Op      Msg_type        Msg_text
13170 test.t1 optimize        status  OK
13171 # check layout success:    1
13172 REPAIR   TABLE t1 EXTENDED;
13173 Table   Op      Msg_type        Msg_text
13174 test.t1 repair  status  OK
13175 # check layout success:    1
13176 TRUNCATE t1;
13177         
13178 # check TRUNCATE success:       1
13179 # check layout success:    1
13180 # End usability test (inc/partition_check.inc)
13181 DROP TABLE t1;
13182 CREATE TABLE t1 (
13183 f_int1 INTEGER,
13184 f_int2 INTEGER,
13185 f_char1 CHAR(20),
13186 f_char2 CHAR(20),
13187 f_charbig VARCHAR(1000)
13190 PARTITION BY RANGE(f_int1)
13191 (PARTITION parta VALUES LESS THAN (0),
13192 PARTITION part_1 VALUES LESS THAN (5),
13193 PARTITION part_2 VALUES LESS THAN (10),
13194 PARTITION part_3 VALUES LESS THAN (10 + 5),
13195 PARTITION part_4 VALUES LESS THAN (20),
13196 PARTITION part_5 VALUES LESS THAN (2147483646));
13197 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13198 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13199 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13200 ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
13201 Table   Op      Msg_type        Msg_text
13202 test.t1 analyze error   Error in list of partitions to test.t1
13203 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13204 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13205 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13206 # Start usability test (inc/partition_check.inc)
13207 create_command
13208 SHOW CREATE TABLE t1;
13209 Table   Create Table
13210 t1      CREATE TABLE `t1` (
13211   `f_int1` int(11) DEFAULT NULL,
13212   `f_int2` int(11) DEFAULT NULL,
13213   `f_char1` char(20) DEFAULT NULL,
13214   `f_char2` char(20) DEFAULT NULL,
13215   `f_charbig` varchar(1000) DEFAULT NULL
13216 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
13217 /*!50100 PARTITION BY RANGE (f_int1)
13218 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
13219  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
13220  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
13221  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
13222  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
13223  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
13225 unified filelist
13226 t1#P#part_1.MYD
13227 t1#P#part_1.MYI
13228 t1#P#part_2.MYD
13229 t1#P#part_2.MYI
13230 t1#P#part_3.MYD
13231 t1#P#part_3.MYI
13232 t1#P#part_4.MYD
13233 t1#P#part_4.MYI
13234 t1#P#part_5.MYD
13235 t1#P#part_5.MYI
13236 t1#P#parta.MYD
13237 t1#P#parta.MYI
13238 t1.frm
13239 t1.par
13241 # check prerequisites-1 success:    1
13242 # check COUNT(*) success:    1
13243 # check MIN/MAX(f_int1) success:    1
13244 # check MIN/MAX(f_int2) success:    1
13245 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13246 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13247 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13248 WHERE f_int1 IN (2,3);
13249 # check prerequisites-3 success:    1
13250 DELETE FROM t1 WHERE f_charbig = 'delete me';
13251 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13252 # check read via f_int1 success: 1
13253 # check read via f_int2 success: 1
13254         
13255 # check multiple-1 success:     1
13256 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13257         
13258 # check multiple-2 success:     1
13259 INSERT INTO t1 SELECT * FROM t0_template
13260 WHERE MOD(f_int1,3) = 0;
13261         
13262 # check multiple-3 success:     1
13263 UPDATE t1 SET f_int1 = f_int1 + @max_row
13264 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13265 AND @max_row_div2 + @max_row_div4;
13266         
13267 # check multiple-4 success:     1
13268 DELETE FROM t1
13269 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13270 AND @max_row_div2 + @max_row_div4 + @max_row;
13271         
13272 # check multiple-5 success:     1
13273 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13274 INSERT INTO t1
13275 SET f_int1 = @cur_value , f_int2 = @cur_value,
13276 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13277 f_charbig = '#SINGLE#';
13278         
13279 # check single-1 success:       1
13280 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13281 INSERT INTO t1
13282 SET f_int1 = @cur_value , f_int2 = @cur_value,
13283 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13284 f_charbig = '#SINGLE#';
13285         
13286 # check single-2 success:       1
13287 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13288 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13289 UPDATE t1 SET f_int1 = @cur_value2
13290 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13291         
13292 # check single-3 success:       1
13293 SET @cur_value1= -1;
13294 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13295 UPDATE t1 SET f_int1 = @cur_value1
13296 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13297         
13298 # check single-4 success:       1
13299 SELECT MAX(f_int1) INTO @cur_value FROM t1;
13300 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13301         
13302 # check single-5 success:       1
13303 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13304         
13305 # check single-6 success:       1
13306 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13307 ERROR HY000: Table has no partition for value 2147483647
13308 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13309 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13310 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13311 f_charbig = '#NULL#';
13312 INSERT INTO t1
13313 SET f_int1 = NULL , f_int2 = -@max_row,
13314 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13315 f_charbig = '#NULL#';
13316 # check null success:    1
13317         
13318 # check null-1 success:         1
13319 UPDATE t1 SET f_int1 = -@max_row
13320 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13321 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13322         
13323 # check null-2 success:         1
13324 UPDATE t1 SET f_int1 = NULL
13325 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13326 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13327         
13328 # check null-3 success:         1
13329 DELETE FROM t1
13330 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13331 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13332         
13333 # check null-4 success:         1
13334 DELETE FROM t1
13335 WHERE f_int1 = 0 AND f_int2 = 0
13336 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13337 AND f_charbig = '#NULL#';
13338 SET AUTOCOMMIT= 0;
13339 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13340 SELECT f_int1, f_int1, '', '', 'was inserted'
13341 FROM t0_template source_tab
13342 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13343         
13344 # check transactions-1 success:         1
13345 COMMIT WORK;
13346         
13347 # check transactions-2 success:         1
13348 ROLLBACK WORK;
13349         
13350 # check transactions-3 success:         1
13351 DELETE FROM t1 WHERE f_charbig = 'was inserted';
13352 COMMIT WORK;
13353 ROLLBACK WORK;
13354         
13355 # check transactions-4 success:         1
13356 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13357 SELECT f_int1, f_int1, '', '', 'was inserted'
13358 FROM t0_template source_tab
13359 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13360         
13361 # check transactions-5 success:         1
13362 ROLLBACK WORK;
13363 Warnings:
13364 Warning 1196    Some non-transactional changed tables couldn't be rolled back
13365         
13366 # check transactions-6 success:         1
13367 # INFO: Storage engine used for t1 seems to be not transactional.
13368 COMMIT;
13369         
13370 # check transactions-7 success:         1
13371 DELETE FROM t1 WHERE f_charbig = 'was inserted';
13372 COMMIT WORK;
13373 SET @@session.sql_mode = 'traditional';
13374 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13375 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13376 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13377 '', '', 'was inserted' FROM t0_template
13378 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13379 ERROR 22012: Division by 0
13380 COMMIT;
13381         
13382 # check transactions-8 success:         1
13383 # INFO: Storage engine used for t1 seems to be unable to revert
13384 #       changes made by the failing statement.
13385 SET @@session.sql_mode = '';
13386 SET AUTOCOMMIT= 1;
13387 DELETE FROM t1 WHERE f_charbig = 'was inserted';
13388 COMMIT WORK;
13389 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13390         
13391 # check special-1 success:      1
13392 UPDATE t1 SET f_charbig = '';
13393         
13394 # check special-2 success:      1
13395 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13396 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13397 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13398 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13399 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13400 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13401 'just inserted' FROM t0_template
13402 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13403 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13404 BEGIN
13405 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13406 f_charbig = 'updated by trigger'
13407       WHERE f_int1 = new.f_int1;
13408 END|
13409 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13410 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13411 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13412         
13413 # check trigger-1 success:      1
13414 DROP TRIGGER trg_1;
13415 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13416 f_int2 = CAST(f_char1 AS SIGNED INT),
13417 f_charbig = 'just inserted'
13418    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13419 DELETE FROM t0_aux
13420 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13421 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13422 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13423 'just inserted' FROM t0_template
13424 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13425 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13426 BEGIN
13427 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13428 f_charbig = 'updated by trigger'
13429       WHERE f_int1 = new.f_int1;
13430 END|
13431 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13432 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13433 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13434         
13435 # check trigger-2 success:      1
13436 DROP TRIGGER trg_1;
13437 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13438 f_int2 = CAST(f_char1 AS SIGNED INT),
13439 f_charbig = 'just inserted'
13440    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13441 DELETE FROM t0_aux
13442 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13443 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13444 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13445 'just inserted' FROM t0_template
13446 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13447 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13448 BEGIN
13449 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13450 f_charbig = 'updated by trigger'
13451       WHERE f_int1 = new.f_int1;
13452 END|
13453 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13454 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13455         
13456 # check trigger-3 success:      1
13457 DROP TRIGGER trg_1;
13458 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13459 f_int2 = CAST(f_char1 AS SIGNED INT),
13460 f_charbig = 'just inserted'
13461    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13462 DELETE FROM t0_aux
13463 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13464 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13465 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13466 'just inserted' FROM t0_template
13467 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13468 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13469 BEGIN
13470 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13471 f_charbig = 'updated by trigger'
13472       WHERE f_int1 = - old.f_int1;
13473 END|
13474 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13475 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13476         
13477 # check trigger-4 success:      1
13478 DROP TRIGGER trg_1;
13479 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13480 f_int2 = CAST(f_char1 AS SIGNED INT),
13481 f_charbig = 'just inserted'
13482    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13483 DELETE FROM t0_aux
13484 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13485 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13486 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13487 'just inserted' FROM t0_template
13488 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13489 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13490 BEGIN
13491 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13492 f_charbig = 'updated by trigger'
13493       WHERE f_int1 = new.f_int1;
13494 END|
13495 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13496 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13497         
13498 # check trigger-5 success:      1
13499 DROP TRIGGER trg_1;
13500 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13501 f_int2 = CAST(f_char1 AS SIGNED INT),
13502 f_charbig = 'just inserted'
13503    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13504 DELETE FROM t0_aux
13505 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13506 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13507 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13508 'just inserted' FROM t0_template
13509 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13510 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13511 BEGIN
13512 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13513 f_charbig = 'updated by trigger'
13514       WHERE f_int1 = - old.f_int1;
13515 END|
13516 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13517 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13518         
13519 # check trigger-6 success:      1
13520 DROP TRIGGER trg_1;
13521 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13522 f_int2 = CAST(f_char1 AS SIGNED INT),
13523 f_charbig = 'just inserted'
13524    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13525 DELETE FROM t0_aux
13526 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13527 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13528 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13529 'just inserted' FROM t0_template
13530 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13531 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13532 BEGIN
13533 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13534 f_charbig = 'updated by trigger'
13535       WHERE f_int1 = - old.f_int1;
13536 END|
13537 DELETE FROM t0_aux
13538 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13539         
13540 # check trigger-7 success:      1
13541 DROP TRIGGER trg_1;
13542 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13543 f_int2 = CAST(f_char1 AS SIGNED INT),
13544 f_charbig = 'just inserted'
13545    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13546 DELETE FROM t0_aux
13547 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13548 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13549 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13550 'just inserted' FROM t0_template
13551 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13552 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13553 BEGIN
13554 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13555 f_charbig = 'updated by trigger'
13556       WHERE f_int1 = - old.f_int1;
13557 END|
13558 DELETE FROM t0_aux
13559 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13560         
13561 # check trigger-8 success:      1
13562 DROP TRIGGER trg_1;
13563 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13564 f_int2 = CAST(f_char1 AS SIGNED INT),
13565 f_charbig = 'just inserted'
13566    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13567 DELETE FROM t0_aux
13568 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13569 DELETE FROM t1
13570 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13571 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13572 BEGIN
13573 SET new.f_int1 = old.f_int1 + @max_row,
13574 new.f_int2 = old.f_int2 - @max_row,
13575 new.f_charbig = '####updated per update trigger####';
13576 END|
13577 UPDATE t1
13578 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13579 f_charbig = '####updated per update statement itself####';
13580         
13581 # check trigger-9 success:      1
13582 DROP TRIGGER trg_2;
13583 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13584 f_int2 = CAST(f_char1 AS SIGNED INT),
13585 f_charbig = CONCAT('===',f_char1,'===');
13586 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13587 BEGIN
13588 SET new.f_int1 = new.f_int1 + @max_row,
13589 new.f_int2 = new.f_int2 - @max_row,
13590 new.f_charbig = '####updated per update trigger####';
13591 END|
13592 UPDATE t1
13593 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13594 f_charbig = '####updated per update statement itself####';
13595         
13596 # check trigger-10 success:     1
13597 DROP TRIGGER trg_2;
13598 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13599 f_int2 = CAST(f_char1 AS SIGNED INT),
13600 f_charbig = CONCAT('===',f_char1,'===');
13601 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13602 BEGIN
13603 SET new.f_int1 = @my_max1 + @counter,
13604 new.f_int2 = @my_min2 - @counter,
13605 new.f_charbig = '####updated per insert trigger####';
13606 SET @counter = @counter + 1;
13607 END|
13608 SET @counter = 1;
13609 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13610 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13611 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13612 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13613 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13614 ORDER BY f_int1;
13615 DROP TRIGGER trg_3;
13616         
13617 # check trigger-11 success:     1
13618 DELETE FROM t1
13619 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13620 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13621 AND f_charbig = '####updated per insert trigger####';
13622 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13623 BEGIN
13624 SET new.f_int1 = @my_max1 + @counter,
13625 new.f_int2 = @my_min2 - @counter,
13626 new.f_charbig = '####updated per insert trigger####';
13627 SET @counter = @counter + 1;
13628 END|
13629 SET @counter = 1;
13630 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13631 INSERT INTO t1 (f_char1, f_char2, f_charbig)
13632 SELECT CAST(f_int1 AS CHAR),
13633 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13634 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13635 ORDER BY f_int1;
13636 DROP TRIGGER trg_3;
13637         
13638 # check trigger-12 success:     1
13639 DELETE FROM t1
13640 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13641 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13642 AND f_charbig = '####updated per insert trigger####';
13643 ANALYZE  TABLE t1;
13644 Table   Op      Msg_type        Msg_text
13645 test.t1 analyze status  OK
13646 CHECK    TABLE t1 EXTENDED;
13647 Table   Op      Msg_type        Msg_text
13648 test.t1 check   status  OK
13649 CHECKSUM TABLE t1 EXTENDED;
13650 Table   Checksum
13651 test.t1 <some_value>
13652 OPTIMIZE TABLE t1;
13653 Table   Op      Msg_type        Msg_text
13654 test.t1 optimize        status  OK
13655 # check layout success:    1
13656 REPAIR   TABLE t1 EXTENDED;
13657 Table   Op      Msg_type        Msg_text
13658 test.t1 repair  status  OK
13659 # check layout success:    1
13660 TRUNCATE t1;
13661         
13662 # check TRUNCATE success:       1
13663 # check layout success:    1
13664 # End usability test (inc/partition_check.inc)
13665 DROP TABLE t1;
13666 CREATE TABLE t1 (
13667 f_int1 INTEGER,
13668 f_int2 INTEGER,
13669 f_char1 CHAR(20),
13670 f_char2 CHAR(20),
13671 f_charbig VARCHAR(1000)
13674 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
13675 (PARTITION part_1 VALUES LESS THAN (0),
13676 PARTITION part_2 VALUES LESS THAN (5),
13677 PARTITION part_3 VALUES LESS THAN (10),
13678 PARTITION part_4 VALUES LESS THAN (2147483646));
13679 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13680 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13681 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13682 ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
13683 Table   Op      Msg_type        Msg_text
13684 test.t1 analyze error   Error in list of partitions to test.t1
13685 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13686 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13687 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13688 # Start usability test (inc/partition_check.inc)
13689 create_command
13690 SHOW CREATE TABLE t1;
13691 Table   Create Table
13692 t1      CREATE TABLE `t1` (
13693   `f_int1` int(11) DEFAULT NULL,
13694   `f_int2` int(11) DEFAULT NULL,
13695   `f_char1` char(20) DEFAULT NULL,
13696   `f_char2` char(20) DEFAULT NULL,
13697   `f_charbig` varchar(1000) DEFAULT NULL
13698 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
13699 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
13700 SUBPARTITION BY HASH (f_int1)
13701 SUBPARTITIONS 2
13702 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
13703  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
13704  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
13705  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
13707 unified filelist
13708 t1#P#part_1#SP#part_1sp0.MYD
13709 t1#P#part_1#SP#part_1sp0.MYI
13710 t1#P#part_1#SP#part_1sp1.MYD
13711 t1#P#part_1#SP#part_1sp1.MYI
13712 t1#P#part_2#SP#part_2sp0.MYD
13713 t1#P#part_2#SP#part_2sp0.MYI
13714 t1#P#part_2#SP#part_2sp1.MYD
13715 t1#P#part_2#SP#part_2sp1.MYI
13716 t1#P#part_3#SP#part_3sp0.MYD
13717 t1#P#part_3#SP#part_3sp0.MYI
13718 t1#P#part_3#SP#part_3sp1.MYD
13719 t1#P#part_3#SP#part_3sp1.MYI
13720 t1#P#part_4#SP#part_4sp0.MYD
13721 t1#P#part_4#SP#part_4sp0.MYI
13722 t1#P#part_4#SP#part_4sp1.MYD
13723 t1#P#part_4#SP#part_4sp1.MYI
13724 t1.frm
13725 t1.par
13727 # check prerequisites-1 success:    1
13728 # check COUNT(*) success:    1
13729 # check MIN/MAX(f_int1) success:    1
13730 # check MIN/MAX(f_int2) success:    1
13731 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13732 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13733 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13734 WHERE f_int1 IN (2,3);
13735 # check prerequisites-3 success:    1
13736 DELETE FROM t1 WHERE f_charbig = 'delete me';
13737 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13738 # check read via f_int1 success: 1
13739 # check read via f_int2 success: 1
13740         
13741 # check multiple-1 success:     1
13742 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13743         
13744 # check multiple-2 success:     1
13745 INSERT INTO t1 SELECT * FROM t0_template
13746 WHERE MOD(f_int1,3) = 0;
13747         
13748 # check multiple-3 success:     1
13749 UPDATE t1 SET f_int1 = f_int1 + @max_row
13750 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13751 AND @max_row_div2 + @max_row_div4;
13752         
13753 # check multiple-4 success:     1
13754 DELETE FROM t1
13755 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13756 AND @max_row_div2 + @max_row_div4 + @max_row;
13757         
13758 # check multiple-5 success:     1
13759 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13760 INSERT INTO t1
13761 SET f_int1 = @cur_value , f_int2 = @cur_value,
13762 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13763 f_charbig = '#SINGLE#';
13764         
13765 # check single-1 success:       1
13766 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13767 INSERT INTO t1
13768 SET f_int1 = @cur_value , f_int2 = @cur_value,
13769 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13770 f_charbig = '#SINGLE#';
13771         
13772 # check single-2 success:       1
13773 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13774 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13775 UPDATE t1 SET f_int1 = @cur_value2
13776 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13777         
13778 # check single-3 success:       1
13779 SET @cur_value1= -1;
13780 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13781 UPDATE t1 SET f_int1 = @cur_value1
13782 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13783         
13784 # check single-4 success:       1
13785 SELECT MAX(f_int1) INTO @cur_value FROM t1;
13786 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13787         
13788 # check single-5 success:       1
13789 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13790         
13791 # check single-6 success:       1
13792 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13793         
13794 # check single-7 success:       1
13795 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13796 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13797 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13798 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13799 f_charbig = '#NULL#';
13800 INSERT INTO t1
13801 SET f_int1 = NULL , f_int2 = -@max_row,
13802 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13803 f_charbig = '#NULL#';
13804 # check null success:    1
13805         
13806 # check null-1 success:         1
13807 UPDATE t1 SET f_int1 = -@max_row
13808 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13809 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13810         
13811 # check null-2 success:         1
13812 UPDATE t1 SET f_int1 = NULL
13813 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13814 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13815         
13816 # check null-3 success:         1
13817 DELETE FROM t1
13818 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13819 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13820         
13821 # check null-4 success:         1
13822 DELETE FROM t1
13823 WHERE f_int1 = 0 AND f_int2 = 0
13824 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13825 AND f_charbig = '#NULL#';
13826 SET AUTOCOMMIT= 0;
13827 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13828 SELECT f_int1, f_int1, '', '', 'was inserted'
13829 FROM t0_template source_tab
13830 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13831         
13832 # check transactions-1 success:         1
13833 COMMIT WORK;
13834         
13835 # check transactions-2 success:         1
13836 ROLLBACK WORK;
13837         
13838 # check transactions-3 success:         1
13839 DELETE FROM t1 WHERE f_charbig = 'was inserted';
13840 COMMIT WORK;
13841 ROLLBACK WORK;
13842         
13843 # check transactions-4 success:         1
13844 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13845 SELECT f_int1, f_int1, '', '', 'was inserted'
13846 FROM t0_template source_tab
13847 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13848         
13849 # check transactions-5 success:         1
13850 ROLLBACK WORK;
13851 Warnings:
13852 Warning 1196    Some non-transactional changed tables couldn't be rolled back
13853         
13854 # check transactions-6 success:         1
13855 # INFO: Storage engine used for t1 seems to be not transactional.
13856 COMMIT;
13857         
13858 # check transactions-7 success:         1
13859 DELETE FROM t1 WHERE f_charbig = 'was inserted';
13860 COMMIT WORK;
13861 SET @@session.sql_mode = 'traditional';
13862 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13863 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13864 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13865 '', '', 'was inserted' FROM t0_template
13866 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13867 ERROR 22012: Division by 0
13868 COMMIT;
13869         
13870 # check transactions-8 success:         1
13871 # INFO: Storage engine used for t1 seems to be unable to revert
13872 #       changes made by the failing statement.
13873 SET @@session.sql_mode = '';
13874 SET AUTOCOMMIT= 1;
13875 DELETE FROM t1 WHERE f_charbig = 'was inserted';
13876 COMMIT WORK;
13877 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13878         
13879 # check special-1 success:      1
13880 UPDATE t1 SET f_charbig = '';
13881         
13882 # check special-2 success:      1
13883 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13884 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13885 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13886 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13887 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13888 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13889 'just inserted' FROM t0_template
13890 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13891 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13892 BEGIN
13893 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13894 f_charbig = 'updated by trigger'
13895       WHERE f_int1 = new.f_int1;
13896 END|
13897 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13898 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13899 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13900         
13901 # check trigger-1 success:      1
13902 DROP TRIGGER trg_1;
13903 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13904 f_int2 = CAST(f_char1 AS SIGNED INT),
13905 f_charbig = 'just inserted'
13906    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13907 DELETE FROM t0_aux
13908 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13909 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13910 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13911 'just inserted' FROM t0_template
13912 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13913 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13914 BEGIN
13915 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13916 f_charbig = 'updated by trigger'
13917       WHERE f_int1 = new.f_int1;
13918 END|
13919 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13920 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13921 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13922         
13923 # check trigger-2 success:      1
13924 DROP TRIGGER trg_1;
13925 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13926 f_int2 = CAST(f_char1 AS SIGNED INT),
13927 f_charbig = 'just inserted'
13928    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13929 DELETE FROM t0_aux
13930 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13931 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13932 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13933 'just inserted' FROM t0_template
13934 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13935 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13936 BEGIN
13937 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13938 f_charbig = 'updated by trigger'
13939       WHERE f_int1 = new.f_int1;
13940 END|
13941 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13942 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13943         
13944 # check trigger-3 success:      1
13945 DROP TRIGGER trg_1;
13946 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13947 f_int2 = CAST(f_char1 AS SIGNED INT),
13948 f_charbig = 'just inserted'
13949    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13950 DELETE FROM t0_aux
13951 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13952 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13953 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13954 'just inserted' FROM t0_template
13955 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13956 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13957 BEGIN
13958 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13959 f_charbig = 'updated by trigger'
13960       WHERE f_int1 = - old.f_int1;
13961 END|
13962 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13963 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13964         
13965 # check trigger-4 success:      1
13966 DROP TRIGGER trg_1;
13967 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13968 f_int2 = CAST(f_char1 AS SIGNED INT),
13969 f_charbig = 'just inserted'
13970    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13971 DELETE FROM t0_aux
13972 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13973 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13974 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13975 'just inserted' FROM t0_template
13976 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13977 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13978 BEGIN
13979 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13980 f_charbig = 'updated by trigger'
13981       WHERE f_int1 = new.f_int1;
13982 END|
13983 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
13984 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13985         
13986 # check trigger-5 success:      1
13987 DROP TRIGGER trg_1;
13988 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13989 f_int2 = CAST(f_char1 AS SIGNED INT),
13990 f_charbig = 'just inserted'
13991    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13992 DELETE FROM t0_aux
13993 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13994 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13995 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13996 'just inserted' FROM t0_template
13997 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13998 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13999 BEGIN
14000 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14001 f_charbig = 'updated by trigger'
14002       WHERE f_int1 = - old.f_int1;
14003 END|
14004 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14005 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14006         
14007 # check trigger-6 success:      1
14008 DROP TRIGGER trg_1;
14009 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14010 f_int2 = CAST(f_char1 AS SIGNED INT),
14011 f_charbig = 'just inserted'
14012    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14013 DELETE FROM t0_aux
14014 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14015 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14016 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14017 'just inserted' FROM t0_template
14018 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14019 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14020 BEGIN
14021 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14022 f_charbig = 'updated by trigger'
14023       WHERE f_int1 = - old.f_int1;
14024 END|
14025 DELETE FROM t0_aux
14026 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14027         
14028 # check trigger-7 success:      1
14029 DROP TRIGGER trg_1;
14030 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14031 f_int2 = CAST(f_char1 AS SIGNED INT),
14032 f_charbig = 'just inserted'
14033    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14034 DELETE FROM t0_aux
14035 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14036 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14037 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14038 'just inserted' FROM t0_template
14039 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14040 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14041 BEGIN
14042 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14043 f_charbig = 'updated by trigger'
14044       WHERE f_int1 = - old.f_int1;
14045 END|
14046 DELETE FROM t0_aux
14047 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14048         
14049 # check trigger-8 success:      1
14050 DROP TRIGGER trg_1;
14051 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14052 f_int2 = CAST(f_char1 AS SIGNED INT),
14053 f_charbig = 'just inserted'
14054    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14055 DELETE FROM t0_aux
14056 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14057 DELETE FROM t1
14058 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14059 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14060 BEGIN
14061 SET new.f_int1 = old.f_int1 + @max_row,
14062 new.f_int2 = old.f_int2 - @max_row,
14063 new.f_charbig = '####updated per update trigger####';
14064 END|
14065 UPDATE t1
14066 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14067 f_charbig = '####updated per update statement itself####';
14068         
14069 # check trigger-9 success:      1
14070 DROP TRIGGER trg_2;
14071 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14072 f_int2 = CAST(f_char1 AS SIGNED INT),
14073 f_charbig = CONCAT('===',f_char1,'===');
14074 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14075 BEGIN
14076 SET new.f_int1 = new.f_int1 + @max_row,
14077 new.f_int2 = new.f_int2 - @max_row,
14078 new.f_charbig = '####updated per update trigger####';
14079 END|
14080 UPDATE t1
14081 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14082 f_charbig = '####updated per update statement itself####';
14083         
14084 # check trigger-10 success:     1
14085 DROP TRIGGER trg_2;
14086 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14087 f_int2 = CAST(f_char1 AS SIGNED INT),
14088 f_charbig = CONCAT('===',f_char1,'===');
14089 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14090 BEGIN
14091 SET new.f_int1 = @my_max1 + @counter,
14092 new.f_int2 = @my_min2 - @counter,
14093 new.f_charbig = '####updated per insert trigger####';
14094 SET @counter = @counter + 1;
14095 END|
14096 SET @counter = 1;
14097 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14098 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14099 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14100 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14101 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14102 ORDER BY f_int1;
14103 DROP TRIGGER trg_3;
14104         
14105 # check trigger-11 success:     1
14106 DELETE FROM t1
14107 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14108 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14109 AND f_charbig = '####updated per insert trigger####';
14110 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14111 BEGIN
14112 SET new.f_int1 = @my_max1 + @counter,
14113 new.f_int2 = @my_min2 - @counter,
14114 new.f_charbig = '####updated per insert trigger####';
14115 SET @counter = @counter + 1;
14116 END|
14117 SET @counter = 1;
14118 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14119 INSERT INTO t1 (f_char1, f_char2, f_charbig)
14120 SELECT CAST(f_int1 AS CHAR),
14121 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14122 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14123 ORDER BY f_int1;
14124 DROP TRIGGER trg_3;
14125         
14126 # check trigger-12 success:     1
14127 DELETE FROM t1
14128 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14129 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14130 AND f_charbig = '####updated per insert trigger####';
14131 ANALYZE  TABLE t1;
14132 Table   Op      Msg_type        Msg_text
14133 test.t1 analyze status  OK
14134 CHECK    TABLE t1 EXTENDED;
14135 Table   Op      Msg_type        Msg_text
14136 test.t1 check   status  OK
14137 CHECKSUM TABLE t1 EXTENDED;
14138 Table   Checksum
14139 test.t1 <some_value>
14140 OPTIMIZE TABLE t1;
14141 Table   Op      Msg_type        Msg_text
14142 test.t1 optimize        status  OK
14143 # check layout success:    1
14144 REPAIR   TABLE t1 EXTENDED;
14145 Table   Op      Msg_type        Msg_text
14146 test.t1 repair  status  OK
14147 # check layout success:    1
14148 TRUNCATE t1;
14149         
14150 # check TRUNCATE success:       1
14151 # check layout success:    1
14152 # End usability test (inc/partition_check.inc)
14153 DROP TABLE t1;
14154 CREATE TABLE t1 (
14155 f_int1 INTEGER,
14156 f_int2 INTEGER,
14157 f_char1 CHAR(20),
14158 f_char2 CHAR(20),
14159 f_charbig VARCHAR(1000)
14162 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
14163 (PARTITION part_1 VALUES LESS THAN (0)
14164 (SUBPARTITION subpart11, SUBPARTITION subpart12),
14165 PARTITION part_2 VALUES LESS THAN (5)
14166 (SUBPARTITION subpart21, SUBPARTITION subpart22),
14167 PARTITION part_3 VALUES LESS THAN (10)
14168 (SUBPARTITION subpart31, SUBPARTITION subpart32),
14169 PARTITION part_4 VALUES LESS THAN (2147483646)
14170 (SUBPARTITION subpart41, SUBPARTITION subpart42));
14171 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14172 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14173 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14174 ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
14175 Table   Op      Msg_type        Msg_text
14176 test.t1 analyze error   Error in list of partitions to test.t1
14177 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14178 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14179 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14180 # Start usability test (inc/partition_check.inc)
14181 create_command
14182 SHOW CREATE TABLE t1;
14183 Table   Create Table
14184 t1      CREATE TABLE `t1` (
14185   `f_int1` int(11) DEFAULT NULL,
14186   `f_int2` int(11) DEFAULT NULL,
14187   `f_char1` char(20) DEFAULT NULL,
14188   `f_char2` char(20) DEFAULT NULL,
14189   `f_charbig` varchar(1000) DEFAULT NULL
14190 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
14191 /*!50100 PARTITION BY RANGE (f_int1)
14192 SUBPARTITION BY KEY (f_int1)
14193 (PARTITION part_1 VALUES LESS THAN (0)
14194  (SUBPARTITION subpart11 ENGINE = MyISAM,
14195   SUBPARTITION subpart12 ENGINE = MyISAM),
14196  PARTITION part_2 VALUES LESS THAN (5)
14197  (SUBPARTITION subpart21 ENGINE = MyISAM,
14198   SUBPARTITION subpart22 ENGINE = MyISAM),
14199  PARTITION part_3 VALUES LESS THAN (10)
14200  (SUBPARTITION subpart31 ENGINE = MyISAM,
14201   SUBPARTITION subpart32 ENGINE = MyISAM),
14202  PARTITION part_4 VALUES LESS THAN (2147483646)
14203  (SUBPARTITION subpart41 ENGINE = MyISAM,
14204   SUBPARTITION subpart42 ENGINE = MyISAM)) */
14206 unified filelist
14207 t1#P#part_1#SP#subpart11.MYD
14208 t1#P#part_1#SP#subpart11.MYI
14209 t1#P#part_1#SP#subpart12.MYD
14210 t1#P#part_1#SP#subpart12.MYI
14211 t1#P#part_2#SP#subpart21.MYD
14212 t1#P#part_2#SP#subpart21.MYI
14213 t1#P#part_2#SP#subpart22.MYD
14214 t1#P#part_2#SP#subpart22.MYI
14215 t1#P#part_3#SP#subpart31.MYD
14216 t1#P#part_3#SP#subpart31.MYI
14217 t1#P#part_3#SP#subpart32.MYD
14218 t1#P#part_3#SP#subpart32.MYI
14219 t1#P#part_4#SP#subpart41.MYD
14220 t1#P#part_4#SP#subpart41.MYI
14221 t1#P#part_4#SP#subpart42.MYD
14222 t1#P#part_4#SP#subpart42.MYI
14223 t1.frm
14224 t1.par
14226 # check prerequisites-1 success:    1
14227 # check COUNT(*) success:    1
14228 # check MIN/MAX(f_int1) success:    1
14229 # check MIN/MAX(f_int2) success:    1
14230 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14231 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14232 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14233 WHERE f_int1 IN (2,3);
14234 # check prerequisites-3 success:    1
14235 DELETE FROM t1 WHERE f_charbig = 'delete me';
14236 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14237 # check read via f_int1 success: 1
14238 # check read via f_int2 success: 1
14239         
14240 # check multiple-1 success:     1
14241 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14242         
14243 # check multiple-2 success:     1
14244 INSERT INTO t1 SELECT * FROM t0_template
14245 WHERE MOD(f_int1,3) = 0;
14246         
14247 # check multiple-3 success:     1
14248 UPDATE t1 SET f_int1 = f_int1 + @max_row
14249 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14250 AND @max_row_div2 + @max_row_div4;
14251         
14252 # check multiple-4 success:     1
14253 DELETE FROM t1
14254 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14255 AND @max_row_div2 + @max_row_div4 + @max_row;
14256         
14257 # check multiple-5 success:     1
14258 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14259 INSERT INTO t1
14260 SET f_int1 = @cur_value , f_int2 = @cur_value,
14261 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14262 f_charbig = '#SINGLE#';
14263         
14264 # check single-1 success:       1
14265 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14266 INSERT INTO t1
14267 SET f_int1 = @cur_value , f_int2 = @cur_value,
14268 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14269 f_charbig = '#SINGLE#';
14270         
14271 # check single-2 success:       1
14272 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14273 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14274 UPDATE t1 SET f_int1 = @cur_value2
14275 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14276         
14277 # check single-3 success:       1
14278 SET @cur_value1= -1;
14279 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14280 UPDATE t1 SET f_int1 = @cur_value1
14281 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14282         
14283 # check single-4 success:       1
14284 SELECT MAX(f_int1) INTO @cur_value FROM t1;
14285 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14286         
14287 # check single-5 success:       1
14288 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14289         
14290 # check single-6 success:       1
14291 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14292 ERROR HY000: Table has no partition for value 2147483647
14293 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14294 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14295 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14296 f_charbig = '#NULL#';
14297 INSERT INTO t1
14298 SET f_int1 = NULL , f_int2 = -@max_row,
14299 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14300 f_charbig = '#NULL#';
14301 # check null success:    1
14302         
14303 # check null-1 success:         1
14304 UPDATE t1 SET f_int1 = -@max_row
14305 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14306 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14307         
14308 # check null-2 success:         1
14309 UPDATE t1 SET f_int1 = NULL
14310 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14311 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14312         
14313 # check null-3 success:         1
14314 DELETE FROM t1
14315 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14316 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14317         
14318 # check null-4 success:         1
14319 DELETE FROM t1
14320 WHERE f_int1 = 0 AND f_int2 = 0
14321 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14322 AND f_charbig = '#NULL#';
14323 SET AUTOCOMMIT= 0;
14324 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14325 SELECT f_int1, f_int1, '', '', 'was inserted'
14326 FROM t0_template source_tab
14327 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14328         
14329 # check transactions-1 success:         1
14330 COMMIT WORK;
14331         
14332 # check transactions-2 success:         1
14333 ROLLBACK WORK;
14334         
14335 # check transactions-3 success:         1
14336 DELETE FROM t1 WHERE f_charbig = 'was inserted';
14337 COMMIT WORK;
14338 ROLLBACK WORK;
14339         
14340 # check transactions-4 success:         1
14341 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14342 SELECT f_int1, f_int1, '', '', 'was inserted'
14343 FROM t0_template source_tab
14344 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14345         
14346 # check transactions-5 success:         1
14347 ROLLBACK WORK;
14348 Warnings:
14349 Warning 1196    Some non-transactional changed tables couldn't be rolled back
14350         
14351 # check transactions-6 success:         1
14352 # INFO: Storage engine used for t1 seems to be not transactional.
14353 COMMIT;
14354         
14355 # check transactions-7 success:         1
14356 DELETE FROM t1 WHERE f_charbig = 'was inserted';
14357 COMMIT WORK;
14358 SET @@session.sql_mode = 'traditional';
14359 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14360 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14361 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14362 '', '', 'was inserted' FROM t0_template
14363 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14364 ERROR 22012: Division by 0
14365 COMMIT;
14366         
14367 # check transactions-8 success:         1
14368 # INFO: Storage engine used for t1 seems to be unable to revert
14369 #       changes made by the failing statement.
14370 SET @@session.sql_mode = '';
14371 SET AUTOCOMMIT= 1;
14372 DELETE FROM t1 WHERE f_charbig = 'was inserted';
14373 COMMIT WORK;
14374 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14375         
14376 # check special-1 success:      1
14377 UPDATE t1 SET f_charbig = '';
14378         
14379 # check special-2 success:      1
14380 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14381 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14382 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14383 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14384 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14385 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14386 'just inserted' FROM t0_template
14387 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14388 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14389 BEGIN
14390 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14391 f_charbig = 'updated by trigger'
14392       WHERE f_int1 = new.f_int1;
14393 END|
14394 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14395 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14396 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14397         
14398 # check trigger-1 success:      1
14399 DROP TRIGGER trg_1;
14400 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14401 f_int2 = CAST(f_char1 AS SIGNED INT),
14402 f_charbig = 'just inserted'
14403    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14404 DELETE FROM t0_aux
14405 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14406 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14407 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14408 'just inserted' FROM t0_template
14409 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14410 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14411 BEGIN
14412 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14413 f_charbig = 'updated by trigger'
14414       WHERE f_int1 = new.f_int1;
14415 END|
14416 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14417 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14418 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14419         
14420 # check trigger-2 success:      1
14421 DROP TRIGGER trg_1;
14422 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14423 f_int2 = CAST(f_char1 AS SIGNED INT),
14424 f_charbig = 'just inserted'
14425    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14426 DELETE FROM t0_aux
14427 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14428 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14429 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14430 'just inserted' FROM t0_template
14431 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14432 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14433 BEGIN
14434 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14435 f_charbig = 'updated by trigger'
14436       WHERE f_int1 = new.f_int1;
14437 END|
14438 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14439 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14440         
14441 # check trigger-3 success:      1
14442 DROP TRIGGER trg_1;
14443 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14444 f_int2 = CAST(f_char1 AS SIGNED INT),
14445 f_charbig = 'just inserted'
14446    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14447 DELETE FROM t0_aux
14448 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14449 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14450 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14451 'just inserted' FROM t0_template
14452 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14453 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14454 BEGIN
14455 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14456 f_charbig = 'updated by trigger'
14457       WHERE f_int1 = - old.f_int1;
14458 END|
14459 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14460 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14461         
14462 # check trigger-4 success:      1
14463 DROP TRIGGER trg_1;
14464 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14465 f_int2 = CAST(f_char1 AS SIGNED INT),
14466 f_charbig = 'just inserted'
14467    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14468 DELETE FROM t0_aux
14469 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14470 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14471 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14472 'just inserted' FROM t0_template
14473 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14474 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14475 BEGIN
14476 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14477 f_charbig = 'updated by trigger'
14478       WHERE f_int1 = new.f_int1;
14479 END|
14480 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14481 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14482         
14483 # check trigger-5 success:      1
14484 DROP TRIGGER trg_1;
14485 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14486 f_int2 = CAST(f_char1 AS SIGNED INT),
14487 f_charbig = 'just inserted'
14488    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14489 DELETE FROM t0_aux
14490 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14491 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14492 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14493 'just inserted' FROM t0_template
14494 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14495 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14496 BEGIN
14497 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14498 f_charbig = 'updated by trigger'
14499       WHERE f_int1 = - old.f_int1;
14500 END|
14501 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14502 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14503         
14504 # check trigger-6 success:      1
14505 DROP TRIGGER trg_1;
14506 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14507 f_int2 = CAST(f_char1 AS SIGNED INT),
14508 f_charbig = 'just inserted'
14509    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14510 DELETE FROM t0_aux
14511 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14512 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14513 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14514 'just inserted' FROM t0_template
14515 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14516 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14517 BEGIN
14518 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14519 f_charbig = 'updated by trigger'
14520       WHERE f_int1 = - old.f_int1;
14521 END|
14522 DELETE FROM t0_aux
14523 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14524         
14525 # check trigger-7 success:      1
14526 DROP TRIGGER trg_1;
14527 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14528 f_int2 = CAST(f_char1 AS SIGNED INT),
14529 f_charbig = 'just inserted'
14530    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14531 DELETE FROM t0_aux
14532 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14533 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14534 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14535 'just inserted' FROM t0_template
14536 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14537 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14538 BEGIN
14539 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14540 f_charbig = 'updated by trigger'
14541       WHERE f_int1 = - old.f_int1;
14542 END|
14543 DELETE FROM t0_aux
14544 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14545         
14546 # check trigger-8 success:      1
14547 DROP TRIGGER trg_1;
14548 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14549 f_int2 = CAST(f_char1 AS SIGNED INT),
14550 f_charbig = 'just inserted'
14551    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14552 DELETE FROM t0_aux
14553 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14554 DELETE FROM t1
14555 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14556 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14557 BEGIN
14558 SET new.f_int1 = old.f_int1 + @max_row,
14559 new.f_int2 = old.f_int2 - @max_row,
14560 new.f_charbig = '####updated per update trigger####';
14561 END|
14562 UPDATE t1
14563 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14564 f_charbig = '####updated per update statement itself####';
14565         
14566 # check trigger-9 success:      1
14567 DROP TRIGGER trg_2;
14568 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14569 f_int2 = CAST(f_char1 AS SIGNED INT),
14570 f_charbig = CONCAT('===',f_char1,'===');
14571 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14572 BEGIN
14573 SET new.f_int1 = new.f_int1 + @max_row,
14574 new.f_int2 = new.f_int2 - @max_row,
14575 new.f_charbig = '####updated per update trigger####';
14576 END|
14577 UPDATE t1
14578 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14579 f_charbig = '####updated per update statement itself####';
14580         
14581 # check trigger-10 success:     1
14582 DROP TRIGGER trg_2;
14583 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14584 f_int2 = CAST(f_char1 AS SIGNED INT),
14585 f_charbig = CONCAT('===',f_char1,'===');
14586 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14587 BEGIN
14588 SET new.f_int1 = @my_max1 + @counter,
14589 new.f_int2 = @my_min2 - @counter,
14590 new.f_charbig = '####updated per insert trigger####';
14591 SET @counter = @counter + 1;
14592 END|
14593 SET @counter = 1;
14594 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14595 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14596 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14597 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14598 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14599 ORDER BY f_int1;
14600 DROP TRIGGER trg_3;
14601         
14602 # check trigger-11 success:     1
14603 DELETE FROM t1
14604 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14605 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14606 AND f_charbig = '####updated per insert trigger####';
14607 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14608 BEGIN
14609 SET new.f_int1 = @my_max1 + @counter,
14610 new.f_int2 = @my_min2 - @counter,
14611 new.f_charbig = '####updated per insert trigger####';
14612 SET @counter = @counter + 1;
14613 END|
14614 SET @counter = 1;
14615 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14616 INSERT INTO t1 (f_char1, f_char2, f_charbig)
14617 SELECT CAST(f_int1 AS CHAR),
14618 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14619 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14620 ORDER BY f_int1;
14621 DROP TRIGGER trg_3;
14622         
14623 # check trigger-12 success:     1
14624 DELETE FROM t1
14625 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14626 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14627 AND f_charbig = '####updated per insert trigger####';
14628 ANALYZE  TABLE t1;
14629 Table   Op      Msg_type        Msg_text
14630 test.t1 analyze status  OK
14631 CHECK    TABLE t1 EXTENDED;
14632 Table   Op      Msg_type        Msg_text
14633 test.t1 check   status  OK
14634 CHECKSUM TABLE t1 EXTENDED;
14635 Table   Checksum
14636 test.t1 <some_value>
14637 OPTIMIZE TABLE t1;
14638 Table   Op      Msg_type        Msg_text
14639 test.t1 optimize        status  OK
14640 # check layout success:    1
14641 REPAIR   TABLE t1 EXTENDED;
14642 Table   Op      Msg_type        Msg_text
14643 test.t1 repair  status  OK
14644 # check layout success:    1
14645 TRUNCATE t1;
14646         
14647 # check TRUNCATE success:       1
14648 # check layout success:    1
14649 # End usability test (inc/partition_check.inc)
14650 DROP TABLE t1;
14651 CREATE TABLE t1 (
14652 f_int1 INTEGER,
14653 f_int2 INTEGER,
14654 f_char1 CHAR(20),
14655 f_char2 CHAR(20),
14656 f_charbig VARCHAR(1000)
14659 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
14660 (PARTITION part_1 VALUES IN (0)
14661 (SUBPARTITION sp11, SUBPARTITION sp12),
14662 PARTITION part_2 VALUES IN (1)
14663 (SUBPARTITION sp21, SUBPARTITION sp22),
14664 PARTITION part_3 VALUES IN (2)
14665 (SUBPARTITION sp31, SUBPARTITION sp32),
14666 PARTITION part_4 VALUES IN (NULL)
14667 (SUBPARTITION sp41, SUBPARTITION sp42));
14668 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14669 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14670 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14671 ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
14672 Table   Op      Msg_type        Msg_text
14673 test.t1 analyze error   Error in list of partitions to test.t1
14674 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14675 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14676 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14677 # Start usability test (inc/partition_check.inc)
14678 create_command
14679 SHOW CREATE TABLE t1;
14680 Table   Create Table
14681 t1      CREATE TABLE `t1` (
14682   `f_int1` int(11) DEFAULT NULL,
14683   `f_int2` int(11) DEFAULT NULL,
14684   `f_char1` char(20) DEFAULT NULL,
14685   `f_char2` char(20) DEFAULT NULL,
14686   `f_charbig` varchar(1000) DEFAULT NULL
14687 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
14688 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
14689 SUBPARTITION BY HASH (f_int1 + 1)
14690 (PARTITION part_1 VALUES IN (0)
14691  (SUBPARTITION sp11 ENGINE = MyISAM,
14692   SUBPARTITION sp12 ENGINE = MyISAM),
14693  PARTITION part_2 VALUES IN (1)
14694  (SUBPARTITION sp21 ENGINE = MyISAM,
14695   SUBPARTITION sp22 ENGINE = MyISAM),
14696  PARTITION part_3 VALUES IN (2)
14697  (SUBPARTITION sp31 ENGINE = MyISAM,
14698   SUBPARTITION sp32 ENGINE = MyISAM),
14699  PARTITION part_4 VALUES IN (NULL)
14700  (SUBPARTITION sp41 ENGINE = MyISAM,
14701   SUBPARTITION sp42 ENGINE = MyISAM)) */
14703 unified filelist
14704 t1#P#part_1#SP#sp11.MYD
14705 t1#P#part_1#SP#sp11.MYI
14706 t1#P#part_1#SP#sp12.MYD
14707 t1#P#part_1#SP#sp12.MYI
14708 t1#P#part_2#SP#sp21.MYD
14709 t1#P#part_2#SP#sp21.MYI
14710 t1#P#part_2#SP#sp22.MYD
14711 t1#P#part_2#SP#sp22.MYI
14712 t1#P#part_3#SP#sp31.MYD
14713 t1#P#part_3#SP#sp31.MYI
14714 t1#P#part_3#SP#sp32.MYD
14715 t1#P#part_3#SP#sp32.MYI
14716 t1#P#part_4#SP#sp41.MYD
14717 t1#P#part_4#SP#sp41.MYI
14718 t1#P#part_4#SP#sp42.MYD
14719 t1#P#part_4#SP#sp42.MYI
14720 t1.frm
14721 t1.par
14723 # check prerequisites-1 success:    1
14724 # check COUNT(*) success:    1
14725 # check MIN/MAX(f_int1) success:    1
14726 # check MIN/MAX(f_int2) success:    1
14727 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14728 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14729 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14730 WHERE f_int1 IN (2,3);
14731 # check prerequisites-3 success:    1
14732 DELETE FROM t1 WHERE f_charbig = 'delete me';
14733 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14734 # check read via f_int1 success: 1
14735 # check read via f_int2 success: 1
14736         
14737 # check multiple-1 success:     1
14738 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14739         
14740 # check multiple-2 success:     1
14741 INSERT INTO t1 SELECT * FROM t0_template
14742 WHERE MOD(f_int1,3) = 0;
14743         
14744 # check multiple-3 success:     1
14745 UPDATE t1 SET f_int1 = f_int1 + @max_row
14746 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14747 AND @max_row_div2 + @max_row_div4;
14748         
14749 # check multiple-4 success:     1
14750 DELETE FROM t1
14751 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14752 AND @max_row_div2 + @max_row_div4 + @max_row;
14753         
14754 # check multiple-5 success:     1
14755 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14756 INSERT INTO t1
14757 SET f_int1 = @cur_value , f_int2 = @cur_value,
14758 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14759 f_charbig = '#SINGLE#';
14760         
14761 # check single-1 success:       1
14762 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14763 INSERT INTO t1
14764 SET f_int1 = @cur_value , f_int2 = @cur_value,
14765 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14766 f_charbig = '#SINGLE#';
14767         
14768 # check single-2 success:       1
14769 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14770 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14771 UPDATE t1 SET f_int1 = @cur_value2
14772 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14773         
14774 # check single-3 success:       1
14775 SET @cur_value1= -1;
14776 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14777 UPDATE t1 SET f_int1 = @cur_value1
14778 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14779         
14780 # check single-4 success:       1
14781 SELECT MAX(f_int1) INTO @cur_value FROM t1;
14782 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14783         
14784 # check single-5 success:       1
14785 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14786         
14787 # check single-6 success:       1
14788 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14789         
14790 # check single-7 success:       1
14791 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14792 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14793 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14794 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14795 f_charbig = '#NULL#';
14796 INSERT INTO t1
14797 SET f_int1 = NULL , f_int2 = -@max_row,
14798 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14799 f_charbig = '#NULL#';
14800 # check null success:    1
14801         
14802 # check null-1 success:         1
14803 UPDATE t1 SET f_int1 = -@max_row
14804 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14805 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14806         
14807 # check null-2 success:         1
14808 UPDATE t1 SET f_int1 = NULL
14809 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14810 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14811         
14812 # check null-3 success:         1
14813 DELETE FROM t1
14814 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14815 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14816         
14817 # check null-4 success:         1
14818 DELETE FROM t1
14819 WHERE f_int1 = 0 AND f_int2 = 0
14820 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14821 AND f_charbig = '#NULL#';
14822 SET AUTOCOMMIT= 0;
14823 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14824 SELECT f_int1, f_int1, '', '', 'was inserted'
14825 FROM t0_template source_tab
14826 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14827         
14828 # check transactions-1 success:         1
14829 COMMIT WORK;
14830         
14831 # check transactions-2 success:         1
14832 ROLLBACK WORK;
14833         
14834 # check transactions-3 success:         1
14835 DELETE FROM t1 WHERE f_charbig = 'was inserted';
14836 COMMIT WORK;
14837 ROLLBACK WORK;
14838         
14839 # check transactions-4 success:         1
14840 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14841 SELECT f_int1, f_int1, '', '', 'was inserted'
14842 FROM t0_template source_tab
14843 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14844         
14845 # check transactions-5 success:         1
14846 ROLLBACK WORK;
14847 Warnings:
14848 Warning 1196    Some non-transactional changed tables couldn't be rolled back
14849         
14850 # check transactions-6 success:         1
14851 # INFO: Storage engine used for t1 seems to be not transactional.
14852 COMMIT;
14853         
14854 # check transactions-7 success:         1
14855 DELETE FROM t1 WHERE f_charbig = 'was inserted';
14856 COMMIT WORK;
14857 SET @@session.sql_mode = 'traditional';
14858 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14859 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14860 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14861 '', '', 'was inserted' FROM t0_template
14862 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14863 ERROR 22012: Division by 0
14864 COMMIT;
14865         
14866 # check transactions-8 success:         1
14867 # INFO: Storage engine used for t1 seems to be unable to revert
14868 #       changes made by the failing statement.
14869 SET @@session.sql_mode = '';
14870 SET AUTOCOMMIT= 1;
14871 DELETE FROM t1 WHERE f_charbig = 'was inserted';
14872 COMMIT WORK;
14873 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14874         
14875 # check special-1 success:      1
14876 UPDATE t1 SET f_charbig = '';
14877         
14878 # check special-2 success:      1
14879 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14880 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14881 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14882 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14883 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14884 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14885 'just inserted' FROM t0_template
14886 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14887 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14888 BEGIN
14889 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14890 f_charbig = 'updated by trigger'
14891       WHERE f_int1 = new.f_int1;
14892 END|
14893 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14894 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14895 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14896         
14897 # check trigger-1 success:      1
14898 DROP TRIGGER trg_1;
14899 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14900 f_int2 = CAST(f_char1 AS SIGNED INT),
14901 f_charbig = 'just inserted'
14902    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14903 DELETE FROM t0_aux
14904 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14905 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14906 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14907 'just inserted' FROM t0_template
14908 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14909 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14910 BEGIN
14911 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14912 f_charbig = 'updated by trigger'
14913       WHERE f_int1 = new.f_int1;
14914 END|
14915 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14916 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14917 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14918         
14919 # check trigger-2 success:      1
14920 DROP TRIGGER trg_1;
14921 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14922 f_int2 = CAST(f_char1 AS SIGNED INT),
14923 f_charbig = 'just inserted'
14924    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14925 DELETE FROM t0_aux
14926 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14927 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14928 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14929 'just inserted' FROM t0_template
14930 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14931 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14932 BEGIN
14933 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14934 f_charbig = 'updated by trigger'
14935       WHERE f_int1 = new.f_int1;
14936 END|
14937 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14938 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14939         
14940 # check trigger-3 success:      1
14941 DROP TRIGGER trg_1;
14942 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14943 f_int2 = CAST(f_char1 AS SIGNED INT),
14944 f_charbig = 'just inserted'
14945    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14946 DELETE FROM t0_aux
14947 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14948 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14949 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14950 'just inserted' FROM t0_template
14951 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14952 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14953 BEGIN
14954 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14955 f_charbig = 'updated by trigger'
14956       WHERE f_int1 = - old.f_int1;
14957 END|
14958 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14959 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14960         
14961 # check trigger-4 success:      1
14962 DROP TRIGGER trg_1;
14963 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14964 f_int2 = CAST(f_char1 AS SIGNED INT),
14965 f_charbig = 'just inserted'
14966    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14967 DELETE FROM t0_aux
14968 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14969 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14970 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14971 'just inserted' FROM t0_template
14972 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14973 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14974 BEGIN
14975 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14976 f_charbig = 'updated by trigger'
14977       WHERE f_int1 = new.f_int1;
14978 END|
14979 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
14980 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14981         
14982 # check trigger-5 success:      1
14983 DROP TRIGGER trg_1;
14984 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14985 f_int2 = CAST(f_char1 AS SIGNED INT),
14986 f_charbig = 'just inserted'
14987    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14988 DELETE FROM t0_aux
14989 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14990 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14991 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14992 'just inserted' FROM t0_template
14993 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14994 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14995 BEGIN
14996 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14997 f_charbig = 'updated by trigger'
14998       WHERE f_int1 = - old.f_int1;
14999 END|
15000 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15001 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15002         
15003 # check trigger-6 success:      1
15004 DROP TRIGGER trg_1;
15005 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15006 f_int2 = CAST(f_char1 AS SIGNED INT),
15007 f_charbig = 'just inserted'
15008    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15009 DELETE FROM t0_aux
15010 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15011 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15012 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15013 'just inserted' FROM t0_template
15014 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15015 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15016 BEGIN
15017 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15018 f_charbig = 'updated by trigger'
15019       WHERE f_int1 = - old.f_int1;
15020 END|
15021 DELETE FROM t0_aux
15022 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15023         
15024 # check trigger-7 success:      1
15025 DROP TRIGGER trg_1;
15026 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15027 f_int2 = CAST(f_char1 AS SIGNED INT),
15028 f_charbig = 'just inserted'
15029    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15030 DELETE FROM t0_aux
15031 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15032 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15033 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15034 'just inserted' FROM t0_template
15035 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15036 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15037 BEGIN
15038 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15039 f_charbig = 'updated by trigger'
15040       WHERE f_int1 = - old.f_int1;
15041 END|
15042 DELETE FROM t0_aux
15043 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15044         
15045 # check trigger-8 success:      1
15046 DROP TRIGGER trg_1;
15047 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15048 f_int2 = CAST(f_char1 AS SIGNED INT),
15049 f_charbig = 'just inserted'
15050    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15051 DELETE FROM t0_aux
15052 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15053 DELETE FROM t1
15054 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15055 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15056 BEGIN
15057 SET new.f_int1 = old.f_int1 + @max_row,
15058 new.f_int2 = old.f_int2 - @max_row,
15059 new.f_charbig = '####updated per update trigger####';
15060 END|
15061 UPDATE t1
15062 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15063 f_charbig = '####updated per update statement itself####';
15064         
15065 # check trigger-9 success:      1
15066 DROP TRIGGER trg_2;
15067 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15068 f_int2 = CAST(f_char1 AS SIGNED INT),
15069 f_charbig = CONCAT('===',f_char1,'===');
15070 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15071 BEGIN
15072 SET new.f_int1 = new.f_int1 + @max_row,
15073 new.f_int2 = new.f_int2 - @max_row,
15074 new.f_charbig = '####updated per update trigger####';
15075 END|
15076 UPDATE t1
15077 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15078 f_charbig = '####updated per update statement itself####';
15079         
15080 # check trigger-10 success:     1
15081 DROP TRIGGER trg_2;
15082 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15083 f_int2 = CAST(f_char1 AS SIGNED INT),
15084 f_charbig = CONCAT('===',f_char1,'===');
15085 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15086 BEGIN
15087 SET new.f_int1 = @my_max1 + @counter,
15088 new.f_int2 = @my_min2 - @counter,
15089 new.f_charbig = '####updated per insert trigger####';
15090 SET @counter = @counter + 1;
15091 END|
15092 SET @counter = 1;
15093 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15094 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15095 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15096 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15097 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15098 ORDER BY f_int1;
15099 DROP TRIGGER trg_3;
15100         
15101 # check trigger-11 success:     1
15102 DELETE FROM t1
15103 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15104 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15105 AND f_charbig = '####updated per insert trigger####';
15106 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15107 BEGIN
15108 SET new.f_int1 = @my_max1 + @counter,
15109 new.f_int2 = @my_min2 - @counter,
15110 new.f_charbig = '####updated per insert trigger####';
15111 SET @counter = @counter + 1;
15112 END|
15113 SET @counter = 1;
15114 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15115 INSERT INTO t1 (f_char1, f_char2, f_charbig)
15116 SELECT CAST(f_int1 AS CHAR),
15117 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15118 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15119 ORDER BY f_int1;
15120 DROP TRIGGER trg_3;
15121         
15122 # check trigger-12 success:     1
15123 DELETE FROM t1
15124 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15125 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15126 AND f_charbig = '####updated per insert trigger####';
15127 ANALYZE  TABLE t1;
15128 Table   Op      Msg_type        Msg_text
15129 test.t1 analyze status  OK
15130 CHECK    TABLE t1 EXTENDED;
15131 Table   Op      Msg_type        Msg_text
15132 test.t1 check   status  OK
15133 CHECKSUM TABLE t1 EXTENDED;
15134 Table   Checksum
15135 test.t1 <some_value>
15136 OPTIMIZE TABLE t1;
15137 Table   Op      Msg_type        Msg_text
15138 test.t1 optimize        status  OK
15139 # check layout success:    1
15140 REPAIR   TABLE t1 EXTENDED;
15141 Table   Op      Msg_type        Msg_text
15142 test.t1 repair  status  OK
15143 # check layout success:    1
15144 TRUNCATE t1;
15145         
15146 # check TRUNCATE success:       1
15147 # check layout success:    1
15148 # End usability test (inc/partition_check.inc)
15149 DROP TABLE t1;
15150 CREATE TABLE t1 (
15151 f_int1 INTEGER,
15152 f_int2 INTEGER,
15153 f_char1 CHAR(20),
15154 f_char2 CHAR(20),
15155 f_charbig VARCHAR(1000)
15158 PARTITION BY LIST(ABS(MOD(f_int1,2)))
15159 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
15160 (PARTITION part_1 VALUES IN (0),
15161  PARTITION part_2 VALUES IN (1),
15162  PARTITION part_3 VALUES IN (NULL));
15163 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15164 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15165 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15166 ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
15167 Table   Op      Msg_type        Msg_text
15168 test.t1 analyze error   Error in list of partitions to test.t1
15169 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15170 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15171 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15172 # Start usability test (inc/partition_check.inc)
15173 create_command
15174 SHOW CREATE TABLE t1;
15175 Table   Create Table
15176 t1      CREATE TABLE `t1` (
15177   `f_int1` int(11) DEFAULT NULL,
15178   `f_int2` int(11) DEFAULT NULL,
15179   `f_char1` char(20) DEFAULT NULL,
15180   `f_char2` char(20) DEFAULT NULL,
15181   `f_charbig` varchar(1000) DEFAULT NULL
15182 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
15183 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
15184 SUBPARTITION BY KEY (f_int1)
15185 SUBPARTITIONS 3
15186 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
15187  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
15188  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
15190 unified filelist
15191 t1#P#part_1#SP#part_1sp0.MYD
15192 t1#P#part_1#SP#part_1sp0.MYI
15193 t1#P#part_1#SP#part_1sp1.MYD
15194 t1#P#part_1#SP#part_1sp1.MYI
15195 t1#P#part_1#SP#part_1sp2.MYD
15196 t1#P#part_1#SP#part_1sp2.MYI
15197 t1#P#part_2#SP#part_2sp0.MYD
15198 t1#P#part_2#SP#part_2sp0.MYI
15199 t1#P#part_2#SP#part_2sp1.MYD
15200 t1#P#part_2#SP#part_2sp1.MYI
15201 t1#P#part_2#SP#part_2sp2.MYD
15202 t1#P#part_2#SP#part_2sp2.MYI
15203 t1#P#part_3#SP#part_3sp0.MYD
15204 t1#P#part_3#SP#part_3sp0.MYI
15205 t1#P#part_3#SP#part_3sp1.MYD
15206 t1#P#part_3#SP#part_3sp1.MYI
15207 t1#P#part_3#SP#part_3sp2.MYD
15208 t1#P#part_3#SP#part_3sp2.MYI
15209 t1.frm
15210 t1.par
15212 # check prerequisites-1 success:    1
15213 # check COUNT(*) success:    1
15214 # check MIN/MAX(f_int1) success:    1
15215 # check MIN/MAX(f_int2) success:    1
15216 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15217 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15218 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15219 WHERE f_int1 IN (2,3);
15220 # check prerequisites-3 success:    1
15221 DELETE FROM t1 WHERE f_charbig = 'delete me';
15222 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
15223 # check read via f_int1 success: 1
15224 # check read via f_int2 success: 1
15225         
15226 # check multiple-1 success:     1
15227 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15228         
15229 # check multiple-2 success:     1
15230 INSERT INTO t1 SELECT * FROM t0_template
15231 WHERE MOD(f_int1,3) = 0;
15232         
15233 # check multiple-3 success:     1
15234 UPDATE t1 SET f_int1 = f_int1 + @max_row
15235 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15236 AND @max_row_div2 + @max_row_div4;
15237         
15238 # check multiple-4 success:     1
15239 DELETE FROM t1
15240 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15241 AND @max_row_div2 + @max_row_div4 + @max_row;
15242         
15243 # check multiple-5 success:     1
15244 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15245 INSERT INTO t1
15246 SET f_int1 = @cur_value , f_int2 = @cur_value,
15247 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15248 f_charbig = '#SINGLE#';
15249         
15250 # check single-1 success:       1
15251 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15252 INSERT INTO t1
15253 SET f_int1 = @cur_value , f_int2 = @cur_value,
15254 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15255 f_charbig = '#SINGLE#';
15256         
15257 # check single-2 success:       1
15258 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15259 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15260 UPDATE t1 SET f_int1 = @cur_value2
15261 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15262         
15263 # check single-3 success:       1
15264 SET @cur_value1= -1;
15265 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15266 UPDATE t1 SET f_int1 = @cur_value1
15267 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15268         
15269 # check single-4 success:       1
15270 SELECT MAX(f_int1) INTO @cur_value FROM t1;
15271 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15272         
15273 # check single-5 success:       1
15274 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15275         
15276 # check single-6 success:       1
15277 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15278         
15279 # check single-7 success:       1
15280 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15281 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15282 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15283 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15284 f_charbig = '#NULL#';
15285 INSERT INTO t1
15286 SET f_int1 = NULL , f_int2 = -@max_row,
15287 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15288 f_charbig = '#NULL#';
15289 # check null success:    1
15290         
15291 # check null-1 success:         1
15292 UPDATE t1 SET f_int1 = -@max_row
15293 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15294 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15295         
15296 # check null-2 success:         1
15297 UPDATE t1 SET f_int1 = NULL
15298 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15299 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15300         
15301 # check null-3 success:         1
15302 DELETE FROM t1
15303 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15304 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15305         
15306 # check null-4 success:         1
15307 DELETE FROM t1
15308 WHERE f_int1 = 0 AND f_int2 = 0
15309 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15310 AND f_charbig = '#NULL#';
15311 SET AUTOCOMMIT= 0;
15312 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15313 SELECT f_int1, f_int1, '', '', 'was inserted'
15314 FROM t0_template source_tab
15315 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15316         
15317 # check transactions-1 success:         1
15318 COMMIT WORK;
15319         
15320 # check transactions-2 success:         1
15321 ROLLBACK WORK;
15322         
15323 # check transactions-3 success:         1
15324 DELETE FROM t1 WHERE f_charbig = 'was inserted';
15325 COMMIT WORK;
15326 ROLLBACK WORK;
15327         
15328 # check transactions-4 success:         1
15329 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15330 SELECT f_int1, f_int1, '', '', 'was inserted'
15331 FROM t0_template source_tab
15332 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15333         
15334 # check transactions-5 success:         1
15335 ROLLBACK WORK;
15336 Warnings:
15337 Warning 1196    Some non-transactional changed tables couldn't be rolled back
15338         
15339 # check transactions-6 success:         1
15340 # INFO: Storage engine used for t1 seems to be not transactional.
15341 COMMIT;
15342         
15343 # check transactions-7 success:         1
15344 DELETE FROM t1 WHERE f_charbig = 'was inserted';
15345 COMMIT WORK;
15346 SET @@session.sql_mode = 'traditional';
15347 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15348 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15349 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15350 '', '', 'was inserted' FROM t0_template
15351 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15352 ERROR 22012: Division by 0
15353 COMMIT;
15354         
15355 # check transactions-8 success:         1
15356 # INFO: Storage engine used for t1 seems to be unable to revert
15357 #       changes made by the failing statement.
15358 SET @@session.sql_mode = '';
15359 SET AUTOCOMMIT= 1;
15360 DELETE FROM t1 WHERE f_charbig = 'was inserted';
15361 COMMIT WORK;
15362 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15363         
15364 # check special-1 success:      1
15365 UPDATE t1 SET f_charbig = '';
15366         
15367 # check special-2 success:      1
15368 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15369 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15370 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15371 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15372 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15373 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15374 'just inserted' FROM t0_template
15375 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15376 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15377 BEGIN
15378 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15379 f_charbig = 'updated by trigger'
15380       WHERE f_int1 = new.f_int1;
15381 END|
15382 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15383 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15384 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15385         
15386 # check trigger-1 success:      1
15387 DROP TRIGGER trg_1;
15388 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15389 f_int2 = CAST(f_char1 AS SIGNED INT),
15390 f_charbig = 'just inserted'
15391    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15392 DELETE FROM t0_aux
15393 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15394 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15395 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15396 'just inserted' FROM t0_template
15397 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15398 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15399 BEGIN
15400 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15401 f_charbig = 'updated by trigger'
15402       WHERE f_int1 = new.f_int1;
15403 END|
15404 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15405 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15406 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15407         
15408 # check trigger-2 success:      1
15409 DROP TRIGGER trg_1;
15410 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15411 f_int2 = CAST(f_char1 AS SIGNED INT),
15412 f_charbig = 'just inserted'
15413    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15414 DELETE FROM t0_aux
15415 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15416 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15417 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15418 'just inserted' FROM t0_template
15419 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15420 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15421 BEGIN
15422 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15423 f_charbig = 'updated by trigger'
15424       WHERE f_int1 = new.f_int1;
15425 END|
15426 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15427 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15428         
15429 # check trigger-3 success:      1
15430 DROP TRIGGER trg_1;
15431 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15432 f_int2 = CAST(f_char1 AS SIGNED INT),
15433 f_charbig = 'just inserted'
15434    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15435 DELETE FROM t0_aux
15436 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15437 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15438 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15439 'just inserted' FROM t0_template
15440 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15441 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15442 BEGIN
15443 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15444 f_charbig = 'updated by trigger'
15445       WHERE f_int1 = - old.f_int1;
15446 END|
15447 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15448 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15449         
15450 # check trigger-4 success:      1
15451 DROP TRIGGER trg_1;
15452 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15453 f_int2 = CAST(f_char1 AS SIGNED INT),
15454 f_charbig = 'just inserted'
15455    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15456 DELETE FROM t0_aux
15457 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15458 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15459 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15460 'just inserted' FROM t0_template
15461 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15462 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15463 BEGIN
15464 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15465 f_charbig = 'updated by trigger'
15466       WHERE f_int1 = new.f_int1;
15467 END|
15468 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15469 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15470         
15471 # check trigger-5 success:      1
15472 DROP TRIGGER trg_1;
15473 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15474 f_int2 = CAST(f_char1 AS SIGNED INT),
15475 f_charbig = 'just inserted'
15476    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15477 DELETE FROM t0_aux
15478 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15479 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15480 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15481 'just inserted' FROM t0_template
15482 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15483 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15484 BEGIN
15485 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15486 f_charbig = 'updated by trigger'
15487       WHERE f_int1 = - old.f_int1;
15488 END|
15489 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15490 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15491         
15492 # check trigger-6 success:      1
15493 DROP TRIGGER trg_1;
15494 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15495 f_int2 = CAST(f_char1 AS SIGNED INT),
15496 f_charbig = 'just inserted'
15497    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15498 DELETE FROM t0_aux
15499 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15500 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15501 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15502 'just inserted' FROM t0_template
15503 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15504 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15505 BEGIN
15506 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15507 f_charbig = 'updated by trigger'
15508       WHERE f_int1 = - old.f_int1;
15509 END|
15510 DELETE FROM t0_aux
15511 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15512         
15513 # check trigger-7 success:      1
15514 DROP TRIGGER trg_1;
15515 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15516 f_int2 = CAST(f_char1 AS SIGNED INT),
15517 f_charbig = 'just inserted'
15518    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15519 DELETE FROM t0_aux
15520 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15521 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15522 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15523 'just inserted' FROM t0_template
15524 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15525 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15526 BEGIN
15527 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15528 f_charbig = 'updated by trigger'
15529       WHERE f_int1 = - old.f_int1;
15530 END|
15531 DELETE FROM t0_aux
15532 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15533         
15534 # check trigger-8 success:      1
15535 DROP TRIGGER trg_1;
15536 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15537 f_int2 = CAST(f_char1 AS SIGNED INT),
15538 f_charbig = 'just inserted'
15539    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15540 DELETE FROM t0_aux
15541 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15542 DELETE FROM t1
15543 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15544 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15545 BEGIN
15546 SET new.f_int1 = old.f_int1 + @max_row,
15547 new.f_int2 = old.f_int2 - @max_row,
15548 new.f_charbig = '####updated per update trigger####';
15549 END|
15550 UPDATE t1
15551 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15552 f_charbig = '####updated per update statement itself####';
15553         
15554 # check trigger-9 success:      1
15555 DROP TRIGGER trg_2;
15556 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15557 f_int2 = CAST(f_char1 AS SIGNED INT),
15558 f_charbig = CONCAT('===',f_char1,'===');
15559 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15560 BEGIN
15561 SET new.f_int1 = new.f_int1 + @max_row,
15562 new.f_int2 = new.f_int2 - @max_row,
15563 new.f_charbig = '####updated per update trigger####';
15564 END|
15565 UPDATE t1
15566 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15567 f_charbig = '####updated per update statement itself####';
15568         
15569 # check trigger-10 success:     1
15570 DROP TRIGGER trg_2;
15571 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15572 f_int2 = CAST(f_char1 AS SIGNED INT),
15573 f_charbig = CONCAT('===',f_char1,'===');
15574 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15575 BEGIN
15576 SET new.f_int1 = @my_max1 + @counter,
15577 new.f_int2 = @my_min2 - @counter,
15578 new.f_charbig = '####updated per insert trigger####';
15579 SET @counter = @counter + 1;
15580 END|
15581 SET @counter = 1;
15582 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15583 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15584 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15585 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15586 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15587 ORDER BY f_int1;
15588 DROP TRIGGER trg_3;
15589         
15590 # check trigger-11 success:     1
15591 DELETE FROM t1
15592 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15593 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15594 AND f_charbig = '####updated per insert trigger####';
15595 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15596 BEGIN
15597 SET new.f_int1 = @my_max1 + @counter,
15598 new.f_int2 = @my_min2 - @counter,
15599 new.f_charbig = '####updated per insert trigger####';
15600 SET @counter = @counter + 1;
15601 END|
15602 SET @counter = 1;
15603 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15604 INSERT INTO t1 (f_char1, f_char2, f_charbig)
15605 SELECT CAST(f_int1 AS CHAR),
15606 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15607 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15608 ORDER BY f_int1;
15609 DROP TRIGGER trg_3;
15610         
15611 # check trigger-12 success:     1
15612 DELETE FROM t1
15613 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15614 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15615 AND f_charbig = '####updated per insert trigger####';
15616 ANALYZE  TABLE t1;
15617 Table   Op      Msg_type        Msg_text
15618 test.t1 analyze status  OK
15619 CHECK    TABLE t1 EXTENDED;
15620 Table   Op      Msg_type        Msg_text
15621 test.t1 check   status  OK
15622 CHECKSUM TABLE t1 EXTENDED;
15623 Table   Checksum
15624 test.t1 <some_value>
15625 OPTIMIZE TABLE t1;
15626 Table   Op      Msg_type        Msg_text
15627 test.t1 optimize        status  OK
15628 # check layout success:    1
15629 REPAIR   TABLE t1 EXTENDED;
15630 Table   Op      Msg_type        Msg_text
15631 test.t1 repair  status  OK
15632 # check layout success:    1
15633 TRUNCATE t1;
15634         
15635 # check TRUNCATE success:       1
15636 # check layout success:    1
15637 # End usability test (inc/partition_check.inc)
15638 DROP TABLE t1;
15639 #  1.5 ALTER ... ANALYZE PARTITION ALL;
15640 DROP TABLE IF EXISTS t1;
15641 CREATE TABLE t1 (
15642 f_int1 INTEGER,
15643 f_int2 INTEGER,
15644 f_char1 CHAR(20),
15645 f_char2 CHAR(20),
15646 f_charbig VARCHAR(1000)
15649 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
15650 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15651 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15652 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15653 ALTER TABLE t1 ANALYZE PARTITION ALL;
15654 Table   Op      Msg_type        Msg_text
15655 test.t1 analyze status  OK
15656 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15657 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15658 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15659 # Start usability test (inc/partition_check.inc)
15660 create_command
15661 SHOW CREATE TABLE t1;
15662 Table   Create Table
15663 t1      CREATE TABLE `t1` (
15664   `f_int1` int(11) DEFAULT NULL,
15665   `f_int2` int(11) DEFAULT NULL,
15666   `f_char1` char(20) DEFAULT NULL,
15667   `f_char2` char(20) DEFAULT NULL,
15668   `f_charbig` varchar(1000) DEFAULT NULL
15669 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
15670 /*!50100 PARTITION BY HASH (f_int1)
15671 (PARTITION part_1 ENGINE = MyISAM,
15672  PARTITION part_2 ENGINE = MyISAM) */
15674 unified filelist
15675 t1#P#part_1.MYD
15676 t1#P#part_1.MYI
15677 t1#P#part_2.MYD
15678 t1#P#part_2.MYI
15679 t1.frm
15680 t1.par
15682 # check prerequisites-1 success:    1
15683 # check COUNT(*) success:    1
15684 # check MIN/MAX(f_int1) success:    1
15685 # check MIN/MAX(f_int2) success:    1
15686 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15687 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15688 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15689 WHERE f_int1 IN (2,3);
15690 # check prerequisites-3 success:    1
15691 DELETE FROM t1 WHERE f_charbig = 'delete me';
15692 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
15693 # check read via f_int1 success: 1
15694 # check read via f_int2 success: 1
15695         
15696 # check multiple-1 success:     1
15697 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15698         
15699 # check multiple-2 success:     1
15700 INSERT INTO t1 SELECT * FROM t0_template
15701 WHERE MOD(f_int1,3) = 0;
15702         
15703 # check multiple-3 success:     1
15704 UPDATE t1 SET f_int1 = f_int1 + @max_row
15705 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15706 AND @max_row_div2 + @max_row_div4;
15707         
15708 # check multiple-4 success:     1
15709 DELETE FROM t1
15710 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15711 AND @max_row_div2 + @max_row_div4 + @max_row;
15712         
15713 # check multiple-5 success:     1
15714 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15715 INSERT INTO t1
15716 SET f_int1 = @cur_value , f_int2 = @cur_value,
15717 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15718 f_charbig = '#SINGLE#';
15719         
15720 # check single-1 success:       1
15721 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15722 INSERT INTO t1
15723 SET f_int1 = @cur_value , f_int2 = @cur_value,
15724 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15725 f_charbig = '#SINGLE#';
15726         
15727 # check single-2 success:       1
15728 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15729 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15730 UPDATE t1 SET f_int1 = @cur_value2
15731 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15732         
15733 # check single-3 success:       1
15734 SET @cur_value1= -1;
15735 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15736 UPDATE t1 SET f_int1 = @cur_value1
15737 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15738         
15739 # check single-4 success:       1
15740 SELECT MAX(f_int1) INTO @cur_value FROM t1;
15741 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15742         
15743 # check single-5 success:       1
15744 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15745         
15746 # check single-6 success:       1
15747 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15748         
15749 # check single-7 success:       1
15750 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15751 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15752 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15753 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15754 f_charbig = '#NULL#';
15755 INSERT INTO t1
15756 SET f_int1 = NULL , f_int2 = -@max_row,
15757 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15758 f_charbig = '#NULL#';
15759 # check null success:    1
15760         
15761 # check null-1 success:         1
15762 UPDATE t1 SET f_int1 = -@max_row
15763 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15764 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15765         
15766 # check null-2 success:         1
15767 UPDATE t1 SET f_int1 = NULL
15768 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15769 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15770         
15771 # check null-3 success:         1
15772 DELETE FROM t1
15773 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15774 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15775         
15776 # check null-4 success:         1
15777 DELETE FROM t1
15778 WHERE f_int1 = 0 AND f_int2 = 0
15779 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15780 AND f_charbig = '#NULL#';
15781 SET AUTOCOMMIT= 0;
15782 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15783 SELECT f_int1, f_int1, '', '', 'was inserted'
15784 FROM t0_template source_tab
15785 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15786         
15787 # check transactions-1 success:         1
15788 COMMIT WORK;
15789         
15790 # check transactions-2 success:         1
15791 ROLLBACK WORK;
15792         
15793 # check transactions-3 success:         1
15794 DELETE FROM t1 WHERE f_charbig = 'was inserted';
15795 COMMIT WORK;
15796 ROLLBACK WORK;
15797         
15798 # check transactions-4 success:         1
15799 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15800 SELECT f_int1, f_int1, '', '', 'was inserted'
15801 FROM t0_template source_tab
15802 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15803         
15804 # check transactions-5 success:         1
15805 ROLLBACK WORK;
15806 Warnings:
15807 Warning 1196    Some non-transactional changed tables couldn't be rolled back
15808         
15809 # check transactions-6 success:         1
15810 # INFO: Storage engine used for t1 seems to be not transactional.
15811 COMMIT;
15812         
15813 # check transactions-7 success:         1
15814 DELETE FROM t1 WHERE f_charbig = 'was inserted';
15815 COMMIT WORK;
15816 SET @@session.sql_mode = 'traditional';
15817 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15818 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15819 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15820 '', '', 'was inserted' FROM t0_template
15821 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15822 ERROR 22012: Division by 0
15823 COMMIT;
15824         
15825 # check transactions-8 success:         1
15826 # INFO: Storage engine used for t1 seems to be unable to revert
15827 #       changes made by the failing statement.
15828 SET @@session.sql_mode = '';
15829 SET AUTOCOMMIT= 1;
15830 DELETE FROM t1 WHERE f_charbig = 'was inserted';
15831 COMMIT WORK;
15832 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15833         
15834 # check special-1 success:      1
15835 UPDATE t1 SET f_charbig = '';
15836         
15837 # check special-2 success:      1
15838 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15839 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15840 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15841 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15842 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15843 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15844 'just inserted' FROM t0_template
15845 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15846 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15847 BEGIN
15848 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15849 f_charbig = 'updated by trigger'
15850       WHERE f_int1 = new.f_int1;
15851 END|
15852 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15853 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15854 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15855         
15856 # check trigger-1 success:      1
15857 DROP TRIGGER trg_1;
15858 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15859 f_int2 = CAST(f_char1 AS SIGNED INT),
15860 f_charbig = 'just inserted'
15861    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15862 DELETE FROM t0_aux
15863 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15864 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15865 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15866 'just inserted' FROM t0_template
15867 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15868 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15869 BEGIN
15870 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15871 f_charbig = 'updated by trigger'
15872       WHERE f_int1 = new.f_int1;
15873 END|
15874 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15875 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15876 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15877         
15878 # check trigger-2 success:      1
15879 DROP TRIGGER trg_1;
15880 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15881 f_int2 = CAST(f_char1 AS SIGNED INT),
15882 f_charbig = 'just inserted'
15883    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15884 DELETE FROM t0_aux
15885 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15886 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15887 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15888 'just inserted' FROM t0_template
15889 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15890 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15891 BEGIN
15892 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15893 f_charbig = 'updated by trigger'
15894       WHERE f_int1 = new.f_int1;
15895 END|
15896 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15897 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15898         
15899 # check trigger-3 success:      1
15900 DROP TRIGGER trg_1;
15901 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15902 f_int2 = CAST(f_char1 AS SIGNED INT),
15903 f_charbig = 'just inserted'
15904    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15905 DELETE FROM t0_aux
15906 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15907 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15908 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15909 'just inserted' FROM t0_template
15910 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15911 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15912 BEGIN
15913 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15914 f_charbig = 'updated by trigger'
15915       WHERE f_int1 = - old.f_int1;
15916 END|
15917 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15918 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15919         
15920 # check trigger-4 success:      1
15921 DROP TRIGGER trg_1;
15922 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15923 f_int2 = CAST(f_char1 AS SIGNED INT),
15924 f_charbig = 'just inserted'
15925    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15926 DELETE FROM t0_aux
15927 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15928 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15929 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15930 'just inserted' FROM t0_template
15931 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15932 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15933 BEGIN
15934 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15935 f_charbig = 'updated by trigger'
15936       WHERE f_int1 = new.f_int1;
15937 END|
15938 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15939 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15940         
15941 # check trigger-5 success:      1
15942 DROP TRIGGER trg_1;
15943 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15944 f_int2 = CAST(f_char1 AS SIGNED INT),
15945 f_charbig = 'just inserted'
15946    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15947 DELETE FROM t0_aux
15948 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15949 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15950 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15951 'just inserted' FROM t0_template
15952 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15953 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15954 BEGIN
15955 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15956 f_charbig = 'updated by trigger'
15957       WHERE f_int1 = - old.f_int1;
15958 END|
15959 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
15960 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15961         
15962 # check trigger-6 success:      1
15963 DROP TRIGGER trg_1;
15964 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15965 f_int2 = CAST(f_char1 AS SIGNED INT),
15966 f_charbig = 'just inserted'
15967    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15968 DELETE FROM t0_aux
15969 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15970 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15971 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15972 'just inserted' FROM t0_template
15973 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15974 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15975 BEGIN
15976 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15977 f_charbig = 'updated by trigger'
15978       WHERE f_int1 = - old.f_int1;
15979 END|
15980 DELETE FROM t0_aux
15981 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15982         
15983 # check trigger-7 success:      1
15984 DROP TRIGGER trg_1;
15985 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15986 f_int2 = CAST(f_char1 AS SIGNED INT),
15987 f_charbig = 'just inserted'
15988    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15989 DELETE FROM t0_aux
15990 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15991 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15992 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15993 'just inserted' FROM t0_template
15994 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15995 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15996 BEGIN
15997 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15998 f_charbig = 'updated by trigger'
15999       WHERE f_int1 = - old.f_int1;
16000 END|
16001 DELETE FROM t0_aux
16002 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16003         
16004 # check trigger-8 success:      1
16005 DROP TRIGGER trg_1;
16006 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16007 f_int2 = CAST(f_char1 AS SIGNED INT),
16008 f_charbig = 'just inserted'
16009    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16010 DELETE FROM t0_aux
16011 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16012 DELETE FROM t1
16013 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16014 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16015 BEGIN
16016 SET new.f_int1 = old.f_int1 + @max_row,
16017 new.f_int2 = old.f_int2 - @max_row,
16018 new.f_charbig = '####updated per update trigger####';
16019 END|
16020 UPDATE t1
16021 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16022 f_charbig = '####updated per update statement itself####';
16023         
16024 # check trigger-9 success:      1
16025 DROP TRIGGER trg_2;
16026 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16027 f_int2 = CAST(f_char1 AS SIGNED INT),
16028 f_charbig = CONCAT('===',f_char1,'===');
16029 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16030 BEGIN
16031 SET new.f_int1 = new.f_int1 + @max_row,
16032 new.f_int2 = new.f_int2 - @max_row,
16033 new.f_charbig = '####updated per update trigger####';
16034 END|
16035 UPDATE t1
16036 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16037 f_charbig = '####updated per update statement itself####';
16038         
16039 # check trigger-10 success:     1
16040 DROP TRIGGER trg_2;
16041 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16042 f_int2 = CAST(f_char1 AS SIGNED INT),
16043 f_charbig = CONCAT('===',f_char1,'===');
16044 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16045 BEGIN
16046 SET new.f_int1 = @my_max1 + @counter,
16047 new.f_int2 = @my_min2 - @counter,
16048 new.f_charbig = '####updated per insert trigger####';
16049 SET @counter = @counter + 1;
16050 END|
16051 SET @counter = 1;
16052 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16053 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16054 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16055 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16056 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16057 ORDER BY f_int1;
16058 DROP TRIGGER trg_3;
16059         
16060 # check trigger-11 success:     1
16061 DELETE FROM t1
16062 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16063 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16064 AND f_charbig = '####updated per insert trigger####';
16065 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16066 BEGIN
16067 SET new.f_int1 = @my_max1 + @counter,
16068 new.f_int2 = @my_min2 - @counter,
16069 new.f_charbig = '####updated per insert trigger####';
16070 SET @counter = @counter + 1;
16071 END|
16072 SET @counter = 1;
16073 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16074 INSERT INTO t1 (f_char1, f_char2, f_charbig)
16075 SELECT CAST(f_int1 AS CHAR),
16076 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16077 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16078 ORDER BY f_int1;
16079 DROP TRIGGER trg_3;
16080         
16081 # check trigger-12 success:     1
16082 DELETE FROM t1
16083 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16084 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16085 AND f_charbig = '####updated per insert trigger####';
16086 ANALYZE  TABLE t1;
16087 Table   Op      Msg_type        Msg_text
16088 test.t1 analyze status  OK
16089 CHECK    TABLE t1 EXTENDED;
16090 Table   Op      Msg_type        Msg_text
16091 test.t1 check   status  OK
16092 CHECKSUM TABLE t1 EXTENDED;
16093 Table   Checksum
16094 test.t1 <some_value>
16095 OPTIMIZE TABLE t1;
16096 Table   Op      Msg_type        Msg_text
16097 test.t1 optimize        status  OK
16098 # check layout success:    1
16099 REPAIR   TABLE t1 EXTENDED;
16100 Table   Op      Msg_type        Msg_text
16101 test.t1 repair  status  OK
16102 # check layout success:    1
16103 TRUNCATE t1;
16104         
16105 # check TRUNCATE success:       1
16106 # check layout success:    1
16107 # End usability test (inc/partition_check.inc)
16108 DROP TABLE t1;
16109 CREATE TABLE t1 (
16110 f_int1 INTEGER,
16111 f_int2 INTEGER,
16112 f_char1 CHAR(20),
16113 f_char2 CHAR(20),
16114 f_charbig VARCHAR(1000)
16117 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
16118 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16119 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16120 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16121 ALTER TABLE t1 ANALYZE PARTITION ALL;
16122 Table   Op      Msg_type        Msg_text
16123 test.t1 analyze status  OK
16124 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16125 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16126 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16127 # Start usability test (inc/partition_check.inc)
16128 create_command
16129 SHOW CREATE TABLE t1;
16130 Table   Create Table
16131 t1      CREATE TABLE `t1` (
16132   `f_int1` int(11) DEFAULT NULL,
16133   `f_int2` int(11) DEFAULT NULL,
16134   `f_char1` char(20) DEFAULT NULL,
16135   `f_char2` char(20) DEFAULT NULL,
16136   `f_charbig` varchar(1000) DEFAULT NULL
16137 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
16138 /*!50100 PARTITION BY KEY (f_int1)
16139 (PARTITION part_1 ENGINE = MyISAM,
16140  PARTITION part_2 ENGINE = MyISAM,
16141  PARTITION part_3 ENGINE = MyISAM,
16142  PARTITION part_4 ENGINE = MyISAM,
16143  PARTITION part_5 ENGINE = MyISAM) */
16145 unified filelist
16146 t1#P#part_1.MYD
16147 t1#P#part_1.MYI
16148 t1#P#part_2.MYD
16149 t1#P#part_2.MYI
16150 t1#P#part_3.MYD
16151 t1#P#part_3.MYI
16152 t1#P#part_4.MYD
16153 t1#P#part_4.MYI
16154 t1#P#part_5.MYD
16155 t1#P#part_5.MYI
16156 t1.frm
16157 t1.par
16159 # check prerequisites-1 success:    1
16160 # check COUNT(*) success:    1
16161 # check MIN/MAX(f_int1) success:    1
16162 # check MIN/MAX(f_int2) success:    1
16163 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16164 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16165 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16166 WHERE f_int1 IN (2,3);
16167 # check prerequisites-3 success:    1
16168 DELETE FROM t1 WHERE f_charbig = 'delete me';
16169 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
16170 # check read via f_int1 success: 1
16171 # check read via f_int2 success: 1
16172         
16173 # check multiple-1 success:     1
16174 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16175         
16176 # check multiple-2 success:     1
16177 INSERT INTO t1 SELECT * FROM t0_template
16178 WHERE MOD(f_int1,3) = 0;
16179         
16180 # check multiple-3 success:     1
16181 UPDATE t1 SET f_int1 = f_int1 + @max_row
16182 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16183 AND @max_row_div2 + @max_row_div4;
16184         
16185 # check multiple-4 success:     1
16186 DELETE FROM t1
16187 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16188 AND @max_row_div2 + @max_row_div4 + @max_row;
16189         
16190 # check multiple-5 success:     1
16191 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16192 INSERT INTO t1
16193 SET f_int1 = @cur_value , f_int2 = @cur_value,
16194 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16195 f_charbig = '#SINGLE#';
16196         
16197 # check single-1 success:       1
16198 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16199 INSERT INTO t1
16200 SET f_int1 = @cur_value , f_int2 = @cur_value,
16201 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16202 f_charbig = '#SINGLE#';
16203         
16204 # check single-2 success:       1
16205 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16206 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16207 UPDATE t1 SET f_int1 = @cur_value2
16208 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16209         
16210 # check single-3 success:       1
16211 SET @cur_value1= -1;
16212 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16213 UPDATE t1 SET f_int1 = @cur_value1
16214 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16215         
16216 # check single-4 success:       1
16217 SELECT MAX(f_int1) INTO @cur_value FROM t1;
16218 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16219         
16220 # check single-5 success:       1
16221 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16222         
16223 # check single-6 success:       1
16224 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16225         
16226 # check single-7 success:       1
16227 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16228 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16229 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16230 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16231 f_charbig = '#NULL#';
16232 INSERT INTO t1
16233 SET f_int1 = NULL , f_int2 = -@max_row,
16234 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16235 f_charbig = '#NULL#';
16236 # check null success:    1
16237         
16238 # check null-1 success:         1
16239 UPDATE t1 SET f_int1 = -@max_row
16240 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16241 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16242         
16243 # check null-2 success:         1
16244 UPDATE t1 SET f_int1 = NULL
16245 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16246 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16247         
16248 # check null-3 success:         1
16249 DELETE FROM t1
16250 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16251 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16252         
16253 # check null-4 success:         1
16254 DELETE FROM t1
16255 WHERE f_int1 = 0 AND f_int2 = 0
16256 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16257 AND f_charbig = '#NULL#';
16258 SET AUTOCOMMIT= 0;
16259 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16260 SELECT f_int1, f_int1, '', '', 'was inserted'
16261 FROM t0_template source_tab
16262 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16263         
16264 # check transactions-1 success:         1
16265 COMMIT WORK;
16266         
16267 # check transactions-2 success:         1
16268 ROLLBACK WORK;
16269         
16270 # check transactions-3 success:         1
16271 DELETE FROM t1 WHERE f_charbig = 'was inserted';
16272 COMMIT WORK;
16273 ROLLBACK WORK;
16274         
16275 # check transactions-4 success:         1
16276 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16277 SELECT f_int1, f_int1, '', '', 'was inserted'
16278 FROM t0_template source_tab
16279 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16280         
16281 # check transactions-5 success:         1
16282 ROLLBACK WORK;
16283 Warnings:
16284 Warning 1196    Some non-transactional changed tables couldn't be rolled back
16285         
16286 # check transactions-6 success:         1
16287 # INFO: Storage engine used for t1 seems to be not transactional.
16288 COMMIT;
16289         
16290 # check transactions-7 success:         1
16291 DELETE FROM t1 WHERE f_charbig = 'was inserted';
16292 COMMIT WORK;
16293 SET @@session.sql_mode = 'traditional';
16294 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16295 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16296 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16297 '', '', 'was inserted' FROM t0_template
16298 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16299 ERROR 22012: Division by 0
16300 COMMIT;
16301         
16302 # check transactions-8 success:         1
16303 # INFO: Storage engine used for t1 seems to be unable to revert
16304 #       changes made by the failing statement.
16305 SET @@session.sql_mode = '';
16306 SET AUTOCOMMIT= 1;
16307 DELETE FROM t1 WHERE f_charbig = 'was inserted';
16308 COMMIT WORK;
16309 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16310         
16311 # check special-1 success:      1
16312 UPDATE t1 SET f_charbig = '';
16313         
16314 # check special-2 success:      1
16315 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16316 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16317 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16318 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16319 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16320 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16321 'just inserted' FROM t0_template
16322 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16323 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16324 BEGIN
16325 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16326 f_charbig = 'updated by trigger'
16327       WHERE f_int1 = new.f_int1;
16328 END|
16329 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16330 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16331 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16332         
16333 # check trigger-1 success:      1
16334 DROP TRIGGER trg_1;
16335 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16336 f_int2 = CAST(f_char1 AS SIGNED INT),
16337 f_charbig = 'just inserted'
16338    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16339 DELETE FROM t0_aux
16340 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16341 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16342 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16343 'just inserted' FROM t0_template
16344 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16345 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16346 BEGIN
16347 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16348 f_charbig = 'updated by trigger'
16349       WHERE f_int1 = new.f_int1;
16350 END|
16351 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16352 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16353 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16354         
16355 # check trigger-2 success:      1
16356 DROP TRIGGER trg_1;
16357 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16358 f_int2 = CAST(f_char1 AS SIGNED INT),
16359 f_charbig = 'just inserted'
16360    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16361 DELETE FROM t0_aux
16362 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16363 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16364 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16365 'just inserted' FROM t0_template
16366 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16367 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16368 BEGIN
16369 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16370 f_charbig = 'updated by trigger'
16371       WHERE f_int1 = new.f_int1;
16372 END|
16373 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16374 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16375         
16376 # check trigger-3 success:      1
16377 DROP TRIGGER trg_1;
16378 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16379 f_int2 = CAST(f_char1 AS SIGNED INT),
16380 f_charbig = 'just inserted'
16381    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16382 DELETE FROM t0_aux
16383 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16384 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16385 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16386 'just inserted' FROM t0_template
16387 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16388 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16389 BEGIN
16390 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16391 f_charbig = 'updated by trigger'
16392       WHERE f_int1 = - old.f_int1;
16393 END|
16394 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16395 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16396         
16397 # check trigger-4 success:      1
16398 DROP TRIGGER trg_1;
16399 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16400 f_int2 = CAST(f_char1 AS SIGNED INT),
16401 f_charbig = 'just inserted'
16402    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16403 DELETE FROM t0_aux
16404 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16405 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16406 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16407 'just inserted' FROM t0_template
16408 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16409 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16410 BEGIN
16411 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16412 f_charbig = 'updated by trigger'
16413       WHERE f_int1 = new.f_int1;
16414 END|
16415 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16416 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16417         
16418 # check trigger-5 success:      1
16419 DROP TRIGGER trg_1;
16420 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16421 f_int2 = CAST(f_char1 AS SIGNED INT),
16422 f_charbig = 'just inserted'
16423    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16424 DELETE FROM t0_aux
16425 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16426 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16427 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16428 'just inserted' FROM t0_template
16429 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16430 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16431 BEGIN
16432 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16433 f_charbig = 'updated by trigger'
16434       WHERE f_int1 = - old.f_int1;
16435 END|
16436 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16437 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16438         
16439 # check trigger-6 success:      1
16440 DROP TRIGGER trg_1;
16441 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16442 f_int2 = CAST(f_char1 AS SIGNED INT),
16443 f_charbig = 'just inserted'
16444    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16445 DELETE FROM t0_aux
16446 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16447 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16448 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16449 'just inserted' FROM t0_template
16450 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16451 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16452 BEGIN
16453 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16454 f_charbig = 'updated by trigger'
16455       WHERE f_int1 = - old.f_int1;
16456 END|
16457 DELETE FROM t0_aux
16458 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16459         
16460 # check trigger-7 success:      1
16461 DROP TRIGGER trg_1;
16462 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16463 f_int2 = CAST(f_char1 AS SIGNED INT),
16464 f_charbig = 'just inserted'
16465    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16466 DELETE FROM t0_aux
16467 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16468 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16469 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16470 'just inserted' FROM t0_template
16471 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16472 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16473 BEGIN
16474 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16475 f_charbig = 'updated by trigger'
16476       WHERE f_int1 = - old.f_int1;
16477 END|
16478 DELETE FROM t0_aux
16479 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16480         
16481 # check trigger-8 success:      1
16482 DROP TRIGGER trg_1;
16483 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16484 f_int2 = CAST(f_char1 AS SIGNED INT),
16485 f_charbig = 'just inserted'
16486    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16487 DELETE FROM t0_aux
16488 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16489 DELETE FROM t1
16490 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16491 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16492 BEGIN
16493 SET new.f_int1 = old.f_int1 + @max_row,
16494 new.f_int2 = old.f_int2 - @max_row,
16495 new.f_charbig = '####updated per update trigger####';
16496 END|
16497 UPDATE t1
16498 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16499 f_charbig = '####updated per update statement itself####';
16500         
16501 # check trigger-9 success:      1
16502 DROP TRIGGER trg_2;
16503 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16504 f_int2 = CAST(f_char1 AS SIGNED INT),
16505 f_charbig = CONCAT('===',f_char1,'===');
16506 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16507 BEGIN
16508 SET new.f_int1 = new.f_int1 + @max_row,
16509 new.f_int2 = new.f_int2 - @max_row,
16510 new.f_charbig = '####updated per update trigger####';
16511 END|
16512 UPDATE t1
16513 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16514 f_charbig = '####updated per update statement itself####';
16515         
16516 # check trigger-10 success:     1
16517 DROP TRIGGER trg_2;
16518 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16519 f_int2 = CAST(f_char1 AS SIGNED INT),
16520 f_charbig = CONCAT('===',f_char1,'===');
16521 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16522 BEGIN
16523 SET new.f_int1 = @my_max1 + @counter,
16524 new.f_int2 = @my_min2 - @counter,
16525 new.f_charbig = '####updated per insert trigger####';
16526 SET @counter = @counter + 1;
16527 END|
16528 SET @counter = 1;
16529 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16530 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16531 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16532 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16533 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16534 ORDER BY f_int1;
16535 DROP TRIGGER trg_3;
16536         
16537 # check trigger-11 success:     1
16538 DELETE FROM t1
16539 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16540 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16541 AND f_charbig = '####updated per insert trigger####';
16542 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16543 BEGIN
16544 SET new.f_int1 = @my_max1 + @counter,
16545 new.f_int2 = @my_min2 - @counter,
16546 new.f_charbig = '####updated per insert trigger####';
16547 SET @counter = @counter + 1;
16548 END|
16549 SET @counter = 1;
16550 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16551 INSERT INTO t1 (f_char1, f_char2, f_charbig)
16552 SELECT CAST(f_int1 AS CHAR),
16553 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16554 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16555 ORDER BY f_int1;
16556 DROP TRIGGER trg_3;
16557         
16558 # check trigger-12 success:     1
16559 DELETE FROM t1
16560 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16561 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16562 AND f_charbig = '####updated per insert trigger####';
16563 ANALYZE  TABLE t1;
16564 Table   Op      Msg_type        Msg_text
16565 test.t1 analyze status  OK
16566 CHECK    TABLE t1 EXTENDED;
16567 Table   Op      Msg_type        Msg_text
16568 test.t1 check   status  OK
16569 CHECKSUM TABLE t1 EXTENDED;
16570 Table   Checksum
16571 test.t1 <some_value>
16572 OPTIMIZE TABLE t1;
16573 Table   Op      Msg_type        Msg_text
16574 test.t1 optimize        status  OK
16575 # check layout success:    1
16576 REPAIR   TABLE t1 EXTENDED;
16577 Table   Op      Msg_type        Msg_text
16578 test.t1 repair  status  OK
16579 # check layout success:    1
16580 TRUNCATE t1;
16581         
16582 # check TRUNCATE success:       1
16583 # check layout success:    1
16584 # End usability test (inc/partition_check.inc)
16585 DROP TABLE t1;
16586 CREATE TABLE t1 (
16587 f_int1 INTEGER,
16588 f_int2 INTEGER,
16589 f_char1 CHAR(20),
16590 f_char2 CHAR(20),
16591 f_charbig VARCHAR(1000)
16594 PARTITION BY LIST(MOD(f_int1,4))
16595 (PARTITION part_3 VALUES IN (-3),
16596 PARTITION part_2 VALUES IN (-2),
16597 PARTITION part_1 VALUES IN (-1),
16598 PARTITION part_N VALUES IN (NULL),
16599 PARTITION part0 VALUES IN (0),
16600 PARTITION part1 VALUES IN (1),
16601 PARTITION part2 VALUES IN (2),
16602 PARTITION part3 VALUES IN (3));
16603 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16604 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16605 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16606 ALTER TABLE t1 ANALYZE PARTITION ALL;
16607 Table   Op      Msg_type        Msg_text
16608 test.t1 analyze status  OK
16609 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16610 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16611 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16612 # Start usability test (inc/partition_check.inc)
16613 create_command
16614 SHOW CREATE TABLE t1;
16615 Table   Create Table
16616 t1      CREATE TABLE `t1` (
16617   `f_int1` int(11) DEFAULT NULL,
16618   `f_int2` int(11) DEFAULT NULL,
16619   `f_char1` char(20) DEFAULT NULL,
16620   `f_char2` char(20) DEFAULT NULL,
16621   `f_charbig` varchar(1000) DEFAULT NULL
16622 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
16623 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
16624 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
16625  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
16626  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
16627  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
16628  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
16629  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
16630  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
16631  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
16633 unified filelist
16634 t1#P#part0.MYD
16635 t1#P#part0.MYI
16636 t1#P#part1.MYD
16637 t1#P#part1.MYI
16638 t1#P#part2.MYD
16639 t1#P#part2.MYI
16640 t1#P#part3.MYD
16641 t1#P#part3.MYI
16642 t1#P#part_1.MYD
16643 t1#P#part_1.MYI
16644 t1#P#part_2.MYD
16645 t1#P#part_2.MYI
16646 t1#P#part_3.MYD
16647 t1#P#part_3.MYI
16648 t1#P#part_N.MYD
16649 t1#P#part_N.MYI
16650 t1.frm
16651 t1.par
16653 # check prerequisites-1 success:    1
16654 # check COUNT(*) success:    1
16655 # check MIN/MAX(f_int1) success:    1
16656 # check MIN/MAX(f_int2) success:    1
16657 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16658 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16659 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16660 WHERE f_int1 IN (2,3);
16661 # check prerequisites-3 success:    1
16662 DELETE FROM t1 WHERE f_charbig = 'delete me';
16663 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
16664 # check read via f_int1 success: 1
16665 # check read via f_int2 success: 1
16666         
16667 # check multiple-1 success:     1
16668 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16669         
16670 # check multiple-2 success:     1
16671 INSERT INTO t1 SELECT * FROM t0_template
16672 WHERE MOD(f_int1,3) = 0;
16673         
16674 # check multiple-3 success:     1
16675 UPDATE t1 SET f_int1 = f_int1 + @max_row
16676 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16677 AND @max_row_div2 + @max_row_div4;
16678         
16679 # check multiple-4 success:     1
16680 DELETE FROM t1
16681 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16682 AND @max_row_div2 + @max_row_div4 + @max_row;
16683         
16684 # check multiple-5 success:     1
16685 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16686 INSERT INTO t1
16687 SET f_int1 = @cur_value , f_int2 = @cur_value,
16688 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16689 f_charbig = '#SINGLE#';
16690         
16691 # check single-1 success:       1
16692 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16693 INSERT INTO t1
16694 SET f_int1 = @cur_value , f_int2 = @cur_value,
16695 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16696 f_charbig = '#SINGLE#';
16697         
16698 # check single-2 success:       1
16699 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16700 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16701 UPDATE t1 SET f_int1 = @cur_value2
16702 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16703         
16704 # check single-3 success:       1
16705 SET @cur_value1= -1;
16706 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16707 UPDATE t1 SET f_int1 = @cur_value1
16708 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16709         
16710 # check single-4 success:       1
16711 SELECT MAX(f_int1) INTO @cur_value FROM t1;
16712 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16713         
16714 # check single-5 success:       1
16715 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16716         
16717 # check single-6 success:       1
16718 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16719         
16720 # check single-7 success:       1
16721 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16722 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16723 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16724 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16725 f_charbig = '#NULL#';
16726 INSERT INTO t1
16727 SET f_int1 = NULL , f_int2 = -@max_row,
16728 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16729 f_charbig = '#NULL#';
16730 # check null success:    1
16731         
16732 # check null-1 success:         1
16733 UPDATE t1 SET f_int1 = -@max_row
16734 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16735 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16736         
16737 # check null-2 success:         1
16738 UPDATE t1 SET f_int1 = NULL
16739 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16740 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16741         
16742 # check null-3 success:         1
16743 DELETE FROM t1
16744 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16745 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16746         
16747 # check null-4 success:         1
16748 DELETE FROM t1
16749 WHERE f_int1 = 0 AND f_int2 = 0
16750 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16751 AND f_charbig = '#NULL#';
16752 SET AUTOCOMMIT= 0;
16753 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16754 SELECT f_int1, f_int1, '', '', 'was inserted'
16755 FROM t0_template source_tab
16756 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16757         
16758 # check transactions-1 success:         1
16759 COMMIT WORK;
16760         
16761 # check transactions-2 success:         1
16762 ROLLBACK WORK;
16763         
16764 # check transactions-3 success:         1
16765 DELETE FROM t1 WHERE f_charbig = 'was inserted';
16766 COMMIT WORK;
16767 ROLLBACK WORK;
16768         
16769 # check transactions-4 success:         1
16770 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16771 SELECT f_int1, f_int1, '', '', 'was inserted'
16772 FROM t0_template source_tab
16773 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16774         
16775 # check transactions-5 success:         1
16776 ROLLBACK WORK;
16777 Warnings:
16778 Warning 1196    Some non-transactional changed tables couldn't be rolled back
16779         
16780 # check transactions-6 success:         1
16781 # INFO: Storage engine used for t1 seems to be not transactional.
16782 COMMIT;
16783         
16784 # check transactions-7 success:         1
16785 DELETE FROM t1 WHERE f_charbig = 'was inserted';
16786 COMMIT WORK;
16787 SET @@session.sql_mode = 'traditional';
16788 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16789 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16790 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16791 '', '', 'was inserted' FROM t0_template
16792 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16793 ERROR 22012: Division by 0
16794 COMMIT;
16795         
16796 # check transactions-8 success:         1
16797 # INFO: Storage engine used for t1 seems to be unable to revert
16798 #       changes made by the failing statement.
16799 SET @@session.sql_mode = '';
16800 SET AUTOCOMMIT= 1;
16801 DELETE FROM t1 WHERE f_charbig = 'was inserted';
16802 COMMIT WORK;
16803 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16804         
16805 # check special-1 success:      1
16806 UPDATE t1 SET f_charbig = '';
16807         
16808 # check special-2 success:      1
16809 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16810 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16811 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16812 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16813 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16814 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16815 'just inserted' FROM t0_template
16816 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16817 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16818 BEGIN
16819 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16820 f_charbig = 'updated by trigger'
16821       WHERE f_int1 = new.f_int1;
16822 END|
16823 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16824 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16825 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16826         
16827 # check trigger-1 success:      1
16828 DROP TRIGGER trg_1;
16829 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16830 f_int2 = CAST(f_char1 AS SIGNED INT),
16831 f_charbig = 'just inserted'
16832    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16833 DELETE FROM t0_aux
16834 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16835 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16836 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16837 'just inserted' FROM t0_template
16838 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16839 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16840 BEGIN
16841 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16842 f_charbig = 'updated by trigger'
16843       WHERE f_int1 = new.f_int1;
16844 END|
16845 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16846 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16847 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16848         
16849 # check trigger-2 success:      1
16850 DROP TRIGGER trg_1;
16851 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16852 f_int2 = CAST(f_char1 AS SIGNED INT),
16853 f_charbig = 'just inserted'
16854    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16855 DELETE FROM t0_aux
16856 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16857 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16858 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16859 'just inserted' FROM t0_template
16860 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16861 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16862 BEGIN
16863 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16864 f_charbig = 'updated by trigger'
16865       WHERE f_int1 = new.f_int1;
16866 END|
16867 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16868 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16869         
16870 # check trigger-3 success:      1
16871 DROP TRIGGER trg_1;
16872 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16873 f_int2 = CAST(f_char1 AS SIGNED INT),
16874 f_charbig = 'just inserted'
16875    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16876 DELETE FROM t0_aux
16877 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16878 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16879 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16880 'just inserted' FROM t0_template
16881 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16882 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16883 BEGIN
16884 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16885 f_charbig = 'updated by trigger'
16886       WHERE f_int1 = - old.f_int1;
16887 END|
16888 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16889 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16890         
16891 # check trigger-4 success:      1
16892 DROP TRIGGER trg_1;
16893 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16894 f_int2 = CAST(f_char1 AS SIGNED INT),
16895 f_charbig = 'just inserted'
16896    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16897 DELETE FROM t0_aux
16898 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16899 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16900 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16901 'just inserted' FROM t0_template
16902 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16903 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16904 BEGIN
16905 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16906 f_charbig = 'updated by trigger'
16907       WHERE f_int1 = new.f_int1;
16908 END|
16909 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16910 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16911         
16912 # check trigger-5 success:      1
16913 DROP TRIGGER trg_1;
16914 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16915 f_int2 = CAST(f_char1 AS SIGNED INT),
16916 f_charbig = 'just inserted'
16917    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16918 DELETE FROM t0_aux
16919 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16920 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16921 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16922 'just inserted' FROM t0_template
16923 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16924 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16925 BEGIN
16926 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16927 f_charbig = 'updated by trigger'
16928       WHERE f_int1 = - old.f_int1;
16929 END|
16930 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
16931 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16932         
16933 # check trigger-6 success:      1
16934 DROP TRIGGER trg_1;
16935 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16936 f_int2 = CAST(f_char1 AS SIGNED INT),
16937 f_charbig = 'just inserted'
16938    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16939 DELETE FROM t0_aux
16940 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16941 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16942 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16943 'just inserted' FROM t0_template
16944 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16945 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16946 BEGIN
16947 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16948 f_charbig = 'updated by trigger'
16949       WHERE f_int1 = - old.f_int1;
16950 END|
16951 DELETE FROM t0_aux
16952 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16953         
16954 # check trigger-7 success:      1
16955 DROP TRIGGER trg_1;
16956 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16957 f_int2 = CAST(f_char1 AS SIGNED INT),
16958 f_charbig = 'just inserted'
16959    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16960 DELETE FROM t0_aux
16961 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16962 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16963 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16964 'just inserted' FROM t0_template
16965 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16966 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16967 BEGIN
16968 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16969 f_charbig = 'updated by trigger'
16970       WHERE f_int1 = - old.f_int1;
16971 END|
16972 DELETE FROM t0_aux
16973 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16974         
16975 # check trigger-8 success:      1
16976 DROP TRIGGER trg_1;
16977 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16978 f_int2 = CAST(f_char1 AS SIGNED INT),
16979 f_charbig = 'just inserted'
16980    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16981 DELETE FROM t0_aux
16982 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16983 DELETE FROM t1
16984 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16985 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16986 BEGIN
16987 SET new.f_int1 = old.f_int1 + @max_row,
16988 new.f_int2 = old.f_int2 - @max_row,
16989 new.f_charbig = '####updated per update trigger####';
16990 END|
16991 UPDATE t1
16992 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16993 f_charbig = '####updated per update statement itself####';
16994         
16995 # check trigger-9 success:      1
16996 DROP TRIGGER trg_2;
16997 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16998 f_int2 = CAST(f_char1 AS SIGNED INT),
16999 f_charbig = CONCAT('===',f_char1,'===');
17000 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17001 BEGIN
17002 SET new.f_int1 = new.f_int1 + @max_row,
17003 new.f_int2 = new.f_int2 - @max_row,
17004 new.f_charbig = '####updated per update trigger####';
17005 END|
17006 UPDATE t1
17007 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17008 f_charbig = '####updated per update statement itself####';
17009         
17010 # check trigger-10 success:     1
17011 DROP TRIGGER trg_2;
17012 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17013 f_int2 = CAST(f_char1 AS SIGNED INT),
17014 f_charbig = CONCAT('===',f_char1,'===');
17015 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17016 BEGIN
17017 SET new.f_int1 = @my_max1 + @counter,
17018 new.f_int2 = @my_min2 - @counter,
17019 new.f_charbig = '####updated per insert trigger####';
17020 SET @counter = @counter + 1;
17021 END|
17022 SET @counter = 1;
17023 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17024 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17025 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17026 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17027 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17028 ORDER BY f_int1;
17029 DROP TRIGGER trg_3;
17030         
17031 # check trigger-11 success:     1
17032 DELETE FROM t1
17033 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17034 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17035 AND f_charbig = '####updated per insert trigger####';
17036 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17037 BEGIN
17038 SET new.f_int1 = @my_max1 + @counter,
17039 new.f_int2 = @my_min2 - @counter,
17040 new.f_charbig = '####updated per insert trigger####';
17041 SET @counter = @counter + 1;
17042 END|
17043 SET @counter = 1;
17044 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17045 INSERT INTO t1 (f_char1, f_char2, f_charbig)
17046 SELECT CAST(f_int1 AS CHAR),
17047 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17048 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17049 ORDER BY f_int1;
17050 DROP TRIGGER trg_3;
17051         
17052 # check trigger-12 success:     1
17053 DELETE FROM t1
17054 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17055 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17056 AND f_charbig = '####updated per insert trigger####';
17057 ANALYZE  TABLE t1;
17058 Table   Op      Msg_type        Msg_text
17059 test.t1 analyze status  OK
17060 CHECK    TABLE t1 EXTENDED;
17061 Table   Op      Msg_type        Msg_text
17062 test.t1 check   status  OK
17063 CHECKSUM TABLE t1 EXTENDED;
17064 Table   Checksum
17065 test.t1 <some_value>
17066 OPTIMIZE TABLE t1;
17067 Table   Op      Msg_type        Msg_text
17068 test.t1 optimize        status  OK
17069 # check layout success:    1
17070 REPAIR   TABLE t1 EXTENDED;
17071 Table   Op      Msg_type        Msg_text
17072 test.t1 repair  status  OK
17073 # check layout success:    1
17074 TRUNCATE t1;
17075         
17076 # check TRUNCATE success:       1
17077 # check layout success:    1
17078 # End usability test (inc/partition_check.inc)
17079 DROP TABLE t1;
17080 CREATE TABLE t1 (
17081 f_int1 INTEGER,
17082 f_int2 INTEGER,
17083 f_char1 CHAR(20),
17084 f_char2 CHAR(20),
17085 f_charbig VARCHAR(1000)
17088 PARTITION BY RANGE(f_int1)
17089 (PARTITION parta VALUES LESS THAN (0),
17090 PARTITION part_1 VALUES LESS THAN (5),
17091 PARTITION part_2 VALUES LESS THAN (10),
17092 PARTITION part_3 VALUES LESS THAN (10 + 5),
17093 PARTITION part_4 VALUES LESS THAN (20),
17094 PARTITION part_5 VALUES LESS THAN (2147483646));
17095 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17096 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17097 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17098 ALTER TABLE t1 ANALYZE PARTITION ALL;
17099 Table   Op      Msg_type        Msg_text
17100 test.t1 analyze status  OK
17101 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17102 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17103 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17104 # Start usability test (inc/partition_check.inc)
17105 create_command
17106 SHOW CREATE TABLE t1;
17107 Table   Create Table
17108 t1      CREATE TABLE `t1` (
17109   `f_int1` int(11) DEFAULT NULL,
17110   `f_int2` int(11) DEFAULT NULL,
17111   `f_char1` char(20) DEFAULT NULL,
17112   `f_char2` char(20) DEFAULT NULL,
17113   `f_charbig` varchar(1000) DEFAULT NULL
17114 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
17115 /*!50100 PARTITION BY RANGE (f_int1)
17116 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
17117  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
17118  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
17119  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
17120  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
17121  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
17123 unified filelist
17124 t1#P#part_1.MYD
17125 t1#P#part_1.MYI
17126 t1#P#part_2.MYD
17127 t1#P#part_2.MYI
17128 t1#P#part_3.MYD
17129 t1#P#part_3.MYI
17130 t1#P#part_4.MYD
17131 t1#P#part_4.MYI
17132 t1#P#part_5.MYD
17133 t1#P#part_5.MYI
17134 t1#P#parta.MYD
17135 t1#P#parta.MYI
17136 t1.frm
17137 t1.par
17139 # check prerequisites-1 success:    1
17140 # check COUNT(*) success:    1
17141 # check MIN/MAX(f_int1) success:    1
17142 # check MIN/MAX(f_int2) success:    1
17143 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17144 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17145 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17146 WHERE f_int1 IN (2,3);
17147 # check prerequisites-3 success:    1
17148 DELETE FROM t1 WHERE f_charbig = 'delete me';
17149 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
17150 # check read via f_int1 success: 1
17151 # check read via f_int2 success: 1
17152         
17153 # check multiple-1 success:     1
17154 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17155         
17156 # check multiple-2 success:     1
17157 INSERT INTO t1 SELECT * FROM t0_template
17158 WHERE MOD(f_int1,3) = 0;
17159         
17160 # check multiple-3 success:     1
17161 UPDATE t1 SET f_int1 = f_int1 + @max_row
17162 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17163 AND @max_row_div2 + @max_row_div4;
17164         
17165 # check multiple-4 success:     1
17166 DELETE FROM t1
17167 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17168 AND @max_row_div2 + @max_row_div4 + @max_row;
17169         
17170 # check multiple-5 success:     1
17171 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17172 INSERT INTO t1
17173 SET f_int1 = @cur_value , f_int2 = @cur_value,
17174 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17175 f_charbig = '#SINGLE#';
17176         
17177 # check single-1 success:       1
17178 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17179 INSERT INTO t1
17180 SET f_int1 = @cur_value , f_int2 = @cur_value,
17181 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17182 f_charbig = '#SINGLE#';
17183         
17184 # check single-2 success:       1
17185 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17186 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17187 UPDATE t1 SET f_int1 = @cur_value2
17188 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17189         
17190 # check single-3 success:       1
17191 SET @cur_value1= -1;
17192 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17193 UPDATE t1 SET f_int1 = @cur_value1
17194 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17195         
17196 # check single-4 success:       1
17197 SELECT MAX(f_int1) INTO @cur_value FROM t1;
17198 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17199         
17200 # check single-5 success:       1
17201 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17202         
17203 # check single-6 success:       1
17204 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17205 ERROR HY000: Table has no partition for value 2147483647
17206 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17207 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17208 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17209 f_charbig = '#NULL#';
17210 INSERT INTO t1
17211 SET f_int1 = NULL , f_int2 = -@max_row,
17212 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17213 f_charbig = '#NULL#';
17214 # check null success:    1
17215         
17216 # check null-1 success:         1
17217 UPDATE t1 SET f_int1 = -@max_row
17218 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17219 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17220         
17221 # check null-2 success:         1
17222 UPDATE t1 SET f_int1 = NULL
17223 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17224 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17225         
17226 # check null-3 success:         1
17227 DELETE FROM t1
17228 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17229 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17230         
17231 # check null-4 success:         1
17232 DELETE FROM t1
17233 WHERE f_int1 = 0 AND f_int2 = 0
17234 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17235 AND f_charbig = '#NULL#';
17236 SET AUTOCOMMIT= 0;
17237 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17238 SELECT f_int1, f_int1, '', '', 'was inserted'
17239 FROM t0_template source_tab
17240 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17241         
17242 # check transactions-1 success:         1
17243 COMMIT WORK;
17244         
17245 # check transactions-2 success:         1
17246 ROLLBACK WORK;
17247         
17248 # check transactions-3 success:         1
17249 DELETE FROM t1 WHERE f_charbig = 'was inserted';
17250 COMMIT WORK;
17251 ROLLBACK WORK;
17252         
17253 # check transactions-4 success:         1
17254 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17255 SELECT f_int1, f_int1, '', '', 'was inserted'
17256 FROM t0_template source_tab
17257 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17258         
17259 # check transactions-5 success:         1
17260 ROLLBACK WORK;
17261 Warnings:
17262 Warning 1196    Some non-transactional changed tables couldn't be rolled back
17263         
17264 # check transactions-6 success:         1
17265 # INFO: Storage engine used for t1 seems to be not transactional.
17266 COMMIT;
17267         
17268 # check transactions-7 success:         1
17269 DELETE FROM t1 WHERE f_charbig = 'was inserted';
17270 COMMIT WORK;
17271 SET @@session.sql_mode = 'traditional';
17272 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17273 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17274 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17275 '', '', 'was inserted' FROM t0_template
17276 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17277 ERROR 22012: Division by 0
17278 COMMIT;
17279         
17280 # check transactions-8 success:         1
17281 # INFO: Storage engine used for t1 seems to be unable to revert
17282 #       changes made by the failing statement.
17283 SET @@session.sql_mode = '';
17284 SET AUTOCOMMIT= 1;
17285 DELETE FROM t1 WHERE f_charbig = 'was inserted';
17286 COMMIT WORK;
17287 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17288         
17289 # check special-1 success:      1
17290 UPDATE t1 SET f_charbig = '';
17291         
17292 # check special-2 success:      1
17293 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17294 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17295 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17296 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17297 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17298 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17299 'just inserted' FROM t0_template
17300 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17301 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17302 BEGIN
17303 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17304 f_charbig = 'updated by trigger'
17305       WHERE f_int1 = new.f_int1;
17306 END|
17307 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17308 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17309 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17310         
17311 # check trigger-1 success:      1
17312 DROP TRIGGER trg_1;
17313 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17314 f_int2 = CAST(f_char1 AS SIGNED INT),
17315 f_charbig = 'just inserted'
17316    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17317 DELETE FROM t0_aux
17318 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17319 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17320 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17321 'just inserted' FROM t0_template
17322 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17323 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17324 BEGIN
17325 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17326 f_charbig = 'updated by trigger'
17327       WHERE f_int1 = new.f_int1;
17328 END|
17329 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17330 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17331 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17332         
17333 # check trigger-2 success:      1
17334 DROP TRIGGER trg_1;
17335 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17336 f_int2 = CAST(f_char1 AS SIGNED INT),
17337 f_charbig = 'just inserted'
17338    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17339 DELETE FROM t0_aux
17340 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17341 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17342 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17343 'just inserted' FROM t0_template
17344 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17345 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17346 BEGIN
17347 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17348 f_charbig = 'updated by trigger'
17349       WHERE f_int1 = new.f_int1;
17350 END|
17351 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17352 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17353         
17354 # check trigger-3 success:      1
17355 DROP TRIGGER trg_1;
17356 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17357 f_int2 = CAST(f_char1 AS SIGNED INT),
17358 f_charbig = 'just inserted'
17359    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17360 DELETE FROM t0_aux
17361 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17362 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17363 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17364 'just inserted' FROM t0_template
17365 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17366 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17367 BEGIN
17368 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17369 f_charbig = 'updated by trigger'
17370       WHERE f_int1 = - old.f_int1;
17371 END|
17372 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17373 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17374         
17375 # check trigger-4 success:      1
17376 DROP TRIGGER trg_1;
17377 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17378 f_int2 = CAST(f_char1 AS SIGNED INT),
17379 f_charbig = 'just inserted'
17380    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17381 DELETE FROM t0_aux
17382 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17383 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17384 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17385 'just inserted' FROM t0_template
17386 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17387 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17388 BEGIN
17389 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17390 f_charbig = 'updated by trigger'
17391       WHERE f_int1 = new.f_int1;
17392 END|
17393 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17394 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17395         
17396 # check trigger-5 success:      1
17397 DROP TRIGGER trg_1;
17398 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17399 f_int2 = CAST(f_char1 AS SIGNED INT),
17400 f_charbig = 'just inserted'
17401    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17402 DELETE FROM t0_aux
17403 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17404 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17405 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17406 'just inserted' FROM t0_template
17407 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17408 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17409 BEGIN
17410 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17411 f_charbig = 'updated by trigger'
17412       WHERE f_int1 = - old.f_int1;
17413 END|
17414 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17415 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17416         
17417 # check trigger-6 success:      1
17418 DROP TRIGGER trg_1;
17419 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17420 f_int2 = CAST(f_char1 AS SIGNED INT),
17421 f_charbig = 'just inserted'
17422    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17423 DELETE FROM t0_aux
17424 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17425 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17426 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17427 'just inserted' FROM t0_template
17428 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17429 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17430 BEGIN
17431 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17432 f_charbig = 'updated by trigger'
17433       WHERE f_int1 = - old.f_int1;
17434 END|
17435 DELETE FROM t0_aux
17436 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17437         
17438 # check trigger-7 success:      1
17439 DROP TRIGGER trg_1;
17440 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17441 f_int2 = CAST(f_char1 AS SIGNED INT),
17442 f_charbig = 'just inserted'
17443    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17444 DELETE FROM t0_aux
17445 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17446 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17447 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17448 'just inserted' FROM t0_template
17449 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17450 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17451 BEGIN
17452 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17453 f_charbig = 'updated by trigger'
17454       WHERE f_int1 = - old.f_int1;
17455 END|
17456 DELETE FROM t0_aux
17457 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17458         
17459 # check trigger-8 success:      1
17460 DROP TRIGGER trg_1;
17461 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17462 f_int2 = CAST(f_char1 AS SIGNED INT),
17463 f_charbig = 'just inserted'
17464    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17465 DELETE FROM t0_aux
17466 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17467 DELETE FROM t1
17468 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17469 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17470 BEGIN
17471 SET new.f_int1 = old.f_int1 + @max_row,
17472 new.f_int2 = old.f_int2 - @max_row,
17473 new.f_charbig = '####updated per update trigger####';
17474 END|
17475 UPDATE t1
17476 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17477 f_charbig = '####updated per update statement itself####';
17478         
17479 # check trigger-9 success:      1
17480 DROP TRIGGER trg_2;
17481 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17482 f_int2 = CAST(f_char1 AS SIGNED INT),
17483 f_charbig = CONCAT('===',f_char1,'===');
17484 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17485 BEGIN
17486 SET new.f_int1 = new.f_int1 + @max_row,
17487 new.f_int2 = new.f_int2 - @max_row,
17488 new.f_charbig = '####updated per update trigger####';
17489 END|
17490 UPDATE t1
17491 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17492 f_charbig = '####updated per update statement itself####';
17493         
17494 # check trigger-10 success:     1
17495 DROP TRIGGER trg_2;
17496 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17497 f_int2 = CAST(f_char1 AS SIGNED INT),
17498 f_charbig = CONCAT('===',f_char1,'===');
17499 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17500 BEGIN
17501 SET new.f_int1 = @my_max1 + @counter,
17502 new.f_int2 = @my_min2 - @counter,
17503 new.f_charbig = '####updated per insert trigger####';
17504 SET @counter = @counter + 1;
17505 END|
17506 SET @counter = 1;
17507 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17508 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17509 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17510 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17511 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17512 ORDER BY f_int1;
17513 DROP TRIGGER trg_3;
17514         
17515 # check trigger-11 success:     1
17516 DELETE FROM t1
17517 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17518 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17519 AND f_charbig = '####updated per insert trigger####';
17520 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17521 BEGIN
17522 SET new.f_int1 = @my_max1 + @counter,
17523 new.f_int2 = @my_min2 - @counter,
17524 new.f_charbig = '####updated per insert trigger####';
17525 SET @counter = @counter + 1;
17526 END|
17527 SET @counter = 1;
17528 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17529 INSERT INTO t1 (f_char1, f_char2, f_charbig)
17530 SELECT CAST(f_int1 AS CHAR),
17531 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17532 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17533 ORDER BY f_int1;
17534 DROP TRIGGER trg_3;
17535         
17536 # check trigger-12 success:     1
17537 DELETE FROM t1
17538 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17539 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17540 AND f_charbig = '####updated per insert trigger####';
17541 ANALYZE  TABLE t1;
17542 Table   Op      Msg_type        Msg_text
17543 test.t1 analyze status  OK
17544 CHECK    TABLE t1 EXTENDED;
17545 Table   Op      Msg_type        Msg_text
17546 test.t1 check   status  OK
17547 CHECKSUM TABLE t1 EXTENDED;
17548 Table   Checksum
17549 test.t1 <some_value>
17550 OPTIMIZE TABLE t1;
17551 Table   Op      Msg_type        Msg_text
17552 test.t1 optimize        status  OK
17553 # check layout success:    1
17554 REPAIR   TABLE t1 EXTENDED;
17555 Table   Op      Msg_type        Msg_text
17556 test.t1 repair  status  OK
17557 # check layout success:    1
17558 TRUNCATE t1;
17559         
17560 # check TRUNCATE success:       1
17561 # check layout success:    1
17562 # End usability test (inc/partition_check.inc)
17563 DROP TABLE t1;
17564 CREATE TABLE t1 (
17565 f_int1 INTEGER,
17566 f_int2 INTEGER,
17567 f_char1 CHAR(20),
17568 f_char2 CHAR(20),
17569 f_charbig VARCHAR(1000)
17572 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
17573 (PARTITION part_1 VALUES LESS THAN (0),
17574 PARTITION part_2 VALUES LESS THAN (5),
17575 PARTITION part_3 VALUES LESS THAN (10),
17576 PARTITION part_4 VALUES LESS THAN (2147483646));
17577 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17578 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17579 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17580 ALTER TABLE t1 ANALYZE PARTITION ALL;
17581 Table   Op      Msg_type        Msg_text
17582 test.t1 analyze status  OK
17583 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17584 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17585 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17586 # Start usability test (inc/partition_check.inc)
17587 create_command
17588 SHOW CREATE TABLE t1;
17589 Table   Create Table
17590 t1      CREATE TABLE `t1` (
17591   `f_int1` int(11) DEFAULT NULL,
17592   `f_int2` int(11) DEFAULT NULL,
17593   `f_char1` char(20) DEFAULT NULL,
17594   `f_char2` char(20) DEFAULT NULL,
17595   `f_charbig` varchar(1000) DEFAULT NULL
17596 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
17597 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
17598 SUBPARTITION BY HASH (f_int1)
17599 SUBPARTITIONS 2
17600 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
17601  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
17602  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
17603  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
17605 unified filelist
17606 t1#P#part_1#SP#part_1sp0.MYD
17607 t1#P#part_1#SP#part_1sp0.MYI
17608 t1#P#part_1#SP#part_1sp1.MYD
17609 t1#P#part_1#SP#part_1sp1.MYI
17610 t1#P#part_2#SP#part_2sp0.MYD
17611 t1#P#part_2#SP#part_2sp0.MYI
17612 t1#P#part_2#SP#part_2sp1.MYD
17613 t1#P#part_2#SP#part_2sp1.MYI
17614 t1#P#part_3#SP#part_3sp0.MYD
17615 t1#P#part_3#SP#part_3sp0.MYI
17616 t1#P#part_3#SP#part_3sp1.MYD
17617 t1#P#part_3#SP#part_3sp1.MYI
17618 t1#P#part_4#SP#part_4sp0.MYD
17619 t1#P#part_4#SP#part_4sp0.MYI
17620 t1#P#part_4#SP#part_4sp1.MYD
17621 t1#P#part_4#SP#part_4sp1.MYI
17622 t1.frm
17623 t1.par
17625 # check prerequisites-1 success:    1
17626 # check COUNT(*) success:    1
17627 # check MIN/MAX(f_int1) success:    1
17628 # check MIN/MAX(f_int2) success:    1
17629 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17630 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17631 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17632 WHERE f_int1 IN (2,3);
17633 # check prerequisites-3 success:    1
17634 DELETE FROM t1 WHERE f_charbig = 'delete me';
17635 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
17636 # check read via f_int1 success: 1
17637 # check read via f_int2 success: 1
17638         
17639 # check multiple-1 success:     1
17640 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17641         
17642 # check multiple-2 success:     1
17643 INSERT INTO t1 SELECT * FROM t0_template
17644 WHERE MOD(f_int1,3) = 0;
17645         
17646 # check multiple-3 success:     1
17647 UPDATE t1 SET f_int1 = f_int1 + @max_row
17648 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17649 AND @max_row_div2 + @max_row_div4;
17650         
17651 # check multiple-4 success:     1
17652 DELETE FROM t1
17653 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17654 AND @max_row_div2 + @max_row_div4 + @max_row;
17655         
17656 # check multiple-5 success:     1
17657 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17658 INSERT INTO t1
17659 SET f_int1 = @cur_value , f_int2 = @cur_value,
17660 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17661 f_charbig = '#SINGLE#';
17662         
17663 # check single-1 success:       1
17664 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17665 INSERT INTO t1
17666 SET f_int1 = @cur_value , f_int2 = @cur_value,
17667 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17668 f_charbig = '#SINGLE#';
17669         
17670 # check single-2 success:       1
17671 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17672 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17673 UPDATE t1 SET f_int1 = @cur_value2
17674 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17675         
17676 # check single-3 success:       1
17677 SET @cur_value1= -1;
17678 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17679 UPDATE t1 SET f_int1 = @cur_value1
17680 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17681         
17682 # check single-4 success:       1
17683 SELECT MAX(f_int1) INTO @cur_value FROM t1;
17684 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17685         
17686 # check single-5 success:       1
17687 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17688         
17689 # check single-6 success:       1
17690 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17691         
17692 # check single-7 success:       1
17693 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17694 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17695 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17696 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17697 f_charbig = '#NULL#';
17698 INSERT INTO t1
17699 SET f_int1 = NULL , f_int2 = -@max_row,
17700 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17701 f_charbig = '#NULL#';
17702 # check null success:    1
17703         
17704 # check null-1 success:         1
17705 UPDATE t1 SET f_int1 = -@max_row
17706 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17707 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17708         
17709 # check null-2 success:         1
17710 UPDATE t1 SET f_int1 = NULL
17711 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17712 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17713         
17714 # check null-3 success:         1
17715 DELETE FROM t1
17716 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17717 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17718         
17719 # check null-4 success:         1
17720 DELETE FROM t1
17721 WHERE f_int1 = 0 AND f_int2 = 0
17722 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17723 AND f_charbig = '#NULL#';
17724 SET AUTOCOMMIT= 0;
17725 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17726 SELECT f_int1, f_int1, '', '', 'was inserted'
17727 FROM t0_template source_tab
17728 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17729         
17730 # check transactions-1 success:         1
17731 COMMIT WORK;
17732         
17733 # check transactions-2 success:         1
17734 ROLLBACK WORK;
17735         
17736 # check transactions-3 success:         1
17737 DELETE FROM t1 WHERE f_charbig = 'was inserted';
17738 COMMIT WORK;
17739 ROLLBACK WORK;
17740         
17741 # check transactions-4 success:         1
17742 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17743 SELECT f_int1, f_int1, '', '', 'was inserted'
17744 FROM t0_template source_tab
17745 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17746         
17747 # check transactions-5 success:         1
17748 ROLLBACK WORK;
17749 Warnings:
17750 Warning 1196    Some non-transactional changed tables couldn't be rolled back
17751         
17752 # check transactions-6 success:         1
17753 # INFO: Storage engine used for t1 seems to be not transactional.
17754 COMMIT;
17755         
17756 # check transactions-7 success:         1
17757 DELETE FROM t1 WHERE f_charbig = 'was inserted';
17758 COMMIT WORK;
17759 SET @@session.sql_mode = 'traditional';
17760 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17761 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17762 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17763 '', '', 'was inserted' FROM t0_template
17764 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17765 ERROR 22012: Division by 0
17766 COMMIT;
17767         
17768 # check transactions-8 success:         1
17769 # INFO: Storage engine used for t1 seems to be unable to revert
17770 #       changes made by the failing statement.
17771 SET @@session.sql_mode = '';
17772 SET AUTOCOMMIT= 1;
17773 DELETE FROM t1 WHERE f_charbig = 'was inserted';
17774 COMMIT WORK;
17775 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17776         
17777 # check special-1 success:      1
17778 UPDATE t1 SET f_charbig = '';
17779         
17780 # check special-2 success:      1
17781 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17782 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17783 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17784 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17785 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17786 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17787 'just inserted' FROM t0_template
17788 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17789 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17790 BEGIN
17791 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17792 f_charbig = 'updated by trigger'
17793       WHERE f_int1 = new.f_int1;
17794 END|
17795 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17796 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17797 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17798         
17799 # check trigger-1 success:      1
17800 DROP TRIGGER trg_1;
17801 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17802 f_int2 = CAST(f_char1 AS SIGNED INT),
17803 f_charbig = 'just inserted'
17804    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17805 DELETE FROM t0_aux
17806 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17807 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17808 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17809 'just inserted' FROM t0_template
17810 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17811 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17812 BEGIN
17813 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17814 f_charbig = 'updated by trigger'
17815       WHERE f_int1 = new.f_int1;
17816 END|
17817 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17818 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17819 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17820         
17821 # check trigger-2 success:      1
17822 DROP TRIGGER trg_1;
17823 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17824 f_int2 = CAST(f_char1 AS SIGNED INT),
17825 f_charbig = 'just inserted'
17826    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17827 DELETE FROM t0_aux
17828 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17829 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17830 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17831 'just inserted' FROM t0_template
17832 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17833 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17834 BEGIN
17835 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17836 f_charbig = 'updated by trigger'
17837       WHERE f_int1 = new.f_int1;
17838 END|
17839 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17840 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17841         
17842 # check trigger-3 success:      1
17843 DROP TRIGGER trg_1;
17844 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17845 f_int2 = CAST(f_char1 AS SIGNED INT),
17846 f_charbig = 'just inserted'
17847    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17848 DELETE FROM t0_aux
17849 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17850 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17851 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17852 'just inserted' FROM t0_template
17853 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17854 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17855 BEGIN
17856 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17857 f_charbig = 'updated by trigger'
17858       WHERE f_int1 = - old.f_int1;
17859 END|
17860 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17861 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17862         
17863 # check trigger-4 success:      1
17864 DROP TRIGGER trg_1;
17865 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17866 f_int2 = CAST(f_char1 AS SIGNED INT),
17867 f_charbig = 'just inserted'
17868    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17869 DELETE FROM t0_aux
17870 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17871 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17872 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17873 'just inserted' FROM t0_template
17874 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17875 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17876 BEGIN
17877 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17878 f_charbig = 'updated by trigger'
17879       WHERE f_int1 = new.f_int1;
17880 END|
17881 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17882 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17883         
17884 # check trigger-5 success:      1
17885 DROP TRIGGER trg_1;
17886 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17887 f_int2 = CAST(f_char1 AS SIGNED INT),
17888 f_charbig = 'just inserted'
17889    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17890 DELETE FROM t0_aux
17891 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17892 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17893 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17894 'just inserted' FROM t0_template
17895 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17896 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17897 BEGIN
17898 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17899 f_charbig = 'updated by trigger'
17900       WHERE f_int1 = - old.f_int1;
17901 END|
17902 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
17903 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17904         
17905 # check trigger-6 success:      1
17906 DROP TRIGGER trg_1;
17907 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17908 f_int2 = CAST(f_char1 AS SIGNED INT),
17909 f_charbig = 'just inserted'
17910    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17911 DELETE FROM t0_aux
17912 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17913 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17914 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17915 'just inserted' FROM t0_template
17916 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17917 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17918 BEGIN
17919 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17920 f_charbig = 'updated by trigger'
17921       WHERE f_int1 = - old.f_int1;
17922 END|
17923 DELETE FROM t0_aux
17924 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17925         
17926 # check trigger-7 success:      1
17927 DROP TRIGGER trg_1;
17928 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17929 f_int2 = CAST(f_char1 AS SIGNED INT),
17930 f_charbig = 'just inserted'
17931    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17932 DELETE FROM t0_aux
17933 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17934 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17935 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17936 'just inserted' FROM t0_template
17937 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17938 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17939 BEGIN
17940 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17941 f_charbig = 'updated by trigger'
17942       WHERE f_int1 = - old.f_int1;
17943 END|
17944 DELETE FROM t0_aux
17945 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17946         
17947 # check trigger-8 success:      1
17948 DROP TRIGGER trg_1;
17949 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17950 f_int2 = CAST(f_char1 AS SIGNED INT),
17951 f_charbig = 'just inserted'
17952    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17953 DELETE FROM t0_aux
17954 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17955 DELETE FROM t1
17956 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17957 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17958 BEGIN
17959 SET new.f_int1 = old.f_int1 + @max_row,
17960 new.f_int2 = old.f_int2 - @max_row,
17961 new.f_charbig = '####updated per update trigger####';
17962 END|
17963 UPDATE t1
17964 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17965 f_charbig = '####updated per update statement itself####';
17966         
17967 # check trigger-9 success:      1
17968 DROP TRIGGER trg_2;
17969 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17970 f_int2 = CAST(f_char1 AS SIGNED INT),
17971 f_charbig = CONCAT('===',f_char1,'===');
17972 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17973 BEGIN
17974 SET new.f_int1 = new.f_int1 + @max_row,
17975 new.f_int2 = new.f_int2 - @max_row,
17976 new.f_charbig = '####updated per update trigger####';
17977 END|
17978 UPDATE t1
17979 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17980 f_charbig = '####updated per update statement itself####';
17981         
17982 # check trigger-10 success:     1
17983 DROP TRIGGER trg_2;
17984 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17985 f_int2 = CAST(f_char1 AS SIGNED INT),
17986 f_charbig = CONCAT('===',f_char1,'===');
17987 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17988 BEGIN
17989 SET new.f_int1 = @my_max1 + @counter,
17990 new.f_int2 = @my_min2 - @counter,
17991 new.f_charbig = '####updated per insert trigger####';
17992 SET @counter = @counter + 1;
17993 END|
17994 SET @counter = 1;
17995 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17996 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17997 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17998 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17999 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18000 ORDER BY f_int1;
18001 DROP TRIGGER trg_3;
18002         
18003 # check trigger-11 success:     1
18004 DELETE FROM t1
18005 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18006 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18007 AND f_charbig = '####updated per insert trigger####';
18008 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18009 BEGIN
18010 SET new.f_int1 = @my_max1 + @counter,
18011 new.f_int2 = @my_min2 - @counter,
18012 new.f_charbig = '####updated per insert trigger####';
18013 SET @counter = @counter + 1;
18014 END|
18015 SET @counter = 1;
18016 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18017 INSERT INTO t1 (f_char1, f_char2, f_charbig)
18018 SELECT CAST(f_int1 AS CHAR),
18019 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18020 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18021 ORDER BY f_int1;
18022 DROP TRIGGER trg_3;
18023         
18024 # check trigger-12 success:     1
18025 DELETE FROM t1
18026 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18027 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18028 AND f_charbig = '####updated per insert trigger####';
18029 ANALYZE  TABLE t1;
18030 Table   Op      Msg_type        Msg_text
18031 test.t1 analyze status  OK
18032 CHECK    TABLE t1 EXTENDED;
18033 Table   Op      Msg_type        Msg_text
18034 test.t1 check   status  OK
18035 CHECKSUM TABLE t1 EXTENDED;
18036 Table   Checksum
18037 test.t1 <some_value>
18038 OPTIMIZE TABLE t1;
18039 Table   Op      Msg_type        Msg_text
18040 test.t1 optimize        status  OK
18041 # check layout success:    1
18042 REPAIR   TABLE t1 EXTENDED;
18043 Table   Op      Msg_type        Msg_text
18044 test.t1 repair  status  OK
18045 # check layout success:    1
18046 TRUNCATE t1;
18047         
18048 # check TRUNCATE success:       1
18049 # check layout success:    1
18050 # End usability test (inc/partition_check.inc)
18051 DROP TABLE t1;
18052 CREATE TABLE t1 (
18053 f_int1 INTEGER,
18054 f_int2 INTEGER,
18055 f_char1 CHAR(20),
18056 f_char2 CHAR(20),
18057 f_charbig VARCHAR(1000)
18060 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
18061 (PARTITION part_1 VALUES LESS THAN (0)
18062 (SUBPARTITION subpart11, SUBPARTITION subpart12),
18063 PARTITION part_2 VALUES LESS THAN (5)
18064 (SUBPARTITION subpart21, SUBPARTITION subpart22),
18065 PARTITION part_3 VALUES LESS THAN (10)
18066 (SUBPARTITION subpart31, SUBPARTITION subpart32),
18067 PARTITION part_4 VALUES LESS THAN (2147483646)
18068 (SUBPARTITION subpart41, SUBPARTITION subpart42));
18069 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18070 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18071 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18072 ALTER TABLE t1 ANALYZE PARTITION ALL;
18073 Table   Op      Msg_type        Msg_text
18074 test.t1 analyze status  OK
18075 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18076 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18077 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18078 # Start usability test (inc/partition_check.inc)
18079 create_command
18080 SHOW CREATE TABLE t1;
18081 Table   Create Table
18082 t1      CREATE TABLE `t1` (
18083   `f_int1` int(11) DEFAULT NULL,
18084   `f_int2` int(11) DEFAULT NULL,
18085   `f_char1` char(20) DEFAULT NULL,
18086   `f_char2` char(20) DEFAULT NULL,
18087   `f_charbig` varchar(1000) DEFAULT NULL
18088 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
18089 /*!50100 PARTITION BY RANGE (f_int1)
18090 SUBPARTITION BY KEY (f_int1)
18091 (PARTITION part_1 VALUES LESS THAN (0)
18092  (SUBPARTITION subpart11 ENGINE = MyISAM,
18093   SUBPARTITION subpart12 ENGINE = MyISAM),
18094  PARTITION part_2 VALUES LESS THAN (5)
18095  (SUBPARTITION subpart21 ENGINE = MyISAM,
18096   SUBPARTITION subpart22 ENGINE = MyISAM),
18097  PARTITION part_3 VALUES LESS THAN (10)
18098  (SUBPARTITION subpart31 ENGINE = MyISAM,
18099   SUBPARTITION subpart32 ENGINE = MyISAM),
18100  PARTITION part_4 VALUES LESS THAN (2147483646)
18101  (SUBPARTITION subpart41 ENGINE = MyISAM,
18102   SUBPARTITION subpart42 ENGINE = MyISAM)) */
18104 unified filelist
18105 t1#P#part_1#SP#subpart11.MYD
18106 t1#P#part_1#SP#subpart11.MYI
18107 t1#P#part_1#SP#subpart12.MYD
18108 t1#P#part_1#SP#subpart12.MYI
18109 t1#P#part_2#SP#subpart21.MYD
18110 t1#P#part_2#SP#subpart21.MYI
18111 t1#P#part_2#SP#subpart22.MYD
18112 t1#P#part_2#SP#subpart22.MYI
18113 t1#P#part_3#SP#subpart31.MYD
18114 t1#P#part_3#SP#subpart31.MYI
18115 t1#P#part_3#SP#subpart32.MYD
18116 t1#P#part_3#SP#subpart32.MYI
18117 t1#P#part_4#SP#subpart41.MYD
18118 t1#P#part_4#SP#subpart41.MYI
18119 t1#P#part_4#SP#subpart42.MYD
18120 t1#P#part_4#SP#subpart42.MYI
18121 t1.frm
18122 t1.par
18124 # check prerequisites-1 success:    1
18125 # check COUNT(*) success:    1
18126 # check MIN/MAX(f_int1) success:    1
18127 # check MIN/MAX(f_int2) success:    1
18128 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18129 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18130 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18131 WHERE f_int1 IN (2,3);
18132 # check prerequisites-3 success:    1
18133 DELETE FROM t1 WHERE f_charbig = 'delete me';
18134 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
18135 # check read via f_int1 success: 1
18136 # check read via f_int2 success: 1
18137         
18138 # check multiple-1 success:     1
18139 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18140         
18141 # check multiple-2 success:     1
18142 INSERT INTO t1 SELECT * FROM t0_template
18143 WHERE MOD(f_int1,3) = 0;
18144         
18145 # check multiple-3 success:     1
18146 UPDATE t1 SET f_int1 = f_int1 + @max_row
18147 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18148 AND @max_row_div2 + @max_row_div4;
18149         
18150 # check multiple-4 success:     1
18151 DELETE FROM t1
18152 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18153 AND @max_row_div2 + @max_row_div4 + @max_row;
18154         
18155 # check multiple-5 success:     1
18156 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18157 INSERT INTO t1
18158 SET f_int1 = @cur_value , f_int2 = @cur_value,
18159 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18160 f_charbig = '#SINGLE#';
18161         
18162 # check single-1 success:       1
18163 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18164 INSERT INTO t1
18165 SET f_int1 = @cur_value , f_int2 = @cur_value,
18166 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18167 f_charbig = '#SINGLE#';
18168         
18169 # check single-2 success:       1
18170 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18171 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18172 UPDATE t1 SET f_int1 = @cur_value2
18173 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18174         
18175 # check single-3 success:       1
18176 SET @cur_value1= -1;
18177 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18178 UPDATE t1 SET f_int1 = @cur_value1
18179 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18180         
18181 # check single-4 success:       1
18182 SELECT MAX(f_int1) INTO @cur_value FROM t1;
18183 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18184         
18185 # check single-5 success:       1
18186 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18187         
18188 # check single-6 success:       1
18189 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18190 ERROR HY000: Table has no partition for value 2147483647
18191 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18192 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18193 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18194 f_charbig = '#NULL#';
18195 INSERT INTO t1
18196 SET f_int1 = NULL , f_int2 = -@max_row,
18197 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18198 f_charbig = '#NULL#';
18199 # check null success:    1
18200         
18201 # check null-1 success:         1
18202 UPDATE t1 SET f_int1 = -@max_row
18203 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18204 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18205         
18206 # check null-2 success:         1
18207 UPDATE t1 SET f_int1 = NULL
18208 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18209 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18210         
18211 # check null-3 success:         1
18212 DELETE FROM t1
18213 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18214 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18215         
18216 # check null-4 success:         1
18217 DELETE FROM t1
18218 WHERE f_int1 = 0 AND f_int2 = 0
18219 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18220 AND f_charbig = '#NULL#';
18221 SET AUTOCOMMIT= 0;
18222 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18223 SELECT f_int1, f_int1, '', '', 'was inserted'
18224 FROM t0_template source_tab
18225 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18226         
18227 # check transactions-1 success:         1
18228 COMMIT WORK;
18229         
18230 # check transactions-2 success:         1
18231 ROLLBACK WORK;
18232         
18233 # check transactions-3 success:         1
18234 DELETE FROM t1 WHERE f_charbig = 'was inserted';
18235 COMMIT WORK;
18236 ROLLBACK WORK;
18237         
18238 # check transactions-4 success:         1
18239 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18240 SELECT f_int1, f_int1, '', '', 'was inserted'
18241 FROM t0_template source_tab
18242 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18243         
18244 # check transactions-5 success:         1
18245 ROLLBACK WORK;
18246 Warnings:
18247 Warning 1196    Some non-transactional changed tables couldn't be rolled back
18248         
18249 # check transactions-6 success:         1
18250 # INFO: Storage engine used for t1 seems to be not transactional.
18251 COMMIT;
18252         
18253 # check transactions-7 success:         1
18254 DELETE FROM t1 WHERE f_charbig = 'was inserted';
18255 COMMIT WORK;
18256 SET @@session.sql_mode = 'traditional';
18257 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18258 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18259 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18260 '', '', 'was inserted' FROM t0_template
18261 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18262 ERROR 22012: Division by 0
18263 COMMIT;
18264         
18265 # check transactions-8 success:         1
18266 # INFO: Storage engine used for t1 seems to be unable to revert
18267 #       changes made by the failing statement.
18268 SET @@session.sql_mode = '';
18269 SET AUTOCOMMIT= 1;
18270 DELETE FROM t1 WHERE f_charbig = 'was inserted';
18271 COMMIT WORK;
18272 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18273         
18274 # check special-1 success:      1
18275 UPDATE t1 SET f_charbig = '';
18276         
18277 # check special-2 success:      1
18278 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18279 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18280 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18281 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18282 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18283 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18284 'just inserted' FROM t0_template
18285 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18286 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18287 BEGIN
18288 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18289 f_charbig = 'updated by trigger'
18290       WHERE f_int1 = new.f_int1;
18291 END|
18292 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18293 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18294 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18295         
18296 # check trigger-1 success:      1
18297 DROP TRIGGER trg_1;
18298 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18299 f_int2 = CAST(f_char1 AS SIGNED INT),
18300 f_charbig = 'just inserted'
18301    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18302 DELETE FROM t0_aux
18303 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18304 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18305 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18306 'just inserted' FROM t0_template
18307 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18308 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18309 BEGIN
18310 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18311 f_charbig = 'updated by trigger'
18312       WHERE f_int1 = new.f_int1;
18313 END|
18314 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18315 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18316 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18317         
18318 # check trigger-2 success:      1
18319 DROP TRIGGER trg_1;
18320 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18321 f_int2 = CAST(f_char1 AS SIGNED INT),
18322 f_charbig = 'just inserted'
18323    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18324 DELETE FROM t0_aux
18325 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18326 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18327 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18328 'just inserted' FROM t0_template
18329 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18330 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18331 BEGIN
18332 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18333 f_charbig = 'updated by trigger'
18334       WHERE f_int1 = new.f_int1;
18335 END|
18336 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18337 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18338         
18339 # check trigger-3 success:      1
18340 DROP TRIGGER trg_1;
18341 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18342 f_int2 = CAST(f_char1 AS SIGNED INT),
18343 f_charbig = 'just inserted'
18344    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18345 DELETE FROM t0_aux
18346 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18347 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18348 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18349 'just inserted' FROM t0_template
18350 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18351 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18352 BEGIN
18353 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18354 f_charbig = 'updated by trigger'
18355       WHERE f_int1 = - old.f_int1;
18356 END|
18357 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18358 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18359         
18360 # check trigger-4 success:      1
18361 DROP TRIGGER trg_1;
18362 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18363 f_int2 = CAST(f_char1 AS SIGNED INT),
18364 f_charbig = 'just inserted'
18365    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18366 DELETE FROM t0_aux
18367 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18368 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18369 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18370 'just inserted' FROM t0_template
18371 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18372 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18373 BEGIN
18374 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18375 f_charbig = 'updated by trigger'
18376       WHERE f_int1 = new.f_int1;
18377 END|
18378 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18379 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18380         
18381 # check trigger-5 success:      1
18382 DROP TRIGGER trg_1;
18383 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18384 f_int2 = CAST(f_char1 AS SIGNED INT),
18385 f_charbig = 'just inserted'
18386    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18387 DELETE FROM t0_aux
18388 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18389 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18390 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18391 'just inserted' FROM t0_template
18392 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18393 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18394 BEGIN
18395 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18396 f_charbig = 'updated by trigger'
18397       WHERE f_int1 = - old.f_int1;
18398 END|
18399 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18400 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18401         
18402 # check trigger-6 success:      1
18403 DROP TRIGGER trg_1;
18404 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18405 f_int2 = CAST(f_char1 AS SIGNED INT),
18406 f_charbig = 'just inserted'
18407    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18408 DELETE FROM t0_aux
18409 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18410 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18411 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18412 'just inserted' FROM t0_template
18413 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18414 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18415 BEGIN
18416 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18417 f_charbig = 'updated by trigger'
18418       WHERE f_int1 = - old.f_int1;
18419 END|
18420 DELETE FROM t0_aux
18421 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18422         
18423 # check trigger-7 success:      1
18424 DROP TRIGGER trg_1;
18425 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18426 f_int2 = CAST(f_char1 AS SIGNED INT),
18427 f_charbig = 'just inserted'
18428    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18429 DELETE FROM t0_aux
18430 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18431 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18432 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18433 'just inserted' FROM t0_template
18434 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18435 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18436 BEGIN
18437 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18438 f_charbig = 'updated by trigger'
18439       WHERE f_int1 = - old.f_int1;
18440 END|
18441 DELETE FROM t0_aux
18442 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18443         
18444 # check trigger-8 success:      1
18445 DROP TRIGGER trg_1;
18446 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18447 f_int2 = CAST(f_char1 AS SIGNED INT),
18448 f_charbig = 'just inserted'
18449    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18450 DELETE FROM t0_aux
18451 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18452 DELETE FROM t1
18453 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18454 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18455 BEGIN
18456 SET new.f_int1 = old.f_int1 + @max_row,
18457 new.f_int2 = old.f_int2 - @max_row,
18458 new.f_charbig = '####updated per update trigger####';
18459 END|
18460 UPDATE t1
18461 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18462 f_charbig = '####updated per update statement itself####';
18463         
18464 # check trigger-9 success:      1
18465 DROP TRIGGER trg_2;
18466 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18467 f_int2 = CAST(f_char1 AS SIGNED INT),
18468 f_charbig = CONCAT('===',f_char1,'===');
18469 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18470 BEGIN
18471 SET new.f_int1 = new.f_int1 + @max_row,
18472 new.f_int2 = new.f_int2 - @max_row,
18473 new.f_charbig = '####updated per update trigger####';
18474 END|
18475 UPDATE t1
18476 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18477 f_charbig = '####updated per update statement itself####';
18478         
18479 # check trigger-10 success:     1
18480 DROP TRIGGER trg_2;
18481 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18482 f_int2 = CAST(f_char1 AS SIGNED INT),
18483 f_charbig = CONCAT('===',f_char1,'===');
18484 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18485 BEGIN
18486 SET new.f_int1 = @my_max1 + @counter,
18487 new.f_int2 = @my_min2 - @counter,
18488 new.f_charbig = '####updated per insert trigger####';
18489 SET @counter = @counter + 1;
18490 END|
18491 SET @counter = 1;
18492 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18493 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18494 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18495 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18496 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18497 ORDER BY f_int1;
18498 DROP TRIGGER trg_3;
18499         
18500 # check trigger-11 success:     1
18501 DELETE FROM t1
18502 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18503 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18504 AND f_charbig = '####updated per insert trigger####';
18505 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18506 BEGIN
18507 SET new.f_int1 = @my_max1 + @counter,
18508 new.f_int2 = @my_min2 - @counter,
18509 new.f_charbig = '####updated per insert trigger####';
18510 SET @counter = @counter + 1;
18511 END|
18512 SET @counter = 1;
18513 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18514 INSERT INTO t1 (f_char1, f_char2, f_charbig)
18515 SELECT CAST(f_int1 AS CHAR),
18516 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18517 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18518 ORDER BY f_int1;
18519 DROP TRIGGER trg_3;
18520         
18521 # check trigger-12 success:     1
18522 DELETE FROM t1
18523 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18524 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18525 AND f_charbig = '####updated per insert trigger####';
18526 ANALYZE  TABLE t1;
18527 Table   Op      Msg_type        Msg_text
18528 test.t1 analyze status  OK
18529 CHECK    TABLE t1 EXTENDED;
18530 Table   Op      Msg_type        Msg_text
18531 test.t1 check   status  OK
18532 CHECKSUM TABLE t1 EXTENDED;
18533 Table   Checksum
18534 test.t1 <some_value>
18535 OPTIMIZE TABLE t1;
18536 Table   Op      Msg_type        Msg_text
18537 test.t1 optimize        status  OK
18538 # check layout success:    1
18539 REPAIR   TABLE t1 EXTENDED;
18540 Table   Op      Msg_type        Msg_text
18541 test.t1 repair  status  OK
18542 # check layout success:    1
18543 TRUNCATE t1;
18544         
18545 # check TRUNCATE success:       1
18546 # check layout success:    1
18547 # End usability test (inc/partition_check.inc)
18548 DROP TABLE t1;
18549 CREATE TABLE t1 (
18550 f_int1 INTEGER,
18551 f_int2 INTEGER,
18552 f_char1 CHAR(20),
18553 f_char2 CHAR(20),
18554 f_charbig VARCHAR(1000)
18557 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
18558 (PARTITION part_1 VALUES IN (0)
18559 (SUBPARTITION sp11, SUBPARTITION sp12),
18560 PARTITION part_2 VALUES IN (1)
18561 (SUBPARTITION sp21, SUBPARTITION sp22),
18562 PARTITION part_3 VALUES IN (2)
18563 (SUBPARTITION sp31, SUBPARTITION sp32),
18564 PARTITION part_4 VALUES IN (NULL)
18565 (SUBPARTITION sp41, SUBPARTITION sp42));
18566 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18567 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18568 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18569 ALTER TABLE t1 ANALYZE PARTITION ALL;
18570 Table   Op      Msg_type        Msg_text
18571 test.t1 analyze status  OK
18572 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18573 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18574 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18575 # Start usability test (inc/partition_check.inc)
18576 create_command
18577 SHOW CREATE TABLE t1;
18578 Table   Create Table
18579 t1      CREATE TABLE `t1` (
18580   `f_int1` int(11) DEFAULT NULL,
18581   `f_int2` int(11) DEFAULT NULL,
18582   `f_char1` char(20) DEFAULT NULL,
18583   `f_char2` char(20) DEFAULT NULL,
18584   `f_charbig` varchar(1000) DEFAULT NULL
18585 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
18586 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
18587 SUBPARTITION BY HASH (f_int1 + 1)
18588 (PARTITION part_1 VALUES IN (0)
18589  (SUBPARTITION sp11 ENGINE = MyISAM,
18590   SUBPARTITION sp12 ENGINE = MyISAM),
18591  PARTITION part_2 VALUES IN (1)
18592  (SUBPARTITION sp21 ENGINE = MyISAM,
18593   SUBPARTITION sp22 ENGINE = MyISAM),
18594  PARTITION part_3 VALUES IN (2)
18595  (SUBPARTITION sp31 ENGINE = MyISAM,
18596   SUBPARTITION sp32 ENGINE = MyISAM),
18597  PARTITION part_4 VALUES IN (NULL)
18598  (SUBPARTITION sp41 ENGINE = MyISAM,
18599   SUBPARTITION sp42 ENGINE = MyISAM)) */
18601 unified filelist
18602 t1#P#part_1#SP#sp11.MYD
18603 t1#P#part_1#SP#sp11.MYI
18604 t1#P#part_1#SP#sp12.MYD
18605 t1#P#part_1#SP#sp12.MYI
18606 t1#P#part_2#SP#sp21.MYD
18607 t1#P#part_2#SP#sp21.MYI
18608 t1#P#part_2#SP#sp22.MYD
18609 t1#P#part_2#SP#sp22.MYI
18610 t1#P#part_3#SP#sp31.MYD
18611 t1#P#part_3#SP#sp31.MYI
18612 t1#P#part_3#SP#sp32.MYD
18613 t1#P#part_3#SP#sp32.MYI
18614 t1#P#part_4#SP#sp41.MYD
18615 t1#P#part_4#SP#sp41.MYI
18616 t1#P#part_4#SP#sp42.MYD
18617 t1#P#part_4#SP#sp42.MYI
18618 t1.frm
18619 t1.par
18621 # check prerequisites-1 success:    1
18622 # check COUNT(*) success:    1
18623 # check MIN/MAX(f_int1) success:    1
18624 # check MIN/MAX(f_int2) success:    1
18625 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18626 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18627 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18628 WHERE f_int1 IN (2,3);
18629 # check prerequisites-3 success:    1
18630 DELETE FROM t1 WHERE f_charbig = 'delete me';
18631 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
18632 # check read via f_int1 success: 1
18633 # check read via f_int2 success: 1
18634         
18635 # check multiple-1 success:     1
18636 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18637         
18638 # check multiple-2 success:     1
18639 INSERT INTO t1 SELECT * FROM t0_template
18640 WHERE MOD(f_int1,3) = 0;
18641         
18642 # check multiple-3 success:     1
18643 UPDATE t1 SET f_int1 = f_int1 + @max_row
18644 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18645 AND @max_row_div2 + @max_row_div4;
18646         
18647 # check multiple-4 success:     1
18648 DELETE FROM t1
18649 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18650 AND @max_row_div2 + @max_row_div4 + @max_row;
18651         
18652 # check multiple-5 success:     1
18653 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18654 INSERT INTO t1
18655 SET f_int1 = @cur_value , f_int2 = @cur_value,
18656 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18657 f_charbig = '#SINGLE#';
18658         
18659 # check single-1 success:       1
18660 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18661 INSERT INTO t1
18662 SET f_int1 = @cur_value , f_int2 = @cur_value,
18663 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18664 f_charbig = '#SINGLE#';
18665         
18666 # check single-2 success:       1
18667 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18668 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18669 UPDATE t1 SET f_int1 = @cur_value2
18670 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18671         
18672 # check single-3 success:       1
18673 SET @cur_value1= -1;
18674 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18675 UPDATE t1 SET f_int1 = @cur_value1
18676 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18677         
18678 # check single-4 success:       1
18679 SELECT MAX(f_int1) INTO @cur_value FROM t1;
18680 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18681         
18682 # check single-5 success:       1
18683 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18684         
18685 # check single-6 success:       1
18686 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18687         
18688 # check single-7 success:       1
18689 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
18690 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18691 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18692 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18693 f_charbig = '#NULL#';
18694 INSERT INTO t1
18695 SET f_int1 = NULL , f_int2 = -@max_row,
18696 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18697 f_charbig = '#NULL#';
18698 # check null success:    1
18699         
18700 # check null-1 success:         1
18701 UPDATE t1 SET f_int1 = -@max_row
18702 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18703 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18704         
18705 # check null-2 success:         1
18706 UPDATE t1 SET f_int1 = NULL
18707 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18708 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18709         
18710 # check null-3 success:         1
18711 DELETE FROM t1
18712 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18713 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18714         
18715 # check null-4 success:         1
18716 DELETE FROM t1
18717 WHERE f_int1 = 0 AND f_int2 = 0
18718 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18719 AND f_charbig = '#NULL#';
18720 SET AUTOCOMMIT= 0;
18721 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18722 SELECT f_int1, f_int1, '', '', 'was inserted'
18723 FROM t0_template source_tab
18724 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18725         
18726 # check transactions-1 success:         1
18727 COMMIT WORK;
18728         
18729 # check transactions-2 success:         1
18730 ROLLBACK WORK;
18731         
18732 # check transactions-3 success:         1
18733 DELETE FROM t1 WHERE f_charbig = 'was inserted';
18734 COMMIT WORK;
18735 ROLLBACK WORK;
18736         
18737 # check transactions-4 success:         1
18738 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18739 SELECT f_int1, f_int1, '', '', 'was inserted'
18740 FROM t0_template source_tab
18741 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18742         
18743 # check transactions-5 success:         1
18744 ROLLBACK WORK;
18745 Warnings:
18746 Warning 1196    Some non-transactional changed tables couldn't be rolled back
18747         
18748 # check transactions-6 success:         1
18749 # INFO: Storage engine used for t1 seems to be not transactional.
18750 COMMIT;
18751         
18752 # check transactions-7 success:         1
18753 DELETE FROM t1 WHERE f_charbig = 'was inserted';
18754 COMMIT WORK;
18755 SET @@session.sql_mode = 'traditional';
18756 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18757 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18758 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18759 '', '', 'was inserted' FROM t0_template
18760 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18761 ERROR 22012: Division by 0
18762 COMMIT;
18763         
18764 # check transactions-8 success:         1
18765 # INFO: Storage engine used for t1 seems to be unable to revert
18766 #       changes made by the failing statement.
18767 SET @@session.sql_mode = '';
18768 SET AUTOCOMMIT= 1;
18769 DELETE FROM t1 WHERE f_charbig = 'was inserted';
18770 COMMIT WORK;
18771 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18772         
18773 # check special-1 success:      1
18774 UPDATE t1 SET f_charbig = '';
18775         
18776 # check special-2 success:      1
18777 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18778 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18779 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18780 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18781 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18782 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18783 'just inserted' FROM t0_template
18784 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18785 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18786 BEGIN
18787 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18788 f_charbig = 'updated by trigger'
18789       WHERE f_int1 = new.f_int1;
18790 END|
18791 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18792 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18793 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18794         
18795 # check trigger-1 success:      1
18796 DROP TRIGGER trg_1;
18797 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18798 f_int2 = CAST(f_char1 AS SIGNED INT),
18799 f_charbig = 'just inserted'
18800    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18801 DELETE FROM t0_aux
18802 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18803 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18804 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18805 'just inserted' FROM t0_template
18806 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18807 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18808 BEGIN
18809 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18810 f_charbig = 'updated by trigger'
18811       WHERE f_int1 = new.f_int1;
18812 END|
18813 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18814 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18815 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18816         
18817 # check trigger-2 success:      1
18818 DROP TRIGGER trg_1;
18819 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18820 f_int2 = CAST(f_char1 AS SIGNED INT),
18821 f_charbig = 'just inserted'
18822    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18823 DELETE FROM t0_aux
18824 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18825 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18826 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18827 'just inserted' FROM t0_template
18828 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18829 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18830 BEGIN
18831 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18832 f_charbig = 'updated by trigger'
18833       WHERE f_int1 = new.f_int1;
18834 END|
18835 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18836 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18837         
18838 # check trigger-3 success:      1
18839 DROP TRIGGER trg_1;
18840 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18841 f_int2 = CAST(f_char1 AS SIGNED INT),
18842 f_charbig = 'just inserted'
18843    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18844 DELETE FROM t0_aux
18845 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18846 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18847 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18848 'just inserted' FROM t0_template
18849 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18850 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18851 BEGIN
18852 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18853 f_charbig = 'updated by trigger'
18854       WHERE f_int1 = - old.f_int1;
18855 END|
18856 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18857 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18858         
18859 # check trigger-4 success:      1
18860 DROP TRIGGER trg_1;
18861 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18862 f_int2 = CAST(f_char1 AS SIGNED INT),
18863 f_charbig = 'just inserted'
18864    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18865 DELETE FROM t0_aux
18866 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18867 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18868 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18869 'just inserted' FROM t0_template
18870 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18871 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18872 BEGIN
18873 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18874 f_charbig = 'updated by trigger'
18875       WHERE f_int1 = new.f_int1;
18876 END|
18877 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18878 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18879         
18880 # check trigger-5 success:      1
18881 DROP TRIGGER trg_1;
18882 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18883 f_int2 = CAST(f_char1 AS SIGNED INT),
18884 f_charbig = 'just inserted'
18885    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18886 DELETE FROM t0_aux
18887 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18888 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18889 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18890 'just inserted' FROM t0_template
18891 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18892 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18893 BEGIN
18894 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18895 f_charbig = 'updated by trigger'
18896       WHERE f_int1 = - old.f_int1;
18897 END|
18898 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
18899 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18900         
18901 # check trigger-6 success:      1
18902 DROP TRIGGER trg_1;
18903 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18904 f_int2 = CAST(f_char1 AS SIGNED INT),
18905 f_charbig = 'just inserted'
18906    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18907 DELETE FROM t0_aux
18908 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18909 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18910 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18911 'just inserted' FROM t0_template
18912 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18913 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18914 BEGIN
18915 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18916 f_charbig = 'updated by trigger'
18917       WHERE f_int1 = - old.f_int1;
18918 END|
18919 DELETE FROM t0_aux
18920 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18921         
18922 # check trigger-7 success:      1
18923 DROP TRIGGER trg_1;
18924 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18925 f_int2 = CAST(f_char1 AS SIGNED INT),
18926 f_charbig = 'just inserted'
18927    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18928 DELETE FROM t0_aux
18929 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18930 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18931 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18932 'just inserted' FROM t0_template
18933 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18934 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18935 BEGIN
18936 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18937 f_charbig = 'updated by trigger'
18938       WHERE f_int1 = - old.f_int1;
18939 END|
18940 DELETE FROM t0_aux
18941 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18942         
18943 # check trigger-8 success:      1
18944 DROP TRIGGER trg_1;
18945 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18946 f_int2 = CAST(f_char1 AS SIGNED INT),
18947 f_charbig = 'just inserted'
18948    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18949 DELETE FROM t0_aux
18950 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18951 DELETE FROM t1
18952 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18953 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18954 BEGIN
18955 SET new.f_int1 = old.f_int1 + @max_row,
18956 new.f_int2 = old.f_int2 - @max_row,
18957 new.f_charbig = '####updated per update trigger####';
18958 END|
18959 UPDATE t1
18960 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18961 f_charbig = '####updated per update statement itself####';
18962         
18963 # check trigger-9 success:      1
18964 DROP TRIGGER trg_2;
18965 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18966 f_int2 = CAST(f_char1 AS SIGNED INT),
18967 f_charbig = CONCAT('===',f_char1,'===');
18968 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18969 BEGIN
18970 SET new.f_int1 = new.f_int1 + @max_row,
18971 new.f_int2 = new.f_int2 - @max_row,
18972 new.f_charbig = '####updated per update trigger####';
18973 END|
18974 UPDATE t1
18975 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18976 f_charbig = '####updated per update statement itself####';
18977         
18978 # check trigger-10 success:     1
18979 DROP TRIGGER trg_2;
18980 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18981 f_int2 = CAST(f_char1 AS SIGNED INT),
18982 f_charbig = CONCAT('===',f_char1,'===');
18983 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18984 BEGIN
18985 SET new.f_int1 = @my_max1 + @counter,
18986 new.f_int2 = @my_min2 - @counter,
18987 new.f_charbig = '####updated per insert trigger####';
18988 SET @counter = @counter + 1;
18989 END|
18990 SET @counter = 1;
18991 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18992 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18993 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18994 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18995 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18996 ORDER BY f_int1;
18997 DROP TRIGGER trg_3;
18998         
18999 # check trigger-11 success:     1
19000 DELETE FROM t1
19001 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19002 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19003 AND f_charbig = '####updated per insert trigger####';
19004 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19005 BEGIN
19006 SET new.f_int1 = @my_max1 + @counter,
19007 new.f_int2 = @my_min2 - @counter,
19008 new.f_charbig = '####updated per insert trigger####';
19009 SET @counter = @counter + 1;
19010 END|
19011 SET @counter = 1;
19012 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19013 INSERT INTO t1 (f_char1, f_char2, f_charbig)
19014 SELECT CAST(f_int1 AS CHAR),
19015 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19016 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19017 ORDER BY f_int1;
19018 DROP TRIGGER trg_3;
19019         
19020 # check trigger-12 success:     1
19021 DELETE FROM t1
19022 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19023 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19024 AND f_charbig = '####updated per insert trigger####';
19025 ANALYZE  TABLE t1;
19026 Table   Op      Msg_type        Msg_text
19027 test.t1 analyze status  OK
19028 CHECK    TABLE t1 EXTENDED;
19029 Table   Op      Msg_type        Msg_text
19030 test.t1 check   status  OK
19031 CHECKSUM TABLE t1 EXTENDED;
19032 Table   Checksum
19033 test.t1 <some_value>
19034 OPTIMIZE TABLE t1;
19035 Table   Op      Msg_type        Msg_text
19036 test.t1 optimize        status  OK
19037 # check layout success:    1
19038 REPAIR   TABLE t1 EXTENDED;
19039 Table   Op      Msg_type        Msg_text
19040 test.t1 repair  status  OK
19041 # check layout success:    1
19042 TRUNCATE t1;
19043         
19044 # check TRUNCATE success:       1
19045 # check layout success:    1
19046 # End usability test (inc/partition_check.inc)
19047 DROP TABLE t1;
19048 CREATE TABLE t1 (
19049 f_int1 INTEGER,
19050 f_int2 INTEGER,
19051 f_char1 CHAR(20),
19052 f_char2 CHAR(20),
19053 f_charbig VARCHAR(1000)
19056 PARTITION BY LIST(ABS(MOD(f_int1,2)))
19057 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
19058 (PARTITION part_1 VALUES IN (0),
19059  PARTITION part_2 VALUES IN (1),
19060  PARTITION part_3 VALUES IN (NULL));
19061 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19062 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19063 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19064 ALTER TABLE t1 ANALYZE PARTITION ALL;
19065 Table   Op      Msg_type        Msg_text
19066 test.t1 analyze status  OK
19067 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19068 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19069 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19070 # Start usability test (inc/partition_check.inc)
19071 create_command
19072 SHOW CREATE TABLE t1;
19073 Table   Create Table
19074 t1      CREATE TABLE `t1` (
19075   `f_int1` int(11) DEFAULT NULL,
19076   `f_int2` int(11) DEFAULT NULL,
19077   `f_char1` char(20) DEFAULT NULL,
19078   `f_char2` char(20) DEFAULT NULL,
19079   `f_charbig` varchar(1000) DEFAULT NULL
19080 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
19081 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
19082 SUBPARTITION BY KEY (f_int1)
19083 SUBPARTITIONS 3
19084 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
19085  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
19086  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
19088 unified filelist
19089 t1#P#part_1#SP#part_1sp0.MYD
19090 t1#P#part_1#SP#part_1sp0.MYI
19091 t1#P#part_1#SP#part_1sp1.MYD
19092 t1#P#part_1#SP#part_1sp1.MYI
19093 t1#P#part_1#SP#part_1sp2.MYD
19094 t1#P#part_1#SP#part_1sp2.MYI
19095 t1#P#part_2#SP#part_2sp0.MYD
19096 t1#P#part_2#SP#part_2sp0.MYI
19097 t1#P#part_2#SP#part_2sp1.MYD
19098 t1#P#part_2#SP#part_2sp1.MYI
19099 t1#P#part_2#SP#part_2sp2.MYD
19100 t1#P#part_2#SP#part_2sp2.MYI
19101 t1#P#part_3#SP#part_3sp0.MYD
19102 t1#P#part_3#SP#part_3sp0.MYI
19103 t1#P#part_3#SP#part_3sp1.MYD
19104 t1#P#part_3#SP#part_3sp1.MYI
19105 t1#P#part_3#SP#part_3sp2.MYD
19106 t1#P#part_3#SP#part_3sp2.MYI
19107 t1.frm
19108 t1.par
19110 # check prerequisites-1 success:    1
19111 # check COUNT(*) success:    1
19112 # check MIN/MAX(f_int1) success:    1
19113 # check MIN/MAX(f_int2) success:    1
19114 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19115 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19116 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19117 WHERE f_int1 IN (2,3);
19118 # check prerequisites-3 success:    1
19119 DELETE FROM t1 WHERE f_charbig = 'delete me';
19120 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
19121 # check read via f_int1 success: 1
19122 # check read via f_int2 success: 1
19123         
19124 # check multiple-1 success:     1
19125 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19126         
19127 # check multiple-2 success:     1
19128 INSERT INTO t1 SELECT * FROM t0_template
19129 WHERE MOD(f_int1,3) = 0;
19130         
19131 # check multiple-3 success:     1
19132 UPDATE t1 SET f_int1 = f_int1 + @max_row
19133 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19134 AND @max_row_div2 + @max_row_div4;
19135         
19136 # check multiple-4 success:     1
19137 DELETE FROM t1
19138 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19139 AND @max_row_div2 + @max_row_div4 + @max_row;
19140         
19141 # check multiple-5 success:     1
19142 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19143 INSERT INTO t1
19144 SET f_int1 = @cur_value , f_int2 = @cur_value,
19145 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19146 f_charbig = '#SINGLE#';
19147         
19148 # check single-1 success:       1
19149 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19150 INSERT INTO t1
19151 SET f_int1 = @cur_value , f_int2 = @cur_value,
19152 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19153 f_charbig = '#SINGLE#';
19154         
19155 # check single-2 success:       1
19156 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19157 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19158 UPDATE t1 SET f_int1 = @cur_value2
19159 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19160         
19161 # check single-3 success:       1
19162 SET @cur_value1= -1;
19163 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19164 UPDATE t1 SET f_int1 = @cur_value1
19165 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19166         
19167 # check single-4 success:       1
19168 SELECT MAX(f_int1) INTO @cur_value FROM t1;
19169 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19170         
19171 # check single-5 success:       1
19172 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19173         
19174 # check single-6 success:       1
19175 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19176         
19177 # check single-7 success:       1
19178 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19179 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19180 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19181 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19182 f_charbig = '#NULL#';
19183 INSERT INTO t1
19184 SET f_int1 = NULL , f_int2 = -@max_row,
19185 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19186 f_charbig = '#NULL#';
19187 # check null success:    1
19188         
19189 # check null-1 success:         1
19190 UPDATE t1 SET f_int1 = -@max_row
19191 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19192 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19193         
19194 # check null-2 success:         1
19195 UPDATE t1 SET f_int1 = NULL
19196 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19197 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19198         
19199 # check null-3 success:         1
19200 DELETE FROM t1
19201 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19202 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19203         
19204 # check null-4 success:         1
19205 DELETE FROM t1
19206 WHERE f_int1 = 0 AND f_int2 = 0
19207 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19208 AND f_charbig = '#NULL#';
19209 SET AUTOCOMMIT= 0;
19210 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19211 SELECT f_int1, f_int1, '', '', 'was inserted'
19212 FROM t0_template source_tab
19213 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19214         
19215 # check transactions-1 success:         1
19216 COMMIT WORK;
19217         
19218 # check transactions-2 success:         1
19219 ROLLBACK WORK;
19220         
19221 # check transactions-3 success:         1
19222 DELETE FROM t1 WHERE f_charbig = 'was inserted';
19223 COMMIT WORK;
19224 ROLLBACK WORK;
19225         
19226 # check transactions-4 success:         1
19227 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19228 SELECT f_int1, f_int1, '', '', 'was inserted'
19229 FROM t0_template source_tab
19230 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19231         
19232 # check transactions-5 success:         1
19233 ROLLBACK WORK;
19234 Warnings:
19235 Warning 1196    Some non-transactional changed tables couldn't be rolled back
19236         
19237 # check transactions-6 success:         1
19238 # INFO: Storage engine used for t1 seems to be not transactional.
19239 COMMIT;
19240         
19241 # check transactions-7 success:         1
19242 DELETE FROM t1 WHERE f_charbig = 'was inserted';
19243 COMMIT WORK;
19244 SET @@session.sql_mode = 'traditional';
19245 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19246 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19247 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19248 '', '', 'was inserted' FROM t0_template
19249 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19250 ERROR 22012: Division by 0
19251 COMMIT;
19252         
19253 # check transactions-8 success:         1
19254 # INFO: Storage engine used for t1 seems to be unable to revert
19255 #       changes made by the failing statement.
19256 SET @@session.sql_mode = '';
19257 SET AUTOCOMMIT= 1;
19258 DELETE FROM t1 WHERE f_charbig = 'was inserted';
19259 COMMIT WORK;
19260 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19261         
19262 # check special-1 success:      1
19263 UPDATE t1 SET f_charbig = '';
19264         
19265 # check special-2 success:      1
19266 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19267 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19268 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19269 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19270 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19271 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19272 'just inserted' FROM t0_template
19273 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19274 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19275 BEGIN
19276 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19277 f_charbig = 'updated by trigger'
19278       WHERE f_int1 = new.f_int1;
19279 END|
19280 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19281 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19282 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19283         
19284 # check trigger-1 success:      1
19285 DROP TRIGGER trg_1;
19286 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19287 f_int2 = CAST(f_char1 AS SIGNED INT),
19288 f_charbig = 'just inserted'
19289    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19290 DELETE FROM t0_aux
19291 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19292 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19293 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19294 'just inserted' FROM t0_template
19295 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19296 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19297 BEGIN
19298 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19299 f_charbig = 'updated by trigger'
19300       WHERE f_int1 = new.f_int1;
19301 END|
19302 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19303 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19304 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19305         
19306 # check trigger-2 success:      1
19307 DROP TRIGGER trg_1;
19308 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19309 f_int2 = CAST(f_char1 AS SIGNED INT),
19310 f_charbig = 'just inserted'
19311    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19312 DELETE FROM t0_aux
19313 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19314 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19315 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19316 'just inserted' FROM t0_template
19317 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19318 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19319 BEGIN
19320 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19321 f_charbig = 'updated by trigger'
19322       WHERE f_int1 = new.f_int1;
19323 END|
19324 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19325 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19326         
19327 # check trigger-3 success:      1
19328 DROP TRIGGER trg_1;
19329 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19330 f_int2 = CAST(f_char1 AS SIGNED INT),
19331 f_charbig = 'just inserted'
19332    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19333 DELETE FROM t0_aux
19334 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19335 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19336 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19337 'just inserted' FROM t0_template
19338 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19339 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19340 BEGIN
19341 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19342 f_charbig = 'updated by trigger'
19343       WHERE f_int1 = - old.f_int1;
19344 END|
19345 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19346 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19347         
19348 # check trigger-4 success:      1
19349 DROP TRIGGER trg_1;
19350 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19351 f_int2 = CAST(f_char1 AS SIGNED INT),
19352 f_charbig = 'just inserted'
19353    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19354 DELETE FROM t0_aux
19355 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19356 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19357 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19358 'just inserted' FROM t0_template
19359 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19360 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19361 BEGIN
19362 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19363 f_charbig = 'updated by trigger'
19364       WHERE f_int1 = new.f_int1;
19365 END|
19366 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19367 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19368         
19369 # check trigger-5 success:      1
19370 DROP TRIGGER trg_1;
19371 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19372 f_int2 = CAST(f_char1 AS SIGNED INT),
19373 f_charbig = 'just inserted'
19374    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19375 DELETE FROM t0_aux
19376 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19377 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19378 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19379 'just inserted' FROM t0_template
19380 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19381 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19382 BEGIN
19383 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19384 f_charbig = 'updated by trigger'
19385       WHERE f_int1 = - old.f_int1;
19386 END|
19387 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19388 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19389         
19390 # check trigger-6 success:      1
19391 DROP TRIGGER trg_1;
19392 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19393 f_int2 = CAST(f_char1 AS SIGNED INT),
19394 f_charbig = 'just inserted'
19395    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19396 DELETE FROM t0_aux
19397 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19398 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19399 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19400 'just inserted' FROM t0_template
19401 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19402 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19403 BEGIN
19404 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19405 f_charbig = 'updated by trigger'
19406       WHERE f_int1 = - old.f_int1;
19407 END|
19408 DELETE FROM t0_aux
19409 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19410         
19411 # check trigger-7 success:      1
19412 DROP TRIGGER trg_1;
19413 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19414 f_int2 = CAST(f_char1 AS SIGNED INT),
19415 f_charbig = 'just inserted'
19416    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19417 DELETE FROM t0_aux
19418 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19419 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19420 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19421 'just inserted' FROM t0_template
19422 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19423 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19424 BEGIN
19425 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19426 f_charbig = 'updated by trigger'
19427       WHERE f_int1 = - old.f_int1;
19428 END|
19429 DELETE FROM t0_aux
19430 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19431         
19432 # check trigger-8 success:      1
19433 DROP TRIGGER trg_1;
19434 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19435 f_int2 = CAST(f_char1 AS SIGNED INT),
19436 f_charbig = 'just inserted'
19437    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19438 DELETE FROM t0_aux
19439 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19440 DELETE FROM t1
19441 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19442 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19443 BEGIN
19444 SET new.f_int1 = old.f_int1 + @max_row,
19445 new.f_int2 = old.f_int2 - @max_row,
19446 new.f_charbig = '####updated per update trigger####';
19447 END|
19448 UPDATE t1
19449 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19450 f_charbig = '####updated per update statement itself####';
19451         
19452 # check trigger-9 success:      1
19453 DROP TRIGGER trg_2;
19454 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19455 f_int2 = CAST(f_char1 AS SIGNED INT),
19456 f_charbig = CONCAT('===',f_char1,'===');
19457 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19458 BEGIN
19459 SET new.f_int1 = new.f_int1 + @max_row,
19460 new.f_int2 = new.f_int2 - @max_row,
19461 new.f_charbig = '####updated per update trigger####';
19462 END|
19463 UPDATE t1
19464 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19465 f_charbig = '####updated per update statement itself####';
19466         
19467 # check trigger-10 success:     1
19468 DROP TRIGGER trg_2;
19469 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19470 f_int2 = CAST(f_char1 AS SIGNED INT),
19471 f_charbig = CONCAT('===',f_char1,'===');
19472 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19473 BEGIN
19474 SET new.f_int1 = @my_max1 + @counter,
19475 new.f_int2 = @my_min2 - @counter,
19476 new.f_charbig = '####updated per insert trigger####';
19477 SET @counter = @counter + 1;
19478 END|
19479 SET @counter = 1;
19480 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19481 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19482 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19483 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19484 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19485 ORDER BY f_int1;
19486 DROP TRIGGER trg_3;
19487         
19488 # check trigger-11 success:     1
19489 DELETE FROM t1
19490 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19491 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19492 AND f_charbig = '####updated per insert trigger####';
19493 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19494 BEGIN
19495 SET new.f_int1 = @my_max1 + @counter,
19496 new.f_int2 = @my_min2 - @counter,
19497 new.f_charbig = '####updated per insert trigger####';
19498 SET @counter = @counter + 1;
19499 END|
19500 SET @counter = 1;
19501 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19502 INSERT INTO t1 (f_char1, f_char2, f_charbig)
19503 SELECT CAST(f_int1 AS CHAR),
19504 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19505 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19506 ORDER BY f_int1;
19507 DROP TRIGGER trg_3;
19508         
19509 # check trigger-12 success:     1
19510 DELETE FROM t1
19511 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19512 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19513 AND f_charbig = '####updated per insert trigger####';
19514 ANALYZE  TABLE t1;
19515 Table   Op      Msg_type        Msg_text
19516 test.t1 analyze status  OK
19517 CHECK    TABLE t1 EXTENDED;
19518 Table   Op      Msg_type        Msg_text
19519 test.t1 check   status  OK
19520 CHECKSUM TABLE t1 EXTENDED;
19521 Table   Checksum
19522 test.t1 <some_value>
19523 OPTIMIZE TABLE t1;
19524 Table   Op      Msg_type        Msg_text
19525 test.t1 optimize        status  OK
19526 # check layout success:    1
19527 REPAIR   TABLE t1 EXTENDED;
19528 Table   Op      Msg_type        Msg_text
19529 test.t1 repair  status  OK
19530 # check layout success:    1
19531 TRUNCATE t1;
19532         
19533 # check TRUNCATE success:       1
19534 # check layout success:    1
19535 # End usability test (inc/partition_check.inc)
19536 DROP TABLE t1;
19537 #------------------------------------------------------------------------
19538 #  2   ALTER ... CHECK PARTITION
19539 #------------------------------------------------------------------------
19540 #  2.1 ALTER ... CHECK PARTITION part_1;
19541 DROP TABLE IF EXISTS t1;
19542 CREATE TABLE t1 (
19543 f_int1 INTEGER,
19544 f_int2 INTEGER,
19545 f_char1 CHAR(20),
19546 f_char2 CHAR(20),
19547 f_charbig VARCHAR(1000)
19550 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
19551 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19552 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19553 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19554 ALTER TABLE t1 CHECK PARTITION part_1;
19555 Table   Op      Msg_type        Msg_text
19556 test.t1 check   status  OK
19557 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19558 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19559 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19560 # Start usability test (inc/partition_check.inc)
19561 create_command
19562 SHOW CREATE TABLE t1;
19563 Table   Create Table
19564 t1      CREATE TABLE `t1` (
19565   `f_int1` int(11) DEFAULT NULL,
19566   `f_int2` int(11) DEFAULT NULL,
19567   `f_char1` char(20) DEFAULT NULL,
19568   `f_char2` char(20) DEFAULT NULL,
19569   `f_charbig` varchar(1000) DEFAULT NULL
19570 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
19571 /*!50100 PARTITION BY HASH (f_int1)
19572 (PARTITION part_1 ENGINE = MyISAM,
19573  PARTITION part_2 ENGINE = MyISAM) */
19575 unified filelist
19576 t1#P#part_1.MYD
19577 t1#P#part_1.MYI
19578 t1#P#part_2.MYD
19579 t1#P#part_2.MYI
19580 t1.frm
19581 t1.par
19583 # check prerequisites-1 success:    1
19584 # check COUNT(*) success:    1
19585 # check MIN/MAX(f_int1) success:    1
19586 # check MIN/MAX(f_int2) success:    1
19587 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19588 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19589 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19590 WHERE f_int1 IN (2,3);
19591 # check prerequisites-3 success:    1
19592 DELETE FROM t1 WHERE f_charbig = 'delete me';
19593 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
19594 # check read via f_int1 success: 1
19595 # check read via f_int2 success: 1
19596         
19597 # check multiple-1 success:     1
19598 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19599         
19600 # check multiple-2 success:     1
19601 INSERT INTO t1 SELECT * FROM t0_template
19602 WHERE MOD(f_int1,3) = 0;
19603         
19604 # check multiple-3 success:     1
19605 UPDATE t1 SET f_int1 = f_int1 + @max_row
19606 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19607 AND @max_row_div2 + @max_row_div4;
19608         
19609 # check multiple-4 success:     1
19610 DELETE FROM t1
19611 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19612 AND @max_row_div2 + @max_row_div4 + @max_row;
19613         
19614 # check multiple-5 success:     1
19615 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19616 INSERT INTO t1
19617 SET f_int1 = @cur_value , f_int2 = @cur_value,
19618 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19619 f_charbig = '#SINGLE#';
19620         
19621 # check single-1 success:       1
19622 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19623 INSERT INTO t1
19624 SET f_int1 = @cur_value , f_int2 = @cur_value,
19625 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19626 f_charbig = '#SINGLE#';
19627         
19628 # check single-2 success:       1
19629 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19630 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19631 UPDATE t1 SET f_int1 = @cur_value2
19632 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19633         
19634 # check single-3 success:       1
19635 SET @cur_value1= -1;
19636 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19637 UPDATE t1 SET f_int1 = @cur_value1
19638 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19639         
19640 # check single-4 success:       1
19641 SELECT MAX(f_int1) INTO @cur_value FROM t1;
19642 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19643         
19644 # check single-5 success:       1
19645 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19646         
19647 # check single-6 success:       1
19648 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19649         
19650 # check single-7 success:       1
19651 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19652 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19653 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19654 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19655 f_charbig = '#NULL#';
19656 INSERT INTO t1
19657 SET f_int1 = NULL , f_int2 = -@max_row,
19658 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19659 f_charbig = '#NULL#';
19660 # check null success:    1
19661         
19662 # check null-1 success:         1
19663 UPDATE t1 SET f_int1 = -@max_row
19664 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19665 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19666         
19667 # check null-2 success:         1
19668 UPDATE t1 SET f_int1 = NULL
19669 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19670 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19671         
19672 # check null-3 success:         1
19673 DELETE FROM t1
19674 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19675 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19676         
19677 # check null-4 success:         1
19678 DELETE FROM t1
19679 WHERE f_int1 = 0 AND f_int2 = 0
19680 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19681 AND f_charbig = '#NULL#';
19682 SET AUTOCOMMIT= 0;
19683 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19684 SELECT f_int1, f_int1, '', '', 'was inserted'
19685 FROM t0_template source_tab
19686 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19687         
19688 # check transactions-1 success:         1
19689 COMMIT WORK;
19690         
19691 # check transactions-2 success:         1
19692 ROLLBACK WORK;
19693         
19694 # check transactions-3 success:         1
19695 DELETE FROM t1 WHERE f_charbig = 'was inserted';
19696 COMMIT WORK;
19697 ROLLBACK WORK;
19698         
19699 # check transactions-4 success:         1
19700 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19701 SELECT f_int1, f_int1, '', '', 'was inserted'
19702 FROM t0_template source_tab
19703 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19704         
19705 # check transactions-5 success:         1
19706 ROLLBACK WORK;
19707 Warnings:
19708 Warning 1196    Some non-transactional changed tables couldn't be rolled back
19709         
19710 # check transactions-6 success:         1
19711 # INFO: Storage engine used for t1 seems to be not transactional.
19712 COMMIT;
19713         
19714 # check transactions-7 success:         1
19715 DELETE FROM t1 WHERE f_charbig = 'was inserted';
19716 COMMIT WORK;
19717 SET @@session.sql_mode = 'traditional';
19718 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19719 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19720 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19721 '', '', 'was inserted' FROM t0_template
19722 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19723 ERROR 22012: Division by 0
19724 COMMIT;
19725         
19726 # check transactions-8 success:         1
19727 # INFO: Storage engine used for t1 seems to be unable to revert
19728 #       changes made by the failing statement.
19729 SET @@session.sql_mode = '';
19730 SET AUTOCOMMIT= 1;
19731 DELETE FROM t1 WHERE f_charbig = 'was inserted';
19732 COMMIT WORK;
19733 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19734         
19735 # check special-1 success:      1
19736 UPDATE t1 SET f_charbig = '';
19737         
19738 # check special-2 success:      1
19739 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19740 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19741 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19742 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19743 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19744 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19745 'just inserted' FROM t0_template
19746 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19747 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19748 BEGIN
19749 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19750 f_charbig = 'updated by trigger'
19751       WHERE f_int1 = new.f_int1;
19752 END|
19753 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19754 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19755 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19756         
19757 # check trigger-1 success:      1
19758 DROP TRIGGER trg_1;
19759 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19760 f_int2 = CAST(f_char1 AS SIGNED INT),
19761 f_charbig = 'just inserted'
19762    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19763 DELETE FROM t0_aux
19764 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19765 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19766 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19767 'just inserted' FROM t0_template
19768 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19769 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19770 BEGIN
19771 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19772 f_charbig = 'updated by trigger'
19773       WHERE f_int1 = new.f_int1;
19774 END|
19775 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19776 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19777 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19778         
19779 # check trigger-2 success:      1
19780 DROP TRIGGER trg_1;
19781 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19782 f_int2 = CAST(f_char1 AS SIGNED INT),
19783 f_charbig = 'just inserted'
19784    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19785 DELETE FROM t0_aux
19786 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19787 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19788 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19789 'just inserted' FROM t0_template
19790 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19791 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19792 BEGIN
19793 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19794 f_charbig = 'updated by trigger'
19795       WHERE f_int1 = new.f_int1;
19796 END|
19797 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19798 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19799         
19800 # check trigger-3 success:      1
19801 DROP TRIGGER trg_1;
19802 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19803 f_int2 = CAST(f_char1 AS SIGNED INT),
19804 f_charbig = 'just inserted'
19805    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19806 DELETE FROM t0_aux
19807 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19808 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19809 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19810 'just inserted' FROM t0_template
19811 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19812 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19813 BEGIN
19814 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19815 f_charbig = 'updated by trigger'
19816       WHERE f_int1 = - old.f_int1;
19817 END|
19818 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19819 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19820         
19821 # check trigger-4 success:      1
19822 DROP TRIGGER trg_1;
19823 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19824 f_int2 = CAST(f_char1 AS SIGNED INT),
19825 f_charbig = 'just inserted'
19826    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19827 DELETE FROM t0_aux
19828 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19829 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19830 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19831 'just inserted' FROM t0_template
19832 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19833 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19834 BEGIN
19835 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19836 f_charbig = 'updated by trigger'
19837       WHERE f_int1 = new.f_int1;
19838 END|
19839 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19840 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19841         
19842 # check trigger-5 success:      1
19843 DROP TRIGGER trg_1;
19844 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19845 f_int2 = CAST(f_char1 AS SIGNED INT),
19846 f_charbig = 'just inserted'
19847    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19848 DELETE FROM t0_aux
19849 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19850 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19851 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19852 'just inserted' FROM t0_template
19853 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19854 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19855 BEGIN
19856 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19857 f_charbig = 'updated by trigger'
19858       WHERE f_int1 = - old.f_int1;
19859 END|
19860 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
19861 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19862         
19863 # check trigger-6 success:      1
19864 DROP TRIGGER trg_1;
19865 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19866 f_int2 = CAST(f_char1 AS SIGNED INT),
19867 f_charbig = 'just inserted'
19868    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19869 DELETE FROM t0_aux
19870 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19871 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19872 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19873 'just inserted' FROM t0_template
19874 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19875 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19876 BEGIN
19877 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19878 f_charbig = 'updated by trigger'
19879       WHERE f_int1 = - old.f_int1;
19880 END|
19881 DELETE FROM t0_aux
19882 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19883         
19884 # check trigger-7 success:      1
19885 DROP TRIGGER trg_1;
19886 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19887 f_int2 = CAST(f_char1 AS SIGNED INT),
19888 f_charbig = 'just inserted'
19889    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19890 DELETE FROM t0_aux
19891 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19892 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19893 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19894 'just inserted' FROM t0_template
19895 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19896 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19897 BEGIN
19898 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19899 f_charbig = 'updated by trigger'
19900       WHERE f_int1 = - old.f_int1;
19901 END|
19902 DELETE FROM t0_aux
19903 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19904         
19905 # check trigger-8 success:      1
19906 DROP TRIGGER trg_1;
19907 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19908 f_int2 = CAST(f_char1 AS SIGNED INT),
19909 f_charbig = 'just inserted'
19910    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19911 DELETE FROM t0_aux
19912 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19913 DELETE FROM t1
19914 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19915 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19916 BEGIN
19917 SET new.f_int1 = old.f_int1 + @max_row,
19918 new.f_int2 = old.f_int2 - @max_row,
19919 new.f_charbig = '####updated per update trigger####';
19920 END|
19921 UPDATE t1
19922 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19923 f_charbig = '####updated per update statement itself####';
19924         
19925 # check trigger-9 success:      1
19926 DROP TRIGGER trg_2;
19927 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19928 f_int2 = CAST(f_char1 AS SIGNED INT),
19929 f_charbig = CONCAT('===',f_char1,'===');
19930 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19931 BEGIN
19932 SET new.f_int1 = new.f_int1 + @max_row,
19933 new.f_int2 = new.f_int2 - @max_row,
19934 new.f_charbig = '####updated per update trigger####';
19935 END|
19936 UPDATE t1
19937 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19938 f_charbig = '####updated per update statement itself####';
19939         
19940 # check trigger-10 success:     1
19941 DROP TRIGGER trg_2;
19942 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19943 f_int2 = CAST(f_char1 AS SIGNED INT),
19944 f_charbig = CONCAT('===',f_char1,'===');
19945 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19946 BEGIN
19947 SET new.f_int1 = @my_max1 + @counter,
19948 new.f_int2 = @my_min2 - @counter,
19949 new.f_charbig = '####updated per insert trigger####';
19950 SET @counter = @counter + 1;
19951 END|
19952 SET @counter = 1;
19953 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19954 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19955 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19956 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19957 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19958 ORDER BY f_int1;
19959 DROP TRIGGER trg_3;
19960         
19961 # check trigger-11 success:     1
19962 DELETE FROM t1
19963 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19964 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19965 AND f_charbig = '####updated per insert trigger####';
19966 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19967 BEGIN
19968 SET new.f_int1 = @my_max1 + @counter,
19969 new.f_int2 = @my_min2 - @counter,
19970 new.f_charbig = '####updated per insert trigger####';
19971 SET @counter = @counter + 1;
19972 END|
19973 SET @counter = 1;
19974 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19975 INSERT INTO t1 (f_char1, f_char2, f_charbig)
19976 SELECT CAST(f_int1 AS CHAR),
19977 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19978 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19979 ORDER BY f_int1;
19980 DROP TRIGGER trg_3;
19981         
19982 # check trigger-12 success:     1
19983 DELETE FROM t1
19984 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19985 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19986 AND f_charbig = '####updated per insert trigger####';
19987 ANALYZE  TABLE t1;
19988 Table   Op      Msg_type        Msg_text
19989 test.t1 analyze status  OK
19990 CHECK    TABLE t1 EXTENDED;
19991 Table   Op      Msg_type        Msg_text
19992 test.t1 check   status  OK
19993 CHECKSUM TABLE t1 EXTENDED;
19994 Table   Checksum
19995 test.t1 <some_value>
19996 OPTIMIZE TABLE t1;
19997 Table   Op      Msg_type        Msg_text
19998 test.t1 optimize        status  OK
19999 # check layout success:    1
20000 REPAIR   TABLE t1 EXTENDED;
20001 Table   Op      Msg_type        Msg_text
20002 test.t1 repair  status  OK
20003 # check layout success:    1
20004 TRUNCATE t1;
20005         
20006 # check TRUNCATE success:       1
20007 # check layout success:    1
20008 # End usability test (inc/partition_check.inc)
20009 DROP TABLE t1;
20010 CREATE TABLE t1 (
20011 f_int1 INTEGER,
20012 f_int2 INTEGER,
20013 f_char1 CHAR(20),
20014 f_char2 CHAR(20),
20015 f_charbig VARCHAR(1000)
20018 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
20019 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20020 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20021 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20022 ALTER TABLE t1 CHECK PARTITION part_1;
20023 Table   Op      Msg_type        Msg_text
20024 test.t1 check   status  OK
20025 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20026 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20027 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20028 # Start usability test (inc/partition_check.inc)
20029 create_command
20030 SHOW CREATE TABLE t1;
20031 Table   Create Table
20032 t1      CREATE TABLE `t1` (
20033   `f_int1` int(11) DEFAULT NULL,
20034   `f_int2` int(11) DEFAULT NULL,
20035   `f_char1` char(20) DEFAULT NULL,
20036   `f_char2` char(20) DEFAULT NULL,
20037   `f_charbig` varchar(1000) DEFAULT NULL
20038 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
20039 /*!50100 PARTITION BY KEY (f_int1)
20040 (PARTITION part_1 ENGINE = MyISAM,
20041  PARTITION part_2 ENGINE = MyISAM,
20042  PARTITION part_3 ENGINE = MyISAM,
20043  PARTITION part_4 ENGINE = MyISAM,
20044  PARTITION part_5 ENGINE = MyISAM) */
20046 unified filelist
20047 t1#P#part_1.MYD
20048 t1#P#part_1.MYI
20049 t1#P#part_2.MYD
20050 t1#P#part_2.MYI
20051 t1#P#part_3.MYD
20052 t1#P#part_3.MYI
20053 t1#P#part_4.MYD
20054 t1#P#part_4.MYI
20055 t1#P#part_5.MYD
20056 t1#P#part_5.MYI
20057 t1.frm
20058 t1.par
20060 # check prerequisites-1 success:    1
20061 # check COUNT(*) success:    1
20062 # check MIN/MAX(f_int1) success:    1
20063 # check MIN/MAX(f_int2) success:    1
20064 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20065 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20066 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20067 WHERE f_int1 IN (2,3);
20068 # check prerequisites-3 success:    1
20069 DELETE FROM t1 WHERE f_charbig = 'delete me';
20070 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
20071 # check read via f_int1 success: 1
20072 # check read via f_int2 success: 1
20073         
20074 # check multiple-1 success:     1
20075 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20076         
20077 # check multiple-2 success:     1
20078 INSERT INTO t1 SELECT * FROM t0_template
20079 WHERE MOD(f_int1,3) = 0;
20080         
20081 # check multiple-3 success:     1
20082 UPDATE t1 SET f_int1 = f_int1 + @max_row
20083 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20084 AND @max_row_div2 + @max_row_div4;
20085         
20086 # check multiple-4 success:     1
20087 DELETE FROM t1
20088 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20089 AND @max_row_div2 + @max_row_div4 + @max_row;
20090         
20091 # check multiple-5 success:     1
20092 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20093 INSERT INTO t1
20094 SET f_int1 = @cur_value , f_int2 = @cur_value,
20095 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20096 f_charbig = '#SINGLE#';
20097         
20098 # check single-1 success:       1
20099 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20100 INSERT INTO t1
20101 SET f_int1 = @cur_value , f_int2 = @cur_value,
20102 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20103 f_charbig = '#SINGLE#';
20104         
20105 # check single-2 success:       1
20106 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20107 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20108 UPDATE t1 SET f_int1 = @cur_value2
20109 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20110         
20111 # check single-3 success:       1
20112 SET @cur_value1= -1;
20113 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20114 UPDATE t1 SET f_int1 = @cur_value1
20115 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20116         
20117 # check single-4 success:       1
20118 SELECT MAX(f_int1) INTO @cur_value FROM t1;
20119 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20120         
20121 # check single-5 success:       1
20122 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20123         
20124 # check single-6 success:       1
20125 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20126         
20127 # check single-7 success:       1
20128 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
20129 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20130 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20131 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20132 f_charbig = '#NULL#';
20133 INSERT INTO t1
20134 SET f_int1 = NULL , f_int2 = -@max_row,
20135 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20136 f_charbig = '#NULL#';
20137 # check null success:    1
20138         
20139 # check null-1 success:         1
20140 UPDATE t1 SET f_int1 = -@max_row
20141 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20142 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20143         
20144 # check null-2 success:         1
20145 UPDATE t1 SET f_int1 = NULL
20146 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20147 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20148         
20149 # check null-3 success:         1
20150 DELETE FROM t1
20151 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20152 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20153         
20154 # check null-4 success:         1
20155 DELETE FROM t1
20156 WHERE f_int1 = 0 AND f_int2 = 0
20157 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20158 AND f_charbig = '#NULL#';
20159 SET AUTOCOMMIT= 0;
20160 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20161 SELECT f_int1, f_int1, '', '', 'was inserted'
20162 FROM t0_template source_tab
20163 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20164         
20165 # check transactions-1 success:         1
20166 COMMIT WORK;
20167         
20168 # check transactions-2 success:         1
20169 ROLLBACK WORK;
20170         
20171 # check transactions-3 success:         1
20172 DELETE FROM t1 WHERE f_charbig = 'was inserted';
20173 COMMIT WORK;
20174 ROLLBACK WORK;
20175         
20176 # check transactions-4 success:         1
20177 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20178 SELECT f_int1, f_int1, '', '', 'was inserted'
20179 FROM t0_template source_tab
20180 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20181         
20182 # check transactions-5 success:         1
20183 ROLLBACK WORK;
20184 Warnings:
20185 Warning 1196    Some non-transactional changed tables couldn't be rolled back
20186         
20187 # check transactions-6 success:         1
20188 # INFO: Storage engine used for t1 seems to be not transactional.
20189 COMMIT;
20190         
20191 # check transactions-7 success:         1
20192 DELETE FROM t1 WHERE f_charbig = 'was inserted';
20193 COMMIT WORK;
20194 SET @@session.sql_mode = 'traditional';
20195 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20196 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20197 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20198 '', '', 'was inserted' FROM t0_template
20199 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20200 ERROR 22012: Division by 0
20201 COMMIT;
20202         
20203 # check transactions-8 success:         1
20204 # INFO: Storage engine used for t1 seems to be unable to revert
20205 #       changes made by the failing statement.
20206 SET @@session.sql_mode = '';
20207 SET AUTOCOMMIT= 1;
20208 DELETE FROM t1 WHERE f_charbig = 'was inserted';
20209 COMMIT WORK;
20210 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20211         
20212 # check special-1 success:      1
20213 UPDATE t1 SET f_charbig = '';
20214         
20215 # check special-2 success:      1
20216 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20217 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20218 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20219 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20220 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20221 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20222 'just inserted' FROM t0_template
20223 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20224 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20225 BEGIN
20226 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20227 f_charbig = 'updated by trigger'
20228       WHERE f_int1 = new.f_int1;
20229 END|
20230 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20231 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20232 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20233         
20234 # check trigger-1 success:      1
20235 DROP TRIGGER trg_1;
20236 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20237 f_int2 = CAST(f_char1 AS SIGNED INT),
20238 f_charbig = 'just inserted'
20239    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20240 DELETE FROM t0_aux
20241 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20242 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20243 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20244 'just inserted' FROM t0_template
20245 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20246 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20247 BEGIN
20248 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20249 f_charbig = 'updated by trigger'
20250       WHERE f_int1 = new.f_int1;
20251 END|
20252 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20253 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20254 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20255         
20256 # check trigger-2 success:      1
20257 DROP TRIGGER trg_1;
20258 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20259 f_int2 = CAST(f_char1 AS SIGNED INT),
20260 f_charbig = 'just inserted'
20261    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20262 DELETE FROM t0_aux
20263 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20264 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20265 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20266 'just inserted' FROM t0_template
20267 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20268 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20269 BEGIN
20270 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20271 f_charbig = 'updated by trigger'
20272       WHERE f_int1 = new.f_int1;
20273 END|
20274 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20275 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20276         
20277 # check trigger-3 success:      1
20278 DROP TRIGGER trg_1;
20279 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20280 f_int2 = CAST(f_char1 AS SIGNED INT),
20281 f_charbig = 'just inserted'
20282    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20283 DELETE FROM t0_aux
20284 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20285 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20286 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20287 'just inserted' FROM t0_template
20288 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20289 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20290 BEGIN
20291 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20292 f_charbig = 'updated by trigger'
20293       WHERE f_int1 = - old.f_int1;
20294 END|
20295 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20296 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20297         
20298 # check trigger-4 success:      1
20299 DROP TRIGGER trg_1;
20300 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20301 f_int2 = CAST(f_char1 AS SIGNED INT),
20302 f_charbig = 'just inserted'
20303    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20304 DELETE FROM t0_aux
20305 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20306 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20307 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20308 'just inserted' FROM t0_template
20309 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20310 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20311 BEGIN
20312 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20313 f_charbig = 'updated by trigger'
20314       WHERE f_int1 = new.f_int1;
20315 END|
20316 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20317 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20318         
20319 # check trigger-5 success:      1
20320 DROP TRIGGER trg_1;
20321 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20322 f_int2 = CAST(f_char1 AS SIGNED INT),
20323 f_charbig = 'just inserted'
20324    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20325 DELETE FROM t0_aux
20326 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20327 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20328 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20329 'just inserted' FROM t0_template
20330 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20331 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20332 BEGIN
20333 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20334 f_charbig = 'updated by trigger'
20335       WHERE f_int1 = - old.f_int1;
20336 END|
20337 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20338 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20339         
20340 # check trigger-6 success:      1
20341 DROP TRIGGER trg_1;
20342 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20343 f_int2 = CAST(f_char1 AS SIGNED INT),
20344 f_charbig = 'just inserted'
20345    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20346 DELETE FROM t0_aux
20347 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20348 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20349 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20350 'just inserted' FROM t0_template
20351 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20352 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20353 BEGIN
20354 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20355 f_charbig = 'updated by trigger'
20356       WHERE f_int1 = - old.f_int1;
20357 END|
20358 DELETE FROM t0_aux
20359 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20360         
20361 # check trigger-7 success:      1
20362 DROP TRIGGER trg_1;
20363 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20364 f_int2 = CAST(f_char1 AS SIGNED INT),
20365 f_charbig = 'just inserted'
20366    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20367 DELETE FROM t0_aux
20368 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20369 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20370 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20371 'just inserted' FROM t0_template
20372 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20373 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20374 BEGIN
20375 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20376 f_charbig = 'updated by trigger'
20377       WHERE f_int1 = - old.f_int1;
20378 END|
20379 DELETE FROM t0_aux
20380 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20381         
20382 # check trigger-8 success:      1
20383 DROP TRIGGER trg_1;
20384 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20385 f_int2 = CAST(f_char1 AS SIGNED INT),
20386 f_charbig = 'just inserted'
20387    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20388 DELETE FROM t0_aux
20389 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20390 DELETE FROM t1
20391 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20392 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20393 BEGIN
20394 SET new.f_int1 = old.f_int1 + @max_row,
20395 new.f_int2 = old.f_int2 - @max_row,
20396 new.f_charbig = '####updated per update trigger####';
20397 END|
20398 UPDATE t1
20399 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20400 f_charbig = '####updated per update statement itself####';
20401         
20402 # check trigger-9 success:      1
20403 DROP TRIGGER trg_2;
20404 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20405 f_int2 = CAST(f_char1 AS SIGNED INT),
20406 f_charbig = CONCAT('===',f_char1,'===');
20407 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20408 BEGIN
20409 SET new.f_int1 = new.f_int1 + @max_row,
20410 new.f_int2 = new.f_int2 - @max_row,
20411 new.f_charbig = '####updated per update trigger####';
20412 END|
20413 UPDATE t1
20414 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20415 f_charbig = '####updated per update statement itself####';
20416         
20417 # check trigger-10 success:     1
20418 DROP TRIGGER trg_2;
20419 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20420 f_int2 = CAST(f_char1 AS SIGNED INT),
20421 f_charbig = CONCAT('===',f_char1,'===');
20422 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20423 BEGIN
20424 SET new.f_int1 = @my_max1 + @counter,
20425 new.f_int2 = @my_min2 - @counter,
20426 new.f_charbig = '####updated per insert trigger####';
20427 SET @counter = @counter + 1;
20428 END|
20429 SET @counter = 1;
20430 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20431 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20432 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20433 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20434 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20435 ORDER BY f_int1;
20436 DROP TRIGGER trg_3;
20437         
20438 # check trigger-11 success:     1
20439 DELETE FROM t1
20440 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20441 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20442 AND f_charbig = '####updated per insert trigger####';
20443 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20444 BEGIN
20445 SET new.f_int1 = @my_max1 + @counter,
20446 new.f_int2 = @my_min2 - @counter,
20447 new.f_charbig = '####updated per insert trigger####';
20448 SET @counter = @counter + 1;
20449 END|
20450 SET @counter = 1;
20451 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20452 INSERT INTO t1 (f_char1, f_char2, f_charbig)
20453 SELECT CAST(f_int1 AS CHAR),
20454 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20455 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20456 ORDER BY f_int1;
20457 DROP TRIGGER trg_3;
20458         
20459 # check trigger-12 success:     1
20460 DELETE FROM t1
20461 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20462 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20463 AND f_charbig = '####updated per insert trigger####';
20464 ANALYZE  TABLE t1;
20465 Table   Op      Msg_type        Msg_text
20466 test.t1 analyze status  OK
20467 CHECK    TABLE t1 EXTENDED;
20468 Table   Op      Msg_type        Msg_text
20469 test.t1 check   status  OK
20470 CHECKSUM TABLE t1 EXTENDED;
20471 Table   Checksum
20472 test.t1 <some_value>
20473 OPTIMIZE TABLE t1;
20474 Table   Op      Msg_type        Msg_text
20475 test.t1 optimize        status  OK
20476 # check layout success:    1
20477 REPAIR   TABLE t1 EXTENDED;
20478 Table   Op      Msg_type        Msg_text
20479 test.t1 repair  status  OK
20480 # check layout success:    1
20481 TRUNCATE t1;
20482         
20483 # check TRUNCATE success:       1
20484 # check layout success:    1
20485 # End usability test (inc/partition_check.inc)
20486 DROP TABLE t1;
20487 CREATE TABLE t1 (
20488 f_int1 INTEGER,
20489 f_int2 INTEGER,
20490 f_char1 CHAR(20),
20491 f_char2 CHAR(20),
20492 f_charbig VARCHAR(1000)
20495 PARTITION BY LIST(MOD(f_int1,4))
20496 (PARTITION part_3 VALUES IN (-3),
20497 PARTITION part_2 VALUES IN (-2),
20498 PARTITION part_1 VALUES IN (-1),
20499 PARTITION part_N VALUES IN (NULL),
20500 PARTITION part0 VALUES IN (0),
20501 PARTITION part1 VALUES IN (1),
20502 PARTITION part2 VALUES IN (2),
20503 PARTITION part3 VALUES IN (3));
20504 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20505 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20506 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20507 ALTER TABLE t1 CHECK PARTITION part_1;
20508 Table   Op      Msg_type        Msg_text
20509 test.t1 check   status  OK
20510 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20511 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20512 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20513 # Start usability test (inc/partition_check.inc)
20514 create_command
20515 SHOW CREATE TABLE t1;
20516 Table   Create Table
20517 t1      CREATE TABLE `t1` (
20518   `f_int1` int(11) DEFAULT NULL,
20519   `f_int2` int(11) DEFAULT NULL,
20520   `f_char1` char(20) DEFAULT NULL,
20521   `f_char2` char(20) DEFAULT NULL,
20522   `f_charbig` varchar(1000) DEFAULT NULL
20523 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
20524 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
20525 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
20526  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
20527  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
20528  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
20529  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
20530  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
20531  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
20532  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
20534 unified filelist
20535 t1#P#part0.MYD
20536 t1#P#part0.MYI
20537 t1#P#part1.MYD
20538 t1#P#part1.MYI
20539 t1#P#part2.MYD
20540 t1#P#part2.MYI
20541 t1#P#part3.MYD
20542 t1#P#part3.MYI
20543 t1#P#part_1.MYD
20544 t1#P#part_1.MYI
20545 t1#P#part_2.MYD
20546 t1#P#part_2.MYI
20547 t1#P#part_3.MYD
20548 t1#P#part_3.MYI
20549 t1#P#part_N.MYD
20550 t1#P#part_N.MYI
20551 t1.frm
20552 t1.par
20554 # check prerequisites-1 success:    1
20555 # check COUNT(*) success:    1
20556 # check MIN/MAX(f_int1) success:    1
20557 # check MIN/MAX(f_int2) success:    1
20558 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20559 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20560 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20561 WHERE f_int1 IN (2,3);
20562 # check prerequisites-3 success:    1
20563 DELETE FROM t1 WHERE f_charbig = 'delete me';
20564 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
20565 # check read via f_int1 success: 1
20566 # check read via f_int2 success: 1
20567         
20568 # check multiple-1 success:     1
20569 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20570         
20571 # check multiple-2 success:     1
20572 INSERT INTO t1 SELECT * FROM t0_template
20573 WHERE MOD(f_int1,3) = 0;
20574         
20575 # check multiple-3 success:     1
20576 UPDATE t1 SET f_int1 = f_int1 + @max_row
20577 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20578 AND @max_row_div2 + @max_row_div4;
20579         
20580 # check multiple-4 success:     1
20581 DELETE FROM t1
20582 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20583 AND @max_row_div2 + @max_row_div4 + @max_row;
20584         
20585 # check multiple-5 success:     1
20586 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20587 INSERT INTO t1
20588 SET f_int1 = @cur_value , f_int2 = @cur_value,
20589 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20590 f_charbig = '#SINGLE#';
20591         
20592 # check single-1 success:       1
20593 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20594 INSERT INTO t1
20595 SET f_int1 = @cur_value , f_int2 = @cur_value,
20596 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20597 f_charbig = '#SINGLE#';
20598         
20599 # check single-2 success:       1
20600 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20601 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20602 UPDATE t1 SET f_int1 = @cur_value2
20603 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20604         
20605 # check single-3 success:       1
20606 SET @cur_value1= -1;
20607 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20608 UPDATE t1 SET f_int1 = @cur_value1
20609 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20610         
20611 # check single-4 success:       1
20612 SELECT MAX(f_int1) INTO @cur_value FROM t1;
20613 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20614         
20615 # check single-5 success:       1
20616 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20617         
20618 # check single-6 success:       1
20619 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20620         
20621 # check single-7 success:       1
20622 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
20623 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20624 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20625 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20626 f_charbig = '#NULL#';
20627 INSERT INTO t1
20628 SET f_int1 = NULL , f_int2 = -@max_row,
20629 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20630 f_charbig = '#NULL#';
20631 # check null success:    1
20632         
20633 # check null-1 success:         1
20634 UPDATE t1 SET f_int1 = -@max_row
20635 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20636 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20637         
20638 # check null-2 success:         1
20639 UPDATE t1 SET f_int1 = NULL
20640 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20641 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20642         
20643 # check null-3 success:         1
20644 DELETE FROM t1
20645 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20646 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20647         
20648 # check null-4 success:         1
20649 DELETE FROM t1
20650 WHERE f_int1 = 0 AND f_int2 = 0
20651 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20652 AND f_charbig = '#NULL#';
20653 SET AUTOCOMMIT= 0;
20654 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20655 SELECT f_int1, f_int1, '', '', 'was inserted'
20656 FROM t0_template source_tab
20657 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20658         
20659 # check transactions-1 success:         1
20660 COMMIT WORK;
20661         
20662 # check transactions-2 success:         1
20663 ROLLBACK WORK;
20664         
20665 # check transactions-3 success:         1
20666 DELETE FROM t1 WHERE f_charbig = 'was inserted';
20667 COMMIT WORK;
20668 ROLLBACK WORK;
20669         
20670 # check transactions-4 success:         1
20671 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20672 SELECT f_int1, f_int1, '', '', 'was inserted'
20673 FROM t0_template source_tab
20674 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20675         
20676 # check transactions-5 success:         1
20677 ROLLBACK WORK;
20678 Warnings:
20679 Warning 1196    Some non-transactional changed tables couldn't be rolled back
20680         
20681 # check transactions-6 success:         1
20682 # INFO: Storage engine used for t1 seems to be not transactional.
20683 COMMIT;
20684         
20685 # check transactions-7 success:         1
20686 DELETE FROM t1 WHERE f_charbig = 'was inserted';
20687 COMMIT WORK;
20688 SET @@session.sql_mode = 'traditional';
20689 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20690 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20691 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20692 '', '', 'was inserted' FROM t0_template
20693 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20694 ERROR 22012: Division by 0
20695 COMMIT;
20696         
20697 # check transactions-8 success:         1
20698 # INFO: Storage engine used for t1 seems to be unable to revert
20699 #       changes made by the failing statement.
20700 SET @@session.sql_mode = '';
20701 SET AUTOCOMMIT= 1;
20702 DELETE FROM t1 WHERE f_charbig = 'was inserted';
20703 COMMIT WORK;
20704 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20705         
20706 # check special-1 success:      1
20707 UPDATE t1 SET f_charbig = '';
20708         
20709 # check special-2 success:      1
20710 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20711 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20712 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20713 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20714 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20715 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20716 'just inserted' FROM t0_template
20717 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20718 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20719 BEGIN
20720 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20721 f_charbig = 'updated by trigger'
20722       WHERE f_int1 = new.f_int1;
20723 END|
20724 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20725 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20726 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20727         
20728 # check trigger-1 success:      1
20729 DROP TRIGGER trg_1;
20730 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20731 f_int2 = CAST(f_char1 AS SIGNED INT),
20732 f_charbig = 'just inserted'
20733    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20734 DELETE FROM t0_aux
20735 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20736 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20737 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20738 'just inserted' FROM t0_template
20739 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20740 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20741 BEGIN
20742 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20743 f_charbig = 'updated by trigger'
20744       WHERE f_int1 = new.f_int1;
20745 END|
20746 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20747 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20748 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20749         
20750 # check trigger-2 success:      1
20751 DROP TRIGGER trg_1;
20752 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20753 f_int2 = CAST(f_char1 AS SIGNED INT),
20754 f_charbig = 'just inserted'
20755    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20756 DELETE FROM t0_aux
20757 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20758 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20759 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20760 'just inserted' FROM t0_template
20761 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20762 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20763 BEGIN
20764 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20765 f_charbig = 'updated by trigger'
20766       WHERE f_int1 = new.f_int1;
20767 END|
20768 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20769 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20770         
20771 # check trigger-3 success:      1
20772 DROP TRIGGER trg_1;
20773 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20774 f_int2 = CAST(f_char1 AS SIGNED INT),
20775 f_charbig = 'just inserted'
20776    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20777 DELETE FROM t0_aux
20778 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20779 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20780 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20781 'just inserted' FROM t0_template
20782 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20783 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20784 BEGIN
20785 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20786 f_charbig = 'updated by trigger'
20787       WHERE f_int1 = - old.f_int1;
20788 END|
20789 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20790 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20791         
20792 # check trigger-4 success:      1
20793 DROP TRIGGER trg_1;
20794 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20795 f_int2 = CAST(f_char1 AS SIGNED INT),
20796 f_charbig = 'just inserted'
20797    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20798 DELETE FROM t0_aux
20799 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20800 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20801 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20802 'just inserted' FROM t0_template
20803 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20804 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20805 BEGIN
20806 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20807 f_charbig = 'updated by trigger'
20808       WHERE f_int1 = new.f_int1;
20809 END|
20810 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20811 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20812         
20813 # check trigger-5 success:      1
20814 DROP TRIGGER trg_1;
20815 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20816 f_int2 = CAST(f_char1 AS SIGNED INT),
20817 f_charbig = 'just inserted'
20818    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20819 DELETE FROM t0_aux
20820 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20821 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20822 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20823 'just inserted' FROM t0_template
20824 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20825 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20826 BEGIN
20827 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20828 f_charbig = 'updated by trigger'
20829       WHERE f_int1 = - old.f_int1;
20830 END|
20831 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
20832 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20833         
20834 # check trigger-6 success:      1
20835 DROP TRIGGER trg_1;
20836 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20837 f_int2 = CAST(f_char1 AS SIGNED INT),
20838 f_charbig = 'just inserted'
20839    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20840 DELETE FROM t0_aux
20841 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20842 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20843 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20844 'just inserted' FROM t0_template
20845 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20846 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20847 BEGIN
20848 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20849 f_charbig = 'updated by trigger'
20850       WHERE f_int1 = - old.f_int1;
20851 END|
20852 DELETE FROM t0_aux
20853 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20854         
20855 # check trigger-7 success:      1
20856 DROP TRIGGER trg_1;
20857 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20858 f_int2 = CAST(f_char1 AS SIGNED INT),
20859 f_charbig = 'just inserted'
20860    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20861 DELETE FROM t0_aux
20862 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20863 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20864 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20865 'just inserted' FROM t0_template
20866 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20867 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20868 BEGIN
20869 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20870 f_charbig = 'updated by trigger'
20871       WHERE f_int1 = - old.f_int1;
20872 END|
20873 DELETE FROM t0_aux
20874 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20875         
20876 # check trigger-8 success:      1
20877 DROP TRIGGER trg_1;
20878 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20879 f_int2 = CAST(f_char1 AS SIGNED INT),
20880 f_charbig = 'just inserted'
20881    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20882 DELETE FROM t0_aux
20883 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20884 DELETE FROM t1
20885 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20886 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20887 BEGIN
20888 SET new.f_int1 = old.f_int1 + @max_row,
20889 new.f_int2 = old.f_int2 - @max_row,
20890 new.f_charbig = '####updated per update trigger####';
20891 END|
20892 UPDATE t1
20893 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20894 f_charbig = '####updated per update statement itself####';
20895         
20896 # check trigger-9 success:      1
20897 DROP TRIGGER trg_2;
20898 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20899 f_int2 = CAST(f_char1 AS SIGNED INT),
20900 f_charbig = CONCAT('===',f_char1,'===');
20901 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20902 BEGIN
20903 SET new.f_int1 = new.f_int1 + @max_row,
20904 new.f_int2 = new.f_int2 - @max_row,
20905 new.f_charbig = '####updated per update trigger####';
20906 END|
20907 UPDATE t1
20908 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20909 f_charbig = '####updated per update statement itself####';
20910         
20911 # check trigger-10 success:     1
20912 DROP TRIGGER trg_2;
20913 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20914 f_int2 = CAST(f_char1 AS SIGNED INT),
20915 f_charbig = CONCAT('===',f_char1,'===');
20916 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20917 BEGIN
20918 SET new.f_int1 = @my_max1 + @counter,
20919 new.f_int2 = @my_min2 - @counter,
20920 new.f_charbig = '####updated per insert trigger####';
20921 SET @counter = @counter + 1;
20922 END|
20923 SET @counter = 1;
20924 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20925 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20926 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20927 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20928 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20929 ORDER BY f_int1;
20930 DROP TRIGGER trg_3;
20931         
20932 # check trigger-11 success:     1
20933 DELETE FROM t1
20934 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20935 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20936 AND f_charbig = '####updated per insert trigger####';
20937 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20938 BEGIN
20939 SET new.f_int1 = @my_max1 + @counter,
20940 new.f_int2 = @my_min2 - @counter,
20941 new.f_charbig = '####updated per insert trigger####';
20942 SET @counter = @counter + 1;
20943 END|
20944 SET @counter = 1;
20945 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20946 INSERT INTO t1 (f_char1, f_char2, f_charbig)
20947 SELECT CAST(f_int1 AS CHAR),
20948 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20949 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20950 ORDER BY f_int1;
20951 DROP TRIGGER trg_3;
20952         
20953 # check trigger-12 success:     1
20954 DELETE FROM t1
20955 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20956 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20957 AND f_charbig = '####updated per insert trigger####';
20958 ANALYZE  TABLE t1;
20959 Table   Op      Msg_type        Msg_text
20960 test.t1 analyze status  OK
20961 CHECK    TABLE t1 EXTENDED;
20962 Table   Op      Msg_type        Msg_text
20963 test.t1 check   status  OK
20964 CHECKSUM TABLE t1 EXTENDED;
20965 Table   Checksum
20966 test.t1 <some_value>
20967 OPTIMIZE TABLE t1;
20968 Table   Op      Msg_type        Msg_text
20969 test.t1 optimize        status  OK
20970 # check layout success:    1
20971 REPAIR   TABLE t1 EXTENDED;
20972 Table   Op      Msg_type        Msg_text
20973 test.t1 repair  status  OK
20974 # check layout success:    1
20975 TRUNCATE t1;
20976         
20977 # check TRUNCATE success:       1
20978 # check layout success:    1
20979 # End usability test (inc/partition_check.inc)
20980 DROP TABLE t1;
20981 CREATE TABLE t1 (
20982 f_int1 INTEGER,
20983 f_int2 INTEGER,
20984 f_char1 CHAR(20),
20985 f_char2 CHAR(20),
20986 f_charbig VARCHAR(1000)
20989 PARTITION BY RANGE(f_int1)
20990 (PARTITION parta VALUES LESS THAN (0),
20991 PARTITION part_1 VALUES LESS THAN (5),
20992 PARTITION part_2 VALUES LESS THAN (10),
20993 PARTITION part_3 VALUES LESS THAN (10 + 5),
20994 PARTITION part_4 VALUES LESS THAN (20),
20995 PARTITION part_5 VALUES LESS THAN (2147483646));
20996 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20997 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20998 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20999 ALTER TABLE t1 CHECK PARTITION part_1;
21000 Table   Op      Msg_type        Msg_text
21001 test.t1 check   status  OK
21002 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21003 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21004 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21005 # Start usability test (inc/partition_check.inc)
21006 create_command
21007 SHOW CREATE TABLE t1;
21008 Table   Create Table
21009 t1      CREATE TABLE `t1` (
21010   `f_int1` int(11) DEFAULT NULL,
21011   `f_int2` int(11) DEFAULT NULL,
21012   `f_char1` char(20) DEFAULT NULL,
21013   `f_char2` char(20) DEFAULT NULL,
21014   `f_charbig` varchar(1000) DEFAULT NULL
21015 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
21016 /*!50100 PARTITION BY RANGE (f_int1)
21017 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
21018  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
21019  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
21020  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
21021  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
21022  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
21024 unified filelist
21025 t1#P#part_1.MYD
21026 t1#P#part_1.MYI
21027 t1#P#part_2.MYD
21028 t1#P#part_2.MYI
21029 t1#P#part_3.MYD
21030 t1#P#part_3.MYI
21031 t1#P#part_4.MYD
21032 t1#P#part_4.MYI
21033 t1#P#part_5.MYD
21034 t1#P#part_5.MYI
21035 t1#P#parta.MYD
21036 t1#P#parta.MYI
21037 t1.frm
21038 t1.par
21040 # check prerequisites-1 success:    1
21041 # check COUNT(*) success:    1
21042 # check MIN/MAX(f_int1) success:    1
21043 # check MIN/MAX(f_int2) success:    1
21044 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21045 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21046 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21047 WHERE f_int1 IN (2,3);
21048 # check prerequisites-3 success:    1
21049 DELETE FROM t1 WHERE f_charbig = 'delete me';
21050 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21051 # check read via f_int1 success: 1
21052 # check read via f_int2 success: 1
21053         
21054 # check multiple-1 success:     1
21055 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21056         
21057 # check multiple-2 success:     1
21058 INSERT INTO t1 SELECT * FROM t0_template
21059 WHERE MOD(f_int1,3) = 0;
21060         
21061 # check multiple-3 success:     1
21062 UPDATE t1 SET f_int1 = f_int1 + @max_row
21063 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21064 AND @max_row_div2 + @max_row_div4;
21065         
21066 # check multiple-4 success:     1
21067 DELETE FROM t1
21068 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21069 AND @max_row_div2 + @max_row_div4 + @max_row;
21070         
21071 # check multiple-5 success:     1
21072 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21073 INSERT INTO t1
21074 SET f_int1 = @cur_value , f_int2 = @cur_value,
21075 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21076 f_charbig = '#SINGLE#';
21077         
21078 # check single-1 success:       1
21079 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21080 INSERT INTO t1
21081 SET f_int1 = @cur_value , f_int2 = @cur_value,
21082 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21083 f_charbig = '#SINGLE#';
21084         
21085 # check single-2 success:       1
21086 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21087 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21088 UPDATE t1 SET f_int1 = @cur_value2
21089 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21090         
21091 # check single-3 success:       1
21092 SET @cur_value1= -1;
21093 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21094 UPDATE t1 SET f_int1 = @cur_value1
21095 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21096         
21097 # check single-4 success:       1
21098 SELECT MAX(f_int1) INTO @cur_value FROM t1;
21099 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21100         
21101 # check single-5 success:       1
21102 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21103         
21104 # check single-6 success:       1
21105 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21106 ERROR HY000: Table has no partition for value 2147483647
21107 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21108 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21109 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21110 f_charbig = '#NULL#';
21111 INSERT INTO t1
21112 SET f_int1 = NULL , f_int2 = -@max_row,
21113 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21114 f_charbig = '#NULL#';
21115 # check null success:    1
21116         
21117 # check null-1 success:         1
21118 UPDATE t1 SET f_int1 = -@max_row
21119 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21120 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21121         
21122 # check null-2 success:         1
21123 UPDATE t1 SET f_int1 = NULL
21124 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21125 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21126         
21127 # check null-3 success:         1
21128 DELETE FROM t1
21129 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21130 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21131         
21132 # check null-4 success:         1
21133 DELETE FROM t1
21134 WHERE f_int1 = 0 AND f_int2 = 0
21135 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21136 AND f_charbig = '#NULL#';
21137 SET AUTOCOMMIT= 0;
21138 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21139 SELECT f_int1, f_int1, '', '', 'was inserted'
21140 FROM t0_template source_tab
21141 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21142         
21143 # check transactions-1 success:         1
21144 COMMIT WORK;
21145         
21146 # check transactions-2 success:         1
21147 ROLLBACK WORK;
21148         
21149 # check transactions-3 success:         1
21150 DELETE FROM t1 WHERE f_charbig = 'was inserted';
21151 COMMIT WORK;
21152 ROLLBACK WORK;
21153         
21154 # check transactions-4 success:         1
21155 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21156 SELECT f_int1, f_int1, '', '', 'was inserted'
21157 FROM t0_template source_tab
21158 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21159         
21160 # check transactions-5 success:         1
21161 ROLLBACK WORK;
21162 Warnings:
21163 Warning 1196    Some non-transactional changed tables couldn't be rolled back
21164         
21165 # check transactions-6 success:         1
21166 # INFO: Storage engine used for t1 seems to be not transactional.
21167 COMMIT;
21168         
21169 # check transactions-7 success:         1
21170 DELETE FROM t1 WHERE f_charbig = 'was inserted';
21171 COMMIT WORK;
21172 SET @@session.sql_mode = 'traditional';
21173 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21174 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21175 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21176 '', '', 'was inserted' FROM t0_template
21177 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21178 ERROR 22012: Division by 0
21179 COMMIT;
21180         
21181 # check transactions-8 success:         1
21182 # INFO: Storage engine used for t1 seems to be unable to revert
21183 #       changes made by the failing statement.
21184 SET @@session.sql_mode = '';
21185 SET AUTOCOMMIT= 1;
21186 DELETE FROM t1 WHERE f_charbig = 'was inserted';
21187 COMMIT WORK;
21188 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21189         
21190 # check special-1 success:      1
21191 UPDATE t1 SET f_charbig = '';
21192         
21193 # check special-2 success:      1
21194 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21195 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21196 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21197 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21198 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21199 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21200 'just inserted' FROM t0_template
21201 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21202 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21203 BEGIN
21204 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21205 f_charbig = 'updated by trigger'
21206       WHERE f_int1 = new.f_int1;
21207 END|
21208 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21209 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21210 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21211         
21212 # check trigger-1 success:      1
21213 DROP TRIGGER trg_1;
21214 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21215 f_int2 = CAST(f_char1 AS SIGNED INT),
21216 f_charbig = 'just inserted'
21217    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21218 DELETE FROM t0_aux
21219 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21220 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21221 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21222 'just inserted' FROM t0_template
21223 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21224 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21225 BEGIN
21226 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21227 f_charbig = 'updated by trigger'
21228       WHERE f_int1 = new.f_int1;
21229 END|
21230 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21231 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21232 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21233         
21234 # check trigger-2 success:      1
21235 DROP TRIGGER trg_1;
21236 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21237 f_int2 = CAST(f_char1 AS SIGNED INT),
21238 f_charbig = 'just inserted'
21239    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21240 DELETE FROM t0_aux
21241 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21242 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21243 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21244 'just inserted' FROM t0_template
21245 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21246 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21247 BEGIN
21248 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21249 f_charbig = 'updated by trigger'
21250       WHERE f_int1 = new.f_int1;
21251 END|
21252 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21253 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21254         
21255 # check trigger-3 success:      1
21256 DROP TRIGGER trg_1;
21257 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21258 f_int2 = CAST(f_char1 AS SIGNED INT),
21259 f_charbig = 'just inserted'
21260    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21261 DELETE FROM t0_aux
21262 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21263 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21264 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21265 'just inserted' FROM t0_template
21266 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21267 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21268 BEGIN
21269 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21270 f_charbig = 'updated by trigger'
21271       WHERE f_int1 = - old.f_int1;
21272 END|
21273 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21274 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21275         
21276 # check trigger-4 success:      1
21277 DROP TRIGGER trg_1;
21278 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21279 f_int2 = CAST(f_char1 AS SIGNED INT),
21280 f_charbig = 'just inserted'
21281    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21282 DELETE FROM t0_aux
21283 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21284 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21285 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21286 'just inserted' FROM t0_template
21287 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21288 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21289 BEGIN
21290 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21291 f_charbig = 'updated by trigger'
21292       WHERE f_int1 = new.f_int1;
21293 END|
21294 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21295 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21296         
21297 # check trigger-5 success:      1
21298 DROP TRIGGER trg_1;
21299 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21300 f_int2 = CAST(f_char1 AS SIGNED INT),
21301 f_charbig = 'just inserted'
21302    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21303 DELETE FROM t0_aux
21304 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21305 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21306 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21307 'just inserted' FROM t0_template
21308 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21309 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21310 BEGIN
21311 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21312 f_charbig = 'updated by trigger'
21313       WHERE f_int1 = - old.f_int1;
21314 END|
21315 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21316 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21317         
21318 # check trigger-6 success:      1
21319 DROP TRIGGER trg_1;
21320 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21321 f_int2 = CAST(f_char1 AS SIGNED INT),
21322 f_charbig = 'just inserted'
21323    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21324 DELETE FROM t0_aux
21325 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21326 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21327 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21328 'just inserted' FROM t0_template
21329 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21330 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21331 BEGIN
21332 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21333 f_charbig = 'updated by trigger'
21334       WHERE f_int1 = - old.f_int1;
21335 END|
21336 DELETE FROM t0_aux
21337 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21338         
21339 # check trigger-7 success:      1
21340 DROP TRIGGER trg_1;
21341 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21342 f_int2 = CAST(f_char1 AS SIGNED INT),
21343 f_charbig = 'just inserted'
21344    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21345 DELETE FROM t0_aux
21346 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21347 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21348 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21349 'just inserted' FROM t0_template
21350 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21351 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21352 BEGIN
21353 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21354 f_charbig = 'updated by trigger'
21355       WHERE f_int1 = - old.f_int1;
21356 END|
21357 DELETE FROM t0_aux
21358 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21359         
21360 # check trigger-8 success:      1
21361 DROP TRIGGER trg_1;
21362 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21363 f_int2 = CAST(f_char1 AS SIGNED INT),
21364 f_charbig = 'just inserted'
21365    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21366 DELETE FROM t0_aux
21367 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21368 DELETE FROM t1
21369 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21370 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21371 BEGIN
21372 SET new.f_int1 = old.f_int1 + @max_row,
21373 new.f_int2 = old.f_int2 - @max_row,
21374 new.f_charbig = '####updated per update trigger####';
21375 END|
21376 UPDATE t1
21377 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21378 f_charbig = '####updated per update statement itself####';
21379         
21380 # check trigger-9 success:      1
21381 DROP TRIGGER trg_2;
21382 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21383 f_int2 = CAST(f_char1 AS SIGNED INT),
21384 f_charbig = CONCAT('===',f_char1,'===');
21385 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21386 BEGIN
21387 SET new.f_int1 = new.f_int1 + @max_row,
21388 new.f_int2 = new.f_int2 - @max_row,
21389 new.f_charbig = '####updated per update trigger####';
21390 END|
21391 UPDATE t1
21392 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21393 f_charbig = '####updated per update statement itself####';
21394         
21395 # check trigger-10 success:     1
21396 DROP TRIGGER trg_2;
21397 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21398 f_int2 = CAST(f_char1 AS SIGNED INT),
21399 f_charbig = CONCAT('===',f_char1,'===');
21400 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21401 BEGIN
21402 SET new.f_int1 = @my_max1 + @counter,
21403 new.f_int2 = @my_min2 - @counter,
21404 new.f_charbig = '####updated per insert trigger####';
21405 SET @counter = @counter + 1;
21406 END|
21407 SET @counter = 1;
21408 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21409 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21410 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21411 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21412 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21413 ORDER BY f_int1;
21414 DROP TRIGGER trg_3;
21415         
21416 # check trigger-11 success:     1
21417 DELETE FROM t1
21418 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21419 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21420 AND f_charbig = '####updated per insert trigger####';
21421 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21422 BEGIN
21423 SET new.f_int1 = @my_max1 + @counter,
21424 new.f_int2 = @my_min2 - @counter,
21425 new.f_charbig = '####updated per insert trigger####';
21426 SET @counter = @counter + 1;
21427 END|
21428 SET @counter = 1;
21429 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21430 INSERT INTO t1 (f_char1, f_char2, f_charbig)
21431 SELECT CAST(f_int1 AS CHAR),
21432 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21433 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21434 ORDER BY f_int1;
21435 DROP TRIGGER trg_3;
21436         
21437 # check trigger-12 success:     1
21438 DELETE FROM t1
21439 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21440 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21441 AND f_charbig = '####updated per insert trigger####';
21442 ANALYZE  TABLE t1;
21443 Table   Op      Msg_type        Msg_text
21444 test.t1 analyze status  OK
21445 CHECK    TABLE t1 EXTENDED;
21446 Table   Op      Msg_type        Msg_text
21447 test.t1 check   status  OK
21448 CHECKSUM TABLE t1 EXTENDED;
21449 Table   Checksum
21450 test.t1 <some_value>
21451 OPTIMIZE TABLE t1;
21452 Table   Op      Msg_type        Msg_text
21453 test.t1 optimize        status  OK
21454 # check layout success:    1
21455 REPAIR   TABLE t1 EXTENDED;
21456 Table   Op      Msg_type        Msg_text
21457 test.t1 repair  status  OK
21458 # check layout success:    1
21459 TRUNCATE t1;
21460         
21461 # check TRUNCATE success:       1
21462 # check layout success:    1
21463 # End usability test (inc/partition_check.inc)
21464 DROP TABLE t1;
21465 CREATE TABLE t1 (
21466 f_int1 INTEGER,
21467 f_int2 INTEGER,
21468 f_char1 CHAR(20),
21469 f_char2 CHAR(20),
21470 f_charbig VARCHAR(1000)
21473 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
21474 (PARTITION part_1 VALUES LESS THAN (0),
21475 PARTITION part_2 VALUES LESS THAN (5),
21476 PARTITION part_3 VALUES LESS THAN (10),
21477 PARTITION part_4 VALUES LESS THAN (2147483646));
21478 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21479 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21480 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21481 ALTER TABLE t1 CHECK PARTITION part_1;
21482 Table   Op      Msg_type        Msg_text
21483 test.t1 check   status  OK
21484 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21485 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21486 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21487 # Start usability test (inc/partition_check.inc)
21488 create_command
21489 SHOW CREATE TABLE t1;
21490 Table   Create Table
21491 t1      CREATE TABLE `t1` (
21492   `f_int1` int(11) DEFAULT NULL,
21493   `f_int2` int(11) DEFAULT NULL,
21494   `f_char1` char(20) DEFAULT NULL,
21495   `f_char2` char(20) DEFAULT NULL,
21496   `f_charbig` varchar(1000) DEFAULT NULL
21497 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
21498 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
21499 SUBPARTITION BY HASH (f_int1)
21500 SUBPARTITIONS 2
21501 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
21502  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
21503  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
21504  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
21506 unified filelist
21507 t1#P#part_1#SP#part_1sp0.MYD
21508 t1#P#part_1#SP#part_1sp0.MYI
21509 t1#P#part_1#SP#part_1sp1.MYD
21510 t1#P#part_1#SP#part_1sp1.MYI
21511 t1#P#part_2#SP#part_2sp0.MYD
21512 t1#P#part_2#SP#part_2sp0.MYI
21513 t1#P#part_2#SP#part_2sp1.MYD
21514 t1#P#part_2#SP#part_2sp1.MYI
21515 t1#P#part_3#SP#part_3sp0.MYD
21516 t1#P#part_3#SP#part_3sp0.MYI
21517 t1#P#part_3#SP#part_3sp1.MYD
21518 t1#P#part_3#SP#part_3sp1.MYI
21519 t1#P#part_4#SP#part_4sp0.MYD
21520 t1#P#part_4#SP#part_4sp0.MYI
21521 t1#P#part_4#SP#part_4sp1.MYD
21522 t1#P#part_4#SP#part_4sp1.MYI
21523 t1.frm
21524 t1.par
21526 # check prerequisites-1 success:    1
21527 # check COUNT(*) success:    1
21528 # check MIN/MAX(f_int1) success:    1
21529 # check MIN/MAX(f_int2) success:    1
21530 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21531 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21532 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21533 WHERE f_int1 IN (2,3);
21534 # check prerequisites-3 success:    1
21535 DELETE FROM t1 WHERE f_charbig = 'delete me';
21536 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21537 # check read via f_int1 success: 1
21538 # check read via f_int2 success: 1
21539         
21540 # check multiple-1 success:     1
21541 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21542         
21543 # check multiple-2 success:     1
21544 INSERT INTO t1 SELECT * FROM t0_template
21545 WHERE MOD(f_int1,3) = 0;
21546         
21547 # check multiple-3 success:     1
21548 UPDATE t1 SET f_int1 = f_int1 + @max_row
21549 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21550 AND @max_row_div2 + @max_row_div4;
21551         
21552 # check multiple-4 success:     1
21553 DELETE FROM t1
21554 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21555 AND @max_row_div2 + @max_row_div4 + @max_row;
21556         
21557 # check multiple-5 success:     1
21558 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21559 INSERT INTO t1
21560 SET f_int1 = @cur_value , f_int2 = @cur_value,
21561 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21562 f_charbig = '#SINGLE#';
21563         
21564 # check single-1 success:       1
21565 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21566 INSERT INTO t1
21567 SET f_int1 = @cur_value , f_int2 = @cur_value,
21568 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21569 f_charbig = '#SINGLE#';
21570         
21571 # check single-2 success:       1
21572 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21573 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21574 UPDATE t1 SET f_int1 = @cur_value2
21575 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21576         
21577 # check single-3 success:       1
21578 SET @cur_value1= -1;
21579 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21580 UPDATE t1 SET f_int1 = @cur_value1
21581 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21582         
21583 # check single-4 success:       1
21584 SELECT MAX(f_int1) INTO @cur_value FROM t1;
21585 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21586         
21587 # check single-5 success:       1
21588 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21589         
21590 # check single-6 success:       1
21591 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21592         
21593 # check single-7 success:       1
21594 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
21595 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21596 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21597 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21598 f_charbig = '#NULL#';
21599 INSERT INTO t1
21600 SET f_int1 = NULL , f_int2 = -@max_row,
21601 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21602 f_charbig = '#NULL#';
21603 # check null success:    1
21604         
21605 # check null-1 success:         1
21606 UPDATE t1 SET f_int1 = -@max_row
21607 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21608 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21609         
21610 # check null-2 success:         1
21611 UPDATE t1 SET f_int1 = NULL
21612 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21613 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21614         
21615 # check null-3 success:         1
21616 DELETE FROM t1
21617 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21618 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21619         
21620 # check null-4 success:         1
21621 DELETE FROM t1
21622 WHERE f_int1 = 0 AND f_int2 = 0
21623 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21624 AND f_charbig = '#NULL#';
21625 SET AUTOCOMMIT= 0;
21626 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21627 SELECT f_int1, f_int1, '', '', 'was inserted'
21628 FROM t0_template source_tab
21629 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21630         
21631 # check transactions-1 success:         1
21632 COMMIT WORK;
21633         
21634 # check transactions-2 success:         1
21635 ROLLBACK WORK;
21636         
21637 # check transactions-3 success:         1
21638 DELETE FROM t1 WHERE f_charbig = 'was inserted';
21639 COMMIT WORK;
21640 ROLLBACK WORK;
21641         
21642 # check transactions-4 success:         1
21643 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21644 SELECT f_int1, f_int1, '', '', 'was inserted'
21645 FROM t0_template source_tab
21646 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21647         
21648 # check transactions-5 success:         1
21649 ROLLBACK WORK;
21650 Warnings:
21651 Warning 1196    Some non-transactional changed tables couldn't be rolled back
21652         
21653 # check transactions-6 success:         1
21654 # INFO: Storage engine used for t1 seems to be not transactional.
21655 COMMIT;
21656         
21657 # check transactions-7 success:         1
21658 DELETE FROM t1 WHERE f_charbig = 'was inserted';
21659 COMMIT WORK;
21660 SET @@session.sql_mode = 'traditional';
21661 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21662 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21663 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21664 '', '', 'was inserted' FROM t0_template
21665 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21666 ERROR 22012: Division by 0
21667 COMMIT;
21668         
21669 # check transactions-8 success:         1
21670 # INFO: Storage engine used for t1 seems to be unable to revert
21671 #       changes made by the failing statement.
21672 SET @@session.sql_mode = '';
21673 SET AUTOCOMMIT= 1;
21674 DELETE FROM t1 WHERE f_charbig = 'was inserted';
21675 COMMIT WORK;
21676 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21677         
21678 # check special-1 success:      1
21679 UPDATE t1 SET f_charbig = '';
21680         
21681 # check special-2 success:      1
21682 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21683 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21684 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21685 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21686 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21687 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21688 'just inserted' FROM t0_template
21689 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21690 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21691 BEGIN
21692 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21693 f_charbig = 'updated by trigger'
21694       WHERE f_int1 = new.f_int1;
21695 END|
21696 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21697 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21698 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21699         
21700 # check trigger-1 success:      1
21701 DROP TRIGGER trg_1;
21702 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21703 f_int2 = CAST(f_char1 AS SIGNED INT),
21704 f_charbig = 'just inserted'
21705    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21706 DELETE FROM t0_aux
21707 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21708 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21709 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21710 'just inserted' FROM t0_template
21711 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21712 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21713 BEGIN
21714 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21715 f_charbig = 'updated by trigger'
21716       WHERE f_int1 = new.f_int1;
21717 END|
21718 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21719 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21720 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21721         
21722 # check trigger-2 success:      1
21723 DROP TRIGGER trg_1;
21724 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21725 f_int2 = CAST(f_char1 AS SIGNED INT),
21726 f_charbig = 'just inserted'
21727    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21728 DELETE FROM t0_aux
21729 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21730 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21731 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21732 'just inserted' FROM t0_template
21733 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21734 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21735 BEGIN
21736 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21737 f_charbig = 'updated by trigger'
21738       WHERE f_int1 = new.f_int1;
21739 END|
21740 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21741 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21742         
21743 # check trigger-3 success:      1
21744 DROP TRIGGER trg_1;
21745 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21746 f_int2 = CAST(f_char1 AS SIGNED INT),
21747 f_charbig = 'just inserted'
21748    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21749 DELETE FROM t0_aux
21750 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21751 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21752 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21753 'just inserted' FROM t0_template
21754 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21755 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21756 BEGIN
21757 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21758 f_charbig = 'updated by trigger'
21759       WHERE f_int1 = - old.f_int1;
21760 END|
21761 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21762 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21763         
21764 # check trigger-4 success:      1
21765 DROP TRIGGER trg_1;
21766 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21767 f_int2 = CAST(f_char1 AS SIGNED INT),
21768 f_charbig = 'just inserted'
21769    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21770 DELETE FROM t0_aux
21771 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21772 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21773 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21774 'just inserted' FROM t0_template
21775 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21776 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21777 BEGIN
21778 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21779 f_charbig = 'updated by trigger'
21780       WHERE f_int1 = new.f_int1;
21781 END|
21782 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21783 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21784         
21785 # check trigger-5 success:      1
21786 DROP TRIGGER trg_1;
21787 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21788 f_int2 = CAST(f_char1 AS SIGNED INT),
21789 f_charbig = 'just inserted'
21790    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21791 DELETE FROM t0_aux
21792 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21793 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21794 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21795 'just inserted' FROM t0_template
21796 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21797 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21798 BEGIN
21799 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21800 f_charbig = 'updated by trigger'
21801       WHERE f_int1 = - old.f_int1;
21802 END|
21803 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
21804 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21805         
21806 # check trigger-6 success:      1
21807 DROP TRIGGER trg_1;
21808 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21809 f_int2 = CAST(f_char1 AS SIGNED INT),
21810 f_charbig = 'just inserted'
21811    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21812 DELETE FROM t0_aux
21813 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21814 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21815 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21816 'just inserted' FROM t0_template
21817 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21818 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21819 BEGIN
21820 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21821 f_charbig = 'updated by trigger'
21822       WHERE f_int1 = - old.f_int1;
21823 END|
21824 DELETE FROM t0_aux
21825 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21826         
21827 # check trigger-7 success:      1
21828 DROP TRIGGER trg_1;
21829 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21830 f_int2 = CAST(f_char1 AS SIGNED INT),
21831 f_charbig = 'just inserted'
21832    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21833 DELETE FROM t0_aux
21834 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21835 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21836 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21837 'just inserted' FROM t0_template
21838 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21839 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21840 BEGIN
21841 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21842 f_charbig = 'updated by trigger'
21843       WHERE f_int1 = - old.f_int1;
21844 END|
21845 DELETE FROM t0_aux
21846 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21847         
21848 # check trigger-8 success:      1
21849 DROP TRIGGER trg_1;
21850 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21851 f_int2 = CAST(f_char1 AS SIGNED INT),
21852 f_charbig = 'just inserted'
21853    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21854 DELETE FROM t0_aux
21855 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21856 DELETE FROM t1
21857 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21858 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21859 BEGIN
21860 SET new.f_int1 = old.f_int1 + @max_row,
21861 new.f_int2 = old.f_int2 - @max_row,
21862 new.f_charbig = '####updated per update trigger####';
21863 END|
21864 UPDATE t1
21865 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21866 f_charbig = '####updated per update statement itself####';
21867         
21868 # check trigger-9 success:      1
21869 DROP TRIGGER trg_2;
21870 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21871 f_int2 = CAST(f_char1 AS SIGNED INT),
21872 f_charbig = CONCAT('===',f_char1,'===');
21873 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21874 BEGIN
21875 SET new.f_int1 = new.f_int1 + @max_row,
21876 new.f_int2 = new.f_int2 - @max_row,
21877 new.f_charbig = '####updated per update trigger####';
21878 END|
21879 UPDATE t1
21880 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21881 f_charbig = '####updated per update statement itself####';
21882         
21883 # check trigger-10 success:     1
21884 DROP TRIGGER trg_2;
21885 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21886 f_int2 = CAST(f_char1 AS SIGNED INT),
21887 f_charbig = CONCAT('===',f_char1,'===');
21888 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21889 BEGIN
21890 SET new.f_int1 = @my_max1 + @counter,
21891 new.f_int2 = @my_min2 - @counter,
21892 new.f_charbig = '####updated per insert trigger####';
21893 SET @counter = @counter + 1;
21894 END|
21895 SET @counter = 1;
21896 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21897 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21898 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21899 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21900 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21901 ORDER BY f_int1;
21902 DROP TRIGGER trg_3;
21903         
21904 # check trigger-11 success:     1
21905 DELETE FROM t1
21906 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21907 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21908 AND f_charbig = '####updated per insert trigger####';
21909 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21910 BEGIN
21911 SET new.f_int1 = @my_max1 + @counter,
21912 new.f_int2 = @my_min2 - @counter,
21913 new.f_charbig = '####updated per insert trigger####';
21914 SET @counter = @counter + 1;
21915 END|
21916 SET @counter = 1;
21917 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21918 INSERT INTO t1 (f_char1, f_char2, f_charbig)
21919 SELECT CAST(f_int1 AS CHAR),
21920 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21921 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21922 ORDER BY f_int1;
21923 DROP TRIGGER trg_3;
21924         
21925 # check trigger-12 success:     1
21926 DELETE FROM t1
21927 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21928 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21929 AND f_charbig = '####updated per insert trigger####';
21930 ANALYZE  TABLE t1;
21931 Table   Op      Msg_type        Msg_text
21932 test.t1 analyze status  OK
21933 CHECK    TABLE t1 EXTENDED;
21934 Table   Op      Msg_type        Msg_text
21935 test.t1 check   status  OK
21936 CHECKSUM TABLE t1 EXTENDED;
21937 Table   Checksum
21938 test.t1 <some_value>
21939 OPTIMIZE TABLE t1;
21940 Table   Op      Msg_type        Msg_text
21941 test.t1 optimize        status  OK
21942 # check layout success:    1
21943 REPAIR   TABLE t1 EXTENDED;
21944 Table   Op      Msg_type        Msg_text
21945 test.t1 repair  status  OK
21946 # check layout success:    1
21947 TRUNCATE t1;
21948         
21949 # check TRUNCATE success:       1
21950 # check layout success:    1
21951 # End usability test (inc/partition_check.inc)
21952 DROP TABLE t1;
21953 CREATE TABLE t1 (
21954 f_int1 INTEGER,
21955 f_int2 INTEGER,
21956 f_char1 CHAR(20),
21957 f_char2 CHAR(20),
21958 f_charbig VARCHAR(1000)
21961 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
21962 (PARTITION part_1 VALUES LESS THAN (0)
21963 (SUBPARTITION subpart11, SUBPARTITION subpart12),
21964 PARTITION part_2 VALUES LESS THAN (5)
21965 (SUBPARTITION subpart21, SUBPARTITION subpart22),
21966 PARTITION part_3 VALUES LESS THAN (10)
21967 (SUBPARTITION subpart31, SUBPARTITION subpart32),
21968 PARTITION part_4 VALUES LESS THAN (2147483646)
21969 (SUBPARTITION subpart41, SUBPARTITION subpart42));
21970 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21971 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21972 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21973 ALTER TABLE t1 CHECK PARTITION part_1;
21974 Table   Op      Msg_type        Msg_text
21975 test.t1 check   status  OK
21976 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21977 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21978 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21979 # Start usability test (inc/partition_check.inc)
21980 create_command
21981 SHOW CREATE TABLE t1;
21982 Table   Create Table
21983 t1      CREATE TABLE `t1` (
21984   `f_int1` int(11) DEFAULT NULL,
21985   `f_int2` int(11) DEFAULT NULL,
21986   `f_char1` char(20) DEFAULT NULL,
21987   `f_char2` char(20) DEFAULT NULL,
21988   `f_charbig` varchar(1000) DEFAULT NULL
21989 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
21990 /*!50100 PARTITION BY RANGE (f_int1)
21991 SUBPARTITION BY KEY (f_int1)
21992 (PARTITION part_1 VALUES LESS THAN (0)
21993  (SUBPARTITION subpart11 ENGINE = MyISAM,
21994   SUBPARTITION subpart12 ENGINE = MyISAM),
21995  PARTITION part_2 VALUES LESS THAN (5)
21996  (SUBPARTITION subpart21 ENGINE = MyISAM,
21997   SUBPARTITION subpart22 ENGINE = MyISAM),
21998  PARTITION part_3 VALUES LESS THAN (10)
21999  (SUBPARTITION subpart31 ENGINE = MyISAM,
22000   SUBPARTITION subpart32 ENGINE = MyISAM),
22001  PARTITION part_4 VALUES LESS THAN (2147483646)
22002  (SUBPARTITION subpart41 ENGINE = MyISAM,
22003   SUBPARTITION subpart42 ENGINE = MyISAM)) */
22005 unified filelist
22006 t1#P#part_1#SP#subpart11.MYD
22007 t1#P#part_1#SP#subpart11.MYI
22008 t1#P#part_1#SP#subpart12.MYD
22009 t1#P#part_1#SP#subpart12.MYI
22010 t1#P#part_2#SP#subpart21.MYD
22011 t1#P#part_2#SP#subpart21.MYI
22012 t1#P#part_2#SP#subpart22.MYD
22013 t1#P#part_2#SP#subpart22.MYI
22014 t1#P#part_3#SP#subpart31.MYD
22015 t1#P#part_3#SP#subpart31.MYI
22016 t1#P#part_3#SP#subpart32.MYD
22017 t1#P#part_3#SP#subpart32.MYI
22018 t1#P#part_4#SP#subpart41.MYD
22019 t1#P#part_4#SP#subpart41.MYI
22020 t1#P#part_4#SP#subpart42.MYD
22021 t1#P#part_4#SP#subpart42.MYI
22022 t1.frm
22023 t1.par
22025 # check prerequisites-1 success:    1
22026 # check COUNT(*) success:    1
22027 # check MIN/MAX(f_int1) success:    1
22028 # check MIN/MAX(f_int2) success:    1
22029 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22030 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22031 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22032 WHERE f_int1 IN (2,3);
22033 # check prerequisites-3 success:    1
22034 DELETE FROM t1 WHERE f_charbig = 'delete me';
22035 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
22036 # check read via f_int1 success: 1
22037 # check read via f_int2 success: 1
22038         
22039 # check multiple-1 success:     1
22040 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22041         
22042 # check multiple-2 success:     1
22043 INSERT INTO t1 SELECT * FROM t0_template
22044 WHERE MOD(f_int1,3) = 0;
22045         
22046 # check multiple-3 success:     1
22047 UPDATE t1 SET f_int1 = f_int1 + @max_row
22048 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22049 AND @max_row_div2 + @max_row_div4;
22050         
22051 # check multiple-4 success:     1
22052 DELETE FROM t1
22053 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22054 AND @max_row_div2 + @max_row_div4 + @max_row;
22055         
22056 # check multiple-5 success:     1
22057 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22058 INSERT INTO t1
22059 SET f_int1 = @cur_value , f_int2 = @cur_value,
22060 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22061 f_charbig = '#SINGLE#';
22062         
22063 # check single-1 success:       1
22064 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22065 INSERT INTO t1
22066 SET f_int1 = @cur_value , f_int2 = @cur_value,
22067 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22068 f_charbig = '#SINGLE#';
22069         
22070 # check single-2 success:       1
22071 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22072 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22073 UPDATE t1 SET f_int1 = @cur_value2
22074 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22075         
22076 # check single-3 success:       1
22077 SET @cur_value1= -1;
22078 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22079 UPDATE t1 SET f_int1 = @cur_value1
22080 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22081         
22082 # check single-4 success:       1
22083 SELECT MAX(f_int1) INTO @cur_value FROM t1;
22084 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22085         
22086 # check single-5 success:       1
22087 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22088         
22089 # check single-6 success:       1
22090 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22091 ERROR HY000: Table has no partition for value 2147483647
22092 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22093 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22094 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22095 f_charbig = '#NULL#';
22096 INSERT INTO t1
22097 SET f_int1 = NULL , f_int2 = -@max_row,
22098 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22099 f_charbig = '#NULL#';
22100 # check null success:    1
22101         
22102 # check null-1 success:         1
22103 UPDATE t1 SET f_int1 = -@max_row
22104 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22105 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22106         
22107 # check null-2 success:         1
22108 UPDATE t1 SET f_int1 = NULL
22109 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22110 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22111         
22112 # check null-3 success:         1
22113 DELETE FROM t1
22114 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22115 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22116         
22117 # check null-4 success:         1
22118 DELETE FROM t1
22119 WHERE f_int1 = 0 AND f_int2 = 0
22120 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22121 AND f_charbig = '#NULL#';
22122 SET AUTOCOMMIT= 0;
22123 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22124 SELECT f_int1, f_int1, '', '', 'was inserted'
22125 FROM t0_template source_tab
22126 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22127         
22128 # check transactions-1 success:         1
22129 COMMIT WORK;
22130         
22131 # check transactions-2 success:         1
22132 ROLLBACK WORK;
22133         
22134 # check transactions-3 success:         1
22135 DELETE FROM t1 WHERE f_charbig = 'was inserted';
22136 COMMIT WORK;
22137 ROLLBACK WORK;
22138         
22139 # check transactions-4 success:         1
22140 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22141 SELECT f_int1, f_int1, '', '', 'was inserted'
22142 FROM t0_template source_tab
22143 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22144         
22145 # check transactions-5 success:         1
22146 ROLLBACK WORK;
22147 Warnings:
22148 Warning 1196    Some non-transactional changed tables couldn't be rolled back
22149         
22150 # check transactions-6 success:         1
22151 # INFO: Storage engine used for t1 seems to be not transactional.
22152 COMMIT;
22153         
22154 # check transactions-7 success:         1
22155 DELETE FROM t1 WHERE f_charbig = 'was inserted';
22156 COMMIT WORK;
22157 SET @@session.sql_mode = 'traditional';
22158 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22159 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22160 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22161 '', '', 'was inserted' FROM t0_template
22162 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22163 ERROR 22012: Division by 0
22164 COMMIT;
22165         
22166 # check transactions-8 success:         1
22167 # INFO: Storage engine used for t1 seems to be unable to revert
22168 #       changes made by the failing statement.
22169 SET @@session.sql_mode = '';
22170 SET AUTOCOMMIT= 1;
22171 DELETE FROM t1 WHERE f_charbig = 'was inserted';
22172 COMMIT WORK;
22173 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22174         
22175 # check special-1 success:      1
22176 UPDATE t1 SET f_charbig = '';
22177         
22178 # check special-2 success:      1
22179 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22180 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22181 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22182 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22183 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22184 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22185 'just inserted' FROM t0_template
22186 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22187 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22188 BEGIN
22189 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22190 f_charbig = 'updated by trigger'
22191       WHERE f_int1 = new.f_int1;
22192 END|
22193 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22194 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22195 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22196         
22197 # check trigger-1 success:      1
22198 DROP TRIGGER trg_1;
22199 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22200 f_int2 = CAST(f_char1 AS SIGNED INT),
22201 f_charbig = 'just inserted'
22202    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22203 DELETE FROM t0_aux
22204 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22205 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22206 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22207 'just inserted' FROM t0_template
22208 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22209 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22210 BEGIN
22211 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22212 f_charbig = 'updated by trigger'
22213       WHERE f_int1 = new.f_int1;
22214 END|
22215 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22216 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22217 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22218         
22219 # check trigger-2 success:      1
22220 DROP TRIGGER trg_1;
22221 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22222 f_int2 = CAST(f_char1 AS SIGNED INT),
22223 f_charbig = 'just inserted'
22224    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22225 DELETE FROM t0_aux
22226 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22227 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22228 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22229 'just inserted' FROM t0_template
22230 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22231 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22232 BEGIN
22233 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22234 f_charbig = 'updated by trigger'
22235       WHERE f_int1 = new.f_int1;
22236 END|
22237 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
22238 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22239         
22240 # check trigger-3 success:      1
22241 DROP TRIGGER trg_1;
22242 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22243 f_int2 = CAST(f_char1 AS SIGNED INT),
22244 f_charbig = 'just inserted'
22245    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22246 DELETE FROM t0_aux
22247 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22248 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22249 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22250 'just inserted' FROM t0_template
22251 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22252 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22253 BEGIN
22254 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22255 f_charbig = 'updated by trigger'
22256       WHERE f_int1 = - old.f_int1;
22257 END|
22258 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
22259 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22260         
22261 # check trigger-4 success:      1
22262 DROP TRIGGER trg_1;
22263 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22264 f_int2 = CAST(f_char1 AS SIGNED INT),
22265 f_charbig = 'just inserted'
22266    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22267 DELETE FROM t0_aux
22268 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22269 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22270 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22271 'just inserted' FROM t0_template
22272 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22273 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22274 BEGIN
22275 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22276 f_charbig = 'updated by trigger'
22277       WHERE f_int1 = new.f_int1;
22278 END|
22279 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
22280 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22281         
22282 # check trigger-5 success:      1
22283 DROP TRIGGER trg_1;
22284 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22285 f_int2 = CAST(f_char1 AS SIGNED INT),
22286 f_charbig = 'just inserted'
22287    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22288 DELETE FROM t0_aux
22289 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22290 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22291 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22292 'just inserted' FROM t0_template
22293 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22294 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22295 BEGIN
22296 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22297 f_charbig = 'updated by trigger'
22298       WHERE f_int1 = - old.f_int1;
22299 END|
22300 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
22301 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22302         
22303 # check trigger-6 success:      1
22304 DROP TRIGGER trg_1;
22305 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22306 f_int2 = CAST(f_char1 AS SIGNED INT),
22307 f_charbig = 'just inserted'
22308    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22309 DELETE FROM t0_aux
22310 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22311 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22312 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22313 'just inserted' FROM t0_template
22314 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22315 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22316 BEGIN
22317 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22318 f_charbig = 'updated by trigger'
22319       WHERE f_int1 = - old.f_int1;
22320 END|
22321 DELETE FROM t0_aux
22322 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22323         
22324 # check trigger-7 success:      1
22325 DROP TRIGGER trg_1;
22326 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22327 f_int2 = CAST(f_char1 AS SIGNED INT),
22328 f_charbig = 'just inserted'
22329    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22330 DELETE FROM t0_aux
22331 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22332 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22333 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22334 'just inserted' FROM t0_template
22335 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22336 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22337 BEGIN
22338 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22339 f_charbig = 'updated by trigger'
22340       WHERE f_int1 = - old.f_int1;
22341 END|
22342 DELETE FROM t0_aux
22343 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22344         
22345 # check trigger-8 success:      1
22346 DROP TRIGGER trg_1;
22347 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22348 f_int2 = CAST(f_char1 AS SIGNED INT),
22349 f_charbig = 'just inserted'
22350    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22351 DELETE FROM t0_aux
22352 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22353 DELETE FROM t1
22354 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22355 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22356 BEGIN
22357 SET new.f_int1 = old.f_int1 + @max_row,
22358 new.f_int2 = old.f_int2 - @max_row,
22359 new.f_charbig = '####updated per update trigger####';
22360 END|
22361 UPDATE t1
22362 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22363 f_charbig = '####updated per update statement itself####';
22364         
22365 # check trigger-9 success:      1
22366 DROP TRIGGER trg_2;
22367 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22368 f_int2 = CAST(f_char1 AS SIGNED INT),
22369 f_charbig = CONCAT('===',f_char1,'===');
22370 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22371 BEGIN
22372 SET new.f_int1 = new.f_int1 + @max_row,
22373 new.f_int2 = new.f_int2 - @max_row,
22374 new.f_charbig = '####updated per update trigger####';
22375 END|
22376 UPDATE t1
22377 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22378 f_charbig = '####updated per update statement itself####';
22379         
22380 # check trigger-10 success:     1
22381 DROP TRIGGER trg_2;
22382 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22383 f_int2 = CAST(f_char1 AS SIGNED INT),
22384 f_charbig = CONCAT('===',f_char1,'===');
22385 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22386 BEGIN
22387 SET new.f_int1 = @my_max1 + @counter,
22388 new.f_int2 = @my_min2 - @counter,
22389 new.f_charbig = '####updated per insert trigger####';
22390 SET @counter = @counter + 1;
22391 END|
22392 SET @counter = 1;
22393 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22394 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22395 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22396 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22397 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22398 ORDER BY f_int1;
22399 DROP TRIGGER trg_3;
22400         
22401 # check trigger-11 success:     1
22402 DELETE FROM t1
22403 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22404 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22405 AND f_charbig = '####updated per insert trigger####';
22406 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22407 BEGIN
22408 SET new.f_int1 = @my_max1 + @counter,
22409 new.f_int2 = @my_min2 - @counter,
22410 new.f_charbig = '####updated per insert trigger####';
22411 SET @counter = @counter + 1;
22412 END|
22413 SET @counter = 1;
22414 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22415 INSERT INTO t1 (f_char1, f_char2, f_charbig)
22416 SELECT CAST(f_int1 AS CHAR),
22417 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22418 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22419 ORDER BY f_int1;
22420 DROP TRIGGER trg_3;
22421         
22422 # check trigger-12 success:     1
22423 DELETE FROM t1
22424 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22425 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22426 AND f_charbig = '####updated per insert trigger####';
22427 ANALYZE  TABLE t1;
22428 Table   Op      Msg_type        Msg_text
22429 test.t1 analyze status  OK
22430 CHECK    TABLE t1 EXTENDED;
22431 Table   Op      Msg_type        Msg_text
22432 test.t1 check   status  OK
22433 CHECKSUM TABLE t1 EXTENDED;
22434 Table   Checksum
22435 test.t1 <some_value>
22436 OPTIMIZE TABLE t1;
22437 Table   Op      Msg_type        Msg_text
22438 test.t1 optimize        status  OK
22439 # check layout success:    1
22440 REPAIR   TABLE t1 EXTENDED;
22441 Table   Op      Msg_type        Msg_text
22442 test.t1 repair  status  OK
22443 # check layout success:    1
22444 TRUNCATE t1;
22445         
22446 # check TRUNCATE success:       1
22447 # check layout success:    1
22448 # End usability test (inc/partition_check.inc)
22449 DROP TABLE t1;
22450 CREATE TABLE t1 (
22451 f_int1 INTEGER,
22452 f_int2 INTEGER,
22453 f_char1 CHAR(20),
22454 f_char2 CHAR(20),
22455 f_charbig VARCHAR(1000)
22458 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
22459 (PARTITION part_1 VALUES IN (0)
22460 (SUBPARTITION sp11, SUBPARTITION sp12),
22461 PARTITION part_2 VALUES IN (1)
22462 (SUBPARTITION sp21, SUBPARTITION sp22),
22463 PARTITION part_3 VALUES IN (2)
22464 (SUBPARTITION sp31, SUBPARTITION sp32),
22465 PARTITION part_4 VALUES IN (NULL)
22466 (SUBPARTITION sp41, SUBPARTITION sp42));
22467 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22468 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22469 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22470 ALTER TABLE t1 CHECK PARTITION part_1;
22471 Table   Op      Msg_type        Msg_text
22472 test.t1 check   status  OK
22473 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22474 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22475 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22476 # Start usability test (inc/partition_check.inc)
22477 create_command
22478 SHOW CREATE TABLE t1;
22479 Table   Create Table
22480 t1      CREATE TABLE `t1` (
22481   `f_int1` int(11) DEFAULT NULL,
22482   `f_int2` int(11) DEFAULT NULL,
22483   `f_char1` char(20) DEFAULT NULL,
22484   `f_char2` char(20) DEFAULT NULL,
22485   `f_charbig` varchar(1000) DEFAULT NULL
22486 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
22487 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
22488 SUBPARTITION BY HASH (f_int1 + 1)
22489 (PARTITION part_1 VALUES IN (0)
22490  (SUBPARTITION sp11 ENGINE = MyISAM,
22491   SUBPARTITION sp12 ENGINE = MyISAM),
22492  PARTITION part_2 VALUES IN (1)
22493  (SUBPARTITION sp21 ENGINE = MyISAM,
22494   SUBPARTITION sp22 ENGINE = MyISAM),
22495  PARTITION part_3 VALUES IN (2)
22496  (SUBPARTITION sp31 ENGINE = MyISAM,
22497   SUBPARTITION sp32 ENGINE = MyISAM),
22498  PARTITION part_4 VALUES IN (NULL)
22499  (SUBPARTITION sp41 ENGINE = MyISAM,
22500   SUBPARTITION sp42 ENGINE = MyISAM)) */
22502 unified filelist
22503 t1#P#part_1#SP#sp11.MYD
22504 t1#P#part_1#SP#sp11.MYI
22505 t1#P#part_1#SP#sp12.MYD
22506 t1#P#part_1#SP#sp12.MYI
22507 t1#P#part_2#SP#sp21.MYD
22508 t1#P#part_2#SP#sp21.MYI
22509 t1#P#part_2#SP#sp22.MYD
22510 t1#P#part_2#SP#sp22.MYI
22511 t1#P#part_3#SP#sp31.MYD
22512 t1#P#part_3#SP#sp31.MYI
22513 t1#P#part_3#SP#sp32.MYD
22514 t1#P#part_3#SP#sp32.MYI
22515 t1#P#part_4#SP#sp41.MYD
22516 t1#P#part_4#SP#sp41.MYI
22517 t1#P#part_4#SP#sp42.MYD
22518 t1#P#part_4#SP#sp42.MYI
22519 t1.frm
22520 t1.par
22522 # check prerequisites-1 success:    1
22523 # check COUNT(*) success:    1
22524 # check MIN/MAX(f_int1) success:    1
22525 # check MIN/MAX(f_int2) success:    1
22526 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22527 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22528 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22529 WHERE f_int1 IN (2,3);
22530 # check prerequisites-3 success:    1
22531 DELETE FROM t1 WHERE f_charbig = 'delete me';
22532 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
22533 # check read via f_int1 success: 1
22534 # check read via f_int2 success: 1
22535         
22536 # check multiple-1 success:     1
22537 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22538         
22539 # check multiple-2 success:     1
22540 INSERT INTO t1 SELECT * FROM t0_template
22541 WHERE MOD(f_int1,3) = 0;
22542         
22543 # check multiple-3 success:     1
22544 UPDATE t1 SET f_int1 = f_int1 + @max_row
22545 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22546 AND @max_row_div2 + @max_row_div4;
22547         
22548 # check multiple-4 success:     1
22549 DELETE FROM t1
22550 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22551 AND @max_row_div2 + @max_row_div4 + @max_row;
22552         
22553 # check multiple-5 success:     1
22554 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22555 INSERT INTO t1
22556 SET f_int1 = @cur_value , f_int2 = @cur_value,
22557 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22558 f_charbig = '#SINGLE#';
22559         
22560 # check single-1 success:       1
22561 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22562 INSERT INTO t1
22563 SET f_int1 = @cur_value , f_int2 = @cur_value,
22564 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22565 f_charbig = '#SINGLE#';
22566         
22567 # check single-2 success:       1
22568 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22569 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22570 UPDATE t1 SET f_int1 = @cur_value2
22571 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22572         
22573 # check single-3 success:       1
22574 SET @cur_value1= -1;
22575 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22576 UPDATE t1 SET f_int1 = @cur_value1
22577 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22578         
22579 # check single-4 success:       1
22580 SELECT MAX(f_int1) INTO @cur_value FROM t1;
22581 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22582         
22583 # check single-5 success:       1
22584 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22585         
22586 # check single-6 success:       1
22587 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22588         
22589 # check single-7 success:       1
22590 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22591 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22592 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22593 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22594 f_charbig = '#NULL#';
22595 INSERT INTO t1
22596 SET f_int1 = NULL , f_int2 = -@max_row,
22597 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22598 f_charbig = '#NULL#';
22599 # check null success:    1
22600         
22601 # check null-1 success:         1
22602 UPDATE t1 SET f_int1 = -@max_row
22603 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22604 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22605         
22606 # check null-2 success:         1
22607 UPDATE t1 SET f_int1 = NULL
22608 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22609 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22610         
22611 # check null-3 success:         1
22612 DELETE FROM t1
22613 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22614 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22615         
22616 # check null-4 success:         1
22617 DELETE FROM t1
22618 WHERE f_int1 = 0 AND f_int2 = 0
22619 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22620 AND f_charbig = '#NULL#';
22621 SET AUTOCOMMIT= 0;
22622 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22623 SELECT f_int1, f_int1, '', '', 'was inserted'
22624 FROM t0_template source_tab
22625 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22626         
22627 # check transactions-1 success:         1
22628 COMMIT WORK;
22629         
22630 # check transactions-2 success:         1
22631 ROLLBACK WORK;
22632         
22633 # check transactions-3 success:         1
22634 DELETE FROM t1 WHERE f_charbig = 'was inserted';
22635 COMMIT WORK;
22636 ROLLBACK WORK;
22637         
22638 # check transactions-4 success:         1
22639 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22640 SELECT f_int1, f_int1, '', '', 'was inserted'
22641 FROM t0_template source_tab
22642 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22643         
22644 # check transactions-5 success:         1
22645 ROLLBACK WORK;
22646 Warnings:
22647 Warning 1196    Some non-transactional changed tables couldn't be rolled back
22648         
22649 # check transactions-6 success:         1
22650 # INFO: Storage engine used for t1 seems to be not transactional.
22651 COMMIT;
22652         
22653 # check transactions-7 success:         1
22654 DELETE FROM t1 WHERE f_charbig = 'was inserted';
22655 COMMIT WORK;
22656 SET @@session.sql_mode = 'traditional';
22657 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22658 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22659 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22660 '', '', 'was inserted' FROM t0_template
22661 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22662 ERROR 22012: Division by 0
22663 COMMIT;
22664         
22665 # check transactions-8 success:         1
22666 # INFO: Storage engine used for t1 seems to be unable to revert
22667 #       changes made by the failing statement.
22668 SET @@session.sql_mode = '';
22669 SET AUTOCOMMIT= 1;
22670 DELETE FROM t1 WHERE f_charbig = 'was inserted';
22671 COMMIT WORK;
22672 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22673         
22674 # check special-1 success:      1
22675 UPDATE t1 SET f_charbig = '';
22676         
22677 # check special-2 success:      1
22678 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22679 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22680 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22681 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22682 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22683 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22684 'just inserted' FROM t0_template
22685 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22686 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22687 BEGIN
22688 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22689 f_charbig = 'updated by trigger'
22690       WHERE f_int1 = new.f_int1;
22691 END|
22692 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22693 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22694 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22695         
22696 # check trigger-1 success:      1
22697 DROP TRIGGER trg_1;
22698 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22699 f_int2 = CAST(f_char1 AS SIGNED INT),
22700 f_charbig = 'just inserted'
22701    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22702 DELETE FROM t0_aux
22703 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22704 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22705 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22706 'just inserted' FROM t0_template
22707 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22708 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22709 BEGIN
22710 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22711 f_charbig = 'updated by trigger'
22712       WHERE f_int1 = new.f_int1;
22713 END|
22714 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22715 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22716 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22717         
22718 # check trigger-2 success:      1
22719 DROP TRIGGER trg_1;
22720 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22721 f_int2 = CAST(f_char1 AS SIGNED INT),
22722 f_charbig = 'just inserted'
22723    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22724 DELETE FROM t0_aux
22725 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22726 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22727 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22728 'just inserted' FROM t0_template
22729 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22730 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22731 BEGIN
22732 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22733 f_charbig = 'updated by trigger'
22734       WHERE f_int1 = new.f_int1;
22735 END|
22736 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
22737 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22738         
22739 # check trigger-3 success:      1
22740 DROP TRIGGER trg_1;
22741 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22742 f_int2 = CAST(f_char1 AS SIGNED INT),
22743 f_charbig = 'just inserted'
22744    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22745 DELETE FROM t0_aux
22746 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22747 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22748 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22749 'just inserted' FROM t0_template
22750 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22751 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22752 BEGIN
22753 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22754 f_charbig = 'updated by trigger'
22755       WHERE f_int1 = - old.f_int1;
22756 END|
22757 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
22758 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22759         
22760 # check trigger-4 success:      1
22761 DROP TRIGGER trg_1;
22762 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22763 f_int2 = CAST(f_char1 AS SIGNED INT),
22764 f_charbig = 'just inserted'
22765    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22766 DELETE FROM t0_aux
22767 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22768 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22769 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22770 'just inserted' FROM t0_template
22771 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22772 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22773 BEGIN
22774 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22775 f_charbig = 'updated by trigger'
22776       WHERE f_int1 = new.f_int1;
22777 END|
22778 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
22779 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22780         
22781 # check trigger-5 success:      1
22782 DROP TRIGGER trg_1;
22783 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22784 f_int2 = CAST(f_char1 AS SIGNED INT),
22785 f_charbig = 'just inserted'
22786    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22787 DELETE FROM t0_aux
22788 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22789 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22790 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22791 'just inserted' FROM t0_template
22792 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22793 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22794 BEGIN
22795 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22796 f_charbig = 'updated by trigger'
22797       WHERE f_int1 = - old.f_int1;
22798 END|
22799 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
22800 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22801         
22802 # check trigger-6 success:      1
22803 DROP TRIGGER trg_1;
22804 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22805 f_int2 = CAST(f_char1 AS SIGNED INT),
22806 f_charbig = 'just inserted'
22807    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22808 DELETE FROM t0_aux
22809 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22810 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22811 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22812 'just inserted' FROM t0_template
22813 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22814 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22815 BEGIN
22816 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22817 f_charbig = 'updated by trigger'
22818       WHERE f_int1 = - old.f_int1;
22819 END|
22820 DELETE FROM t0_aux
22821 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22822         
22823 # check trigger-7 success:      1
22824 DROP TRIGGER trg_1;
22825 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22826 f_int2 = CAST(f_char1 AS SIGNED INT),
22827 f_charbig = 'just inserted'
22828    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22829 DELETE FROM t0_aux
22830 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22831 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22832 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22833 'just inserted' FROM t0_template
22834 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22835 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22836 BEGIN
22837 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22838 f_charbig = 'updated by trigger'
22839       WHERE f_int1 = - old.f_int1;
22840 END|
22841 DELETE FROM t0_aux
22842 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22843         
22844 # check trigger-8 success:      1
22845 DROP TRIGGER trg_1;
22846 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22847 f_int2 = CAST(f_char1 AS SIGNED INT),
22848 f_charbig = 'just inserted'
22849    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22850 DELETE FROM t0_aux
22851 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22852 DELETE FROM t1
22853 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22854 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22855 BEGIN
22856 SET new.f_int1 = old.f_int1 + @max_row,
22857 new.f_int2 = old.f_int2 - @max_row,
22858 new.f_charbig = '####updated per update trigger####';
22859 END|
22860 UPDATE t1
22861 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22862 f_charbig = '####updated per update statement itself####';
22863         
22864 # check trigger-9 success:      1
22865 DROP TRIGGER trg_2;
22866 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22867 f_int2 = CAST(f_char1 AS SIGNED INT),
22868 f_charbig = CONCAT('===',f_char1,'===');
22869 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22870 BEGIN
22871 SET new.f_int1 = new.f_int1 + @max_row,
22872 new.f_int2 = new.f_int2 - @max_row,
22873 new.f_charbig = '####updated per update trigger####';
22874 END|
22875 UPDATE t1
22876 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22877 f_charbig = '####updated per update statement itself####';
22878         
22879 # check trigger-10 success:     1
22880 DROP TRIGGER trg_2;
22881 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22882 f_int2 = CAST(f_char1 AS SIGNED INT),
22883 f_charbig = CONCAT('===',f_char1,'===');
22884 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22885 BEGIN
22886 SET new.f_int1 = @my_max1 + @counter,
22887 new.f_int2 = @my_min2 - @counter,
22888 new.f_charbig = '####updated per insert trigger####';
22889 SET @counter = @counter + 1;
22890 END|
22891 SET @counter = 1;
22892 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22893 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22894 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22895 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22896 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22897 ORDER BY f_int1;
22898 DROP TRIGGER trg_3;
22899         
22900 # check trigger-11 success:     1
22901 DELETE FROM t1
22902 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22903 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22904 AND f_charbig = '####updated per insert trigger####';
22905 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22906 BEGIN
22907 SET new.f_int1 = @my_max1 + @counter,
22908 new.f_int2 = @my_min2 - @counter,
22909 new.f_charbig = '####updated per insert trigger####';
22910 SET @counter = @counter + 1;
22911 END|
22912 SET @counter = 1;
22913 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22914 INSERT INTO t1 (f_char1, f_char2, f_charbig)
22915 SELECT CAST(f_int1 AS CHAR),
22916 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22917 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22918 ORDER BY f_int1;
22919 DROP TRIGGER trg_3;
22920         
22921 # check trigger-12 success:     1
22922 DELETE FROM t1
22923 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22924 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22925 AND f_charbig = '####updated per insert trigger####';
22926 ANALYZE  TABLE t1;
22927 Table   Op      Msg_type        Msg_text
22928 test.t1 analyze status  OK
22929 CHECK    TABLE t1 EXTENDED;
22930 Table   Op      Msg_type        Msg_text
22931 test.t1 check   status  OK
22932 CHECKSUM TABLE t1 EXTENDED;
22933 Table   Checksum
22934 test.t1 <some_value>
22935 OPTIMIZE TABLE t1;
22936 Table   Op      Msg_type        Msg_text
22937 test.t1 optimize        status  OK
22938 # check layout success:    1
22939 REPAIR   TABLE t1 EXTENDED;
22940 Table   Op      Msg_type        Msg_text
22941 test.t1 repair  status  OK
22942 # check layout success:    1
22943 TRUNCATE t1;
22944         
22945 # check TRUNCATE success:       1
22946 # check layout success:    1
22947 # End usability test (inc/partition_check.inc)
22948 DROP TABLE t1;
22949 CREATE TABLE t1 (
22950 f_int1 INTEGER,
22951 f_int2 INTEGER,
22952 f_char1 CHAR(20),
22953 f_char2 CHAR(20),
22954 f_charbig VARCHAR(1000)
22957 PARTITION BY LIST(ABS(MOD(f_int1,2)))
22958 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
22959 (PARTITION part_1 VALUES IN (0),
22960  PARTITION part_2 VALUES IN (1),
22961  PARTITION part_3 VALUES IN (NULL));
22962 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22963 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22964 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22965 ALTER TABLE t1 CHECK PARTITION part_1;
22966 Table   Op      Msg_type        Msg_text
22967 test.t1 check   status  OK
22968 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22969 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22970 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22971 # Start usability test (inc/partition_check.inc)
22972 create_command
22973 SHOW CREATE TABLE t1;
22974 Table   Create Table
22975 t1      CREATE TABLE `t1` (
22976   `f_int1` int(11) DEFAULT NULL,
22977   `f_int2` int(11) DEFAULT NULL,
22978   `f_char1` char(20) DEFAULT NULL,
22979   `f_char2` char(20) DEFAULT NULL,
22980   `f_charbig` varchar(1000) DEFAULT NULL
22981 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
22982 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
22983 SUBPARTITION BY KEY (f_int1)
22984 SUBPARTITIONS 3
22985 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
22986  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
22987  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
22989 unified filelist
22990 t1#P#part_1#SP#part_1sp0.MYD
22991 t1#P#part_1#SP#part_1sp0.MYI
22992 t1#P#part_1#SP#part_1sp1.MYD
22993 t1#P#part_1#SP#part_1sp1.MYI
22994 t1#P#part_1#SP#part_1sp2.MYD
22995 t1#P#part_1#SP#part_1sp2.MYI
22996 t1#P#part_2#SP#part_2sp0.MYD
22997 t1#P#part_2#SP#part_2sp0.MYI
22998 t1#P#part_2#SP#part_2sp1.MYD
22999 t1#P#part_2#SP#part_2sp1.MYI
23000 t1#P#part_2#SP#part_2sp2.MYD
23001 t1#P#part_2#SP#part_2sp2.MYI
23002 t1#P#part_3#SP#part_3sp0.MYD
23003 t1#P#part_3#SP#part_3sp0.MYI
23004 t1#P#part_3#SP#part_3sp1.MYD
23005 t1#P#part_3#SP#part_3sp1.MYI
23006 t1#P#part_3#SP#part_3sp2.MYD
23007 t1#P#part_3#SP#part_3sp2.MYI
23008 t1.frm
23009 t1.par
23011 # check prerequisites-1 success:    1
23012 # check COUNT(*) success:    1
23013 # check MIN/MAX(f_int1) success:    1
23014 # check MIN/MAX(f_int2) success:    1
23015 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23016 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23017 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23018 WHERE f_int1 IN (2,3);
23019 # check prerequisites-3 success:    1
23020 DELETE FROM t1 WHERE f_charbig = 'delete me';
23021 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
23022 # check read via f_int1 success: 1
23023 # check read via f_int2 success: 1
23024         
23025 # check multiple-1 success:     1
23026 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23027         
23028 # check multiple-2 success:     1
23029 INSERT INTO t1 SELECT * FROM t0_template
23030 WHERE MOD(f_int1,3) = 0;
23031         
23032 # check multiple-3 success:     1
23033 UPDATE t1 SET f_int1 = f_int1 + @max_row
23034 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23035 AND @max_row_div2 + @max_row_div4;
23036         
23037 # check multiple-4 success:     1
23038 DELETE FROM t1
23039 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23040 AND @max_row_div2 + @max_row_div4 + @max_row;
23041         
23042 # check multiple-5 success:     1
23043 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23044 INSERT INTO t1
23045 SET f_int1 = @cur_value , f_int2 = @cur_value,
23046 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23047 f_charbig = '#SINGLE#';
23048         
23049 # check single-1 success:       1
23050 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23051 INSERT INTO t1
23052 SET f_int1 = @cur_value , f_int2 = @cur_value,
23053 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23054 f_charbig = '#SINGLE#';
23055         
23056 # check single-2 success:       1
23057 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23058 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23059 UPDATE t1 SET f_int1 = @cur_value2
23060 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23061         
23062 # check single-3 success:       1
23063 SET @cur_value1= -1;
23064 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23065 UPDATE t1 SET f_int1 = @cur_value1
23066 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23067         
23068 # check single-4 success:       1
23069 SELECT MAX(f_int1) INTO @cur_value FROM t1;
23070 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23071         
23072 # check single-5 success:       1
23073 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23074         
23075 # check single-6 success:       1
23076 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23077         
23078 # check single-7 success:       1
23079 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
23080 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23081 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23082 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23083 f_charbig = '#NULL#';
23084 INSERT INTO t1
23085 SET f_int1 = NULL , f_int2 = -@max_row,
23086 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23087 f_charbig = '#NULL#';
23088 # check null success:    1
23089         
23090 # check null-1 success:         1
23091 UPDATE t1 SET f_int1 = -@max_row
23092 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23093 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23094         
23095 # check null-2 success:         1
23096 UPDATE t1 SET f_int1 = NULL
23097 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23098 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23099         
23100 # check null-3 success:         1
23101 DELETE FROM t1
23102 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23103 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23104         
23105 # check null-4 success:         1
23106 DELETE FROM t1
23107 WHERE f_int1 = 0 AND f_int2 = 0
23108 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23109 AND f_charbig = '#NULL#';
23110 SET AUTOCOMMIT= 0;
23111 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23112 SELECT f_int1, f_int1, '', '', 'was inserted'
23113 FROM t0_template source_tab
23114 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23115         
23116 # check transactions-1 success:         1
23117 COMMIT WORK;
23118         
23119 # check transactions-2 success:         1
23120 ROLLBACK WORK;
23121         
23122 # check transactions-3 success:         1
23123 DELETE FROM t1 WHERE f_charbig = 'was inserted';
23124 COMMIT WORK;
23125 ROLLBACK WORK;
23126         
23127 # check transactions-4 success:         1
23128 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23129 SELECT f_int1, f_int1, '', '', 'was inserted'
23130 FROM t0_template source_tab
23131 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23132         
23133 # check transactions-5 success:         1
23134 ROLLBACK WORK;
23135 Warnings:
23136 Warning 1196    Some non-transactional changed tables couldn't be rolled back
23137         
23138 # check transactions-6 success:         1
23139 # INFO: Storage engine used for t1 seems to be not transactional.
23140 COMMIT;
23141         
23142 # check transactions-7 success:         1
23143 DELETE FROM t1 WHERE f_charbig = 'was inserted';
23144 COMMIT WORK;
23145 SET @@session.sql_mode = 'traditional';
23146 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23147 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23148 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23149 '', '', 'was inserted' FROM t0_template
23150 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23151 ERROR 22012: Division by 0
23152 COMMIT;
23153         
23154 # check transactions-8 success:         1
23155 # INFO: Storage engine used for t1 seems to be unable to revert
23156 #       changes made by the failing statement.
23157 SET @@session.sql_mode = '';
23158 SET AUTOCOMMIT= 1;
23159 DELETE FROM t1 WHERE f_charbig = 'was inserted';
23160 COMMIT WORK;
23161 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23162         
23163 # check special-1 success:      1
23164 UPDATE t1 SET f_charbig = '';
23165         
23166 # check special-2 success:      1
23167 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23168 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23169 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23170 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23171 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23172 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23173 'just inserted' FROM t0_template
23174 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23175 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23176 BEGIN
23177 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23178 f_charbig = 'updated by trigger'
23179       WHERE f_int1 = new.f_int1;
23180 END|
23181 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23182 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23183 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23184         
23185 # check trigger-1 success:      1
23186 DROP TRIGGER trg_1;
23187 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23188 f_int2 = CAST(f_char1 AS SIGNED INT),
23189 f_charbig = 'just inserted'
23190    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23191 DELETE FROM t0_aux
23192 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23193 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23194 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23195 'just inserted' FROM t0_template
23196 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23197 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23198 BEGIN
23199 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23200 f_charbig = 'updated by trigger'
23201       WHERE f_int1 = new.f_int1;
23202 END|
23203 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23204 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23205 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23206         
23207 # check trigger-2 success:      1
23208 DROP TRIGGER trg_1;
23209 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23210 f_int2 = CAST(f_char1 AS SIGNED INT),
23211 f_charbig = 'just inserted'
23212    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23213 DELETE FROM t0_aux
23214 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23215 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23216 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23217 'just inserted' FROM t0_template
23218 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23219 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23220 BEGIN
23221 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23222 f_charbig = 'updated by trigger'
23223       WHERE f_int1 = new.f_int1;
23224 END|
23225 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23226 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23227         
23228 # check trigger-3 success:      1
23229 DROP TRIGGER trg_1;
23230 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23231 f_int2 = CAST(f_char1 AS SIGNED INT),
23232 f_charbig = 'just inserted'
23233    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23234 DELETE FROM t0_aux
23235 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23236 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23237 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23238 'just inserted' FROM t0_template
23239 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23240 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23241 BEGIN
23242 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23243 f_charbig = 'updated by trigger'
23244       WHERE f_int1 = - old.f_int1;
23245 END|
23246 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23247 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23248         
23249 # check trigger-4 success:      1
23250 DROP TRIGGER trg_1;
23251 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23252 f_int2 = CAST(f_char1 AS SIGNED INT),
23253 f_charbig = 'just inserted'
23254    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23255 DELETE FROM t0_aux
23256 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23257 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23258 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23259 'just inserted' FROM t0_template
23260 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23261 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23262 BEGIN
23263 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23264 f_charbig = 'updated by trigger'
23265       WHERE f_int1 = new.f_int1;
23266 END|
23267 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23268 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23269         
23270 # check trigger-5 success:      1
23271 DROP TRIGGER trg_1;
23272 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23273 f_int2 = CAST(f_char1 AS SIGNED INT),
23274 f_charbig = 'just inserted'
23275    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23276 DELETE FROM t0_aux
23277 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23278 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23279 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23280 'just inserted' FROM t0_template
23281 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23282 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23283 BEGIN
23284 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23285 f_charbig = 'updated by trigger'
23286       WHERE f_int1 = - old.f_int1;
23287 END|
23288 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23289 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23290         
23291 # check trigger-6 success:      1
23292 DROP TRIGGER trg_1;
23293 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23294 f_int2 = CAST(f_char1 AS SIGNED INT),
23295 f_charbig = 'just inserted'
23296    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23297 DELETE FROM t0_aux
23298 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23299 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23300 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23301 'just inserted' FROM t0_template
23302 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23303 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23304 BEGIN
23305 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23306 f_charbig = 'updated by trigger'
23307       WHERE f_int1 = - old.f_int1;
23308 END|
23309 DELETE FROM t0_aux
23310 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23311         
23312 # check trigger-7 success:      1
23313 DROP TRIGGER trg_1;
23314 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23315 f_int2 = CAST(f_char1 AS SIGNED INT),
23316 f_charbig = 'just inserted'
23317    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23318 DELETE FROM t0_aux
23319 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23320 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23321 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23322 'just inserted' FROM t0_template
23323 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23324 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23325 BEGIN
23326 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23327 f_charbig = 'updated by trigger'
23328       WHERE f_int1 = - old.f_int1;
23329 END|
23330 DELETE FROM t0_aux
23331 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23332         
23333 # check trigger-8 success:      1
23334 DROP TRIGGER trg_1;
23335 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23336 f_int2 = CAST(f_char1 AS SIGNED INT),
23337 f_charbig = 'just inserted'
23338    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23339 DELETE FROM t0_aux
23340 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23341 DELETE FROM t1
23342 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23343 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23344 BEGIN
23345 SET new.f_int1 = old.f_int1 + @max_row,
23346 new.f_int2 = old.f_int2 - @max_row,
23347 new.f_charbig = '####updated per update trigger####';
23348 END|
23349 UPDATE t1
23350 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23351 f_charbig = '####updated per update statement itself####';
23352         
23353 # check trigger-9 success:      1
23354 DROP TRIGGER trg_2;
23355 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23356 f_int2 = CAST(f_char1 AS SIGNED INT),
23357 f_charbig = CONCAT('===',f_char1,'===');
23358 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23359 BEGIN
23360 SET new.f_int1 = new.f_int1 + @max_row,
23361 new.f_int2 = new.f_int2 - @max_row,
23362 new.f_charbig = '####updated per update trigger####';
23363 END|
23364 UPDATE t1
23365 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23366 f_charbig = '####updated per update statement itself####';
23367         
23368 # check trigger-10 success:     1
23369 DROP TRIGGER trg_2;
23370 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23371 f_int2 = CAST(f_char1 AS SIGNED INT),
23372 f_charbig = CONCAT('===',f_char1,'===');
23373 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23374 BEGIN
23375 SET new.f_int1 = @my_max1 + @counter,
23376 new.f_int2 = @my_min2 - @counter,
23377 new.f_charbig = '####updated per insert trigger####';
23378 SET @counter = @counter + 1;
23379 END|
23380 SET @counter = 1;
23381 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23382 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23383 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23384 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23385 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23386 ORDER BY f_int1;
23387 DROP TRIGGER trg_3;
23388         
23389 # check trigger-11 success:     1
23390 DELETE FROM t1
23391 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23392 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23393 AND f_charbig = '####updated per insert trigger####';
23394 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23395 BEGIN
23396 SET new.f_int1 = @my_max1 + @counter,
23397 new.f_int2 = @my_min2 - @counter,
23398 new.f_charbig = '####updated per insert trigger####';
23399 SET @counter = @counter + 1;
23400 END|
23401 SET @counter = 1;
23402 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23403 INSERT INTO t1 (f_char1, f_char2, f_charbig)
23404 SELECT CAST(f_int1 AS CHAR),
23405 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23406 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23407 ORDER BY f_int1;
23408 DROP TRIGGER trg_3;
23409         
23410 # check trigger-12 success:     1
23411 DELETE FROM t1
23412 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23413 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23414 AND f_charbig = '####updated per insert trigger####';
23415 ANALYZE  TABLE t1;
23416 Table   Op      Msg_type        Msg_text
23417 test.t1 analyze status  OK
23418 CHECK    TABLE t1 EXTENDED;
23419 Table   Op      Msg_type        Msg_text
23420 test.t1 check   status  OK
23421 CHECKSUM TABLE t1 EXTENDED;
23422 Table   Checksum
23423 test.t1 <some_value>
23424 OPTIMIZE TABLE t1;
23425 Table   Op      Msg_type        Msg_text
23426 test.t1 optimize        status  OK
23427 # check layout success:    1
23428 REPAIR   TABLE t1 EXTENDED;
23429 Table   Op      Msg_type        Msg_text
23430 test.t1 repair  status  OK
23431 # check layout success:    1
23432 TRUNCATE t1;
23433         
23434 # check TRUNCATE success:       1
23435 # check layout success:    1
23436 # End usability test (inc/partition_check.inc)
23437 DROP TABLE t1;
23438 #  2.2 ALTER ... CHECK PARTITION part_1,part_2;
23439 DROP TABLE IF EXISTS t1;
23440 CREATE TABLE t1 (
23441 f_int1 INTEGER,
23442 f_int2 INTEGER,
23443 f_char1 CHAR(20),
23444 f_char2 CHAR(20),
23445 f_charbig VARCHAR(1000)
23448 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
23449 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23450 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23451 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23452 ALTER TABLE t1 CHECK PARTITION part_1,part_2;
23453 Table   Op      Msg_type        Msg_text
23454 test.t1 check   status  OK
23455 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23456 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23457 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
23458 # Start usability test (inc/partition_check.inc)
23459 create_command
23460 SHOW CREATE TABLE t1;
23461 Table   Create Table
23462 t1      CREATE TABLE `t1` (
23463   `f_int1` int(11) DEFAULT NULL,
23464   `f_int2` int(11) DEFAULT NULL,
23465   `f_char1` char(20) DEFAULT NULL,
23466   `f_char2` char(20) DEFAULT NULL,
23467   `f_charbig` varchar(1000) DEFAULT NULL
23468 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
23469 /*!50100 PARTITION BY HASH (f_int1)
23470 (PARTITION part_1 ENGINE = MyISAM,
23471  PARTITION part_2 ENGINE = MyISAM) */
23473 unified filelist
23474 t1#P#part_1.MYD
23475 t1#P#part_1.MYI
23476 t1#P#part_2.MYD
23477 t1#P#part_2.MYI
23478 t1.frm
23479 t1.par
23481 # check prerequisites-1 success:    1
23482 # check COUNT(*) success:    1
23483 # check MIN/MAX(f_int1) success:    1
23484 # check MIN/MAX(f_int2) success:    1
23485 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23486 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23487 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23488 WHERE f_int1 IN (2,3);
23489 # check prerequisites-3 success:    1
23490 DELETE FROM t1 WHERE f_charbig = 'delete me';
23491 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
23492 # check read via f_int1 success: 1
23493 # check read via f_int2 success: 1
23494         
23495 # check multiple-1 success:     1
23496 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23497         
23498 # check multiple-2 success:     1
23499 INSERT INTO t1 SELECT * FROM t0_template
23500 WHERE MOD(f_int1,3) = 0;
23501         
23502 # check multiple-3 success:     1
23503 UPDATE t1 SET f_int1 = f_int1 + @max_row
23504 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23505 AND @max_row_div2 + @max_row_div4;
23506         
23507 # check multiple-4 success:     1
23508 DELETE FROM t1
23509 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23510 AND @max_row_div2 + @max_row_div4 + @max_row;
23511         
23512 # check multiple-5 success:     1
23513 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23514 INSERT INTO t1
23515 SET f_int1 = @cur_value , f_int2 = @cur_value,
23516 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23517 f_charbig = '#SINGLE#';
23518         
23519 # check single-1 success:       1
23520 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23521 INSERT INTO t1
23522 SET f_int1 = @cur_value , f_int2 = @cur_value,
23523 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23524 f_charbig = '#SINGLE#';
23525         
23526 # check single-2 success:       1
23527 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23528 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23529 UPDATE t1 SET f_int1 = @cur_value2
23530 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23531         
23532 # check single-3 success:       1
23533 SET @cur_value1= -1;
23534 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23535 UPDATE t1 SET f_int1 = @cur_value1
23536 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23537         
23538 # check single-4 success:       1
23539 SELECT MAX(f_int1) INTO @cur_value FROM t1;
23540 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23541         
23542 # check single-5 success:       1
23543 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23544         
23545 # check single-6 success:       1
23546 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23547         
23548 # check single-7 success:       1
23549 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
23550 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23551 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23552 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23553 f_charbig = '#NULL#';
23554 INSERT INTO t1
23555 SET f_int1 = NULL , f_int2 = -@max_row,
23556 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23557 f_charbig = '#NULL#';
23558 # check null success:    1
23559         
23560 # check null-1 success:         1
23561 UPDATE t1 SET f_int1 = -@max_row
23562 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23563 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23564         
23565 # check null-2 success:         1
23566 UPDATE t1 SET f_int1 = NULL
23567 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23568 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23569         
23570 # check null-3 success:         1
23571 DELETE FROM t1
23572 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23573 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23574         
23575 # check null-4 success:         1
23576 DELETE FROM t1
23577 WHERE f_int1 = 0 AND f_int2 = 0
23578 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23579 AND f_charbig = '#NULL#';
23580 SET AUTOCOMMIT= 0;
23581 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23582 SELECT f_int1, f_int1, '', '', 'was inserted'
23583 FROM t0_template source_tab
23584 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23585         
23586 # check transactions-1 success:         1
23587 COMMIT WORK;
23588         
23589 # check transactions-2 success:         1
23590 ROLLBACK WORK;
23591         
23592 # check transactions-3 success:         1
23593 DELETE FROM t1 WHERE f_charbig = 'was inserted';
23594 COMMIT WORK;
23595 ROLLBACK WORK;
23596         
23597 # check transactions-4 success:         1
23598 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23599 SELECT f_int1, f_int1, '', '', 'was inserted'
23600 FROM t0_template source_tab
23601 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23602         
23603 # check transactions-5 success:         1
23604 ROLLBACK WORK;
23605 Warnings:
23606 Warning 1196    Some non-transactional changed tables couldn't be rolled back
23607         
23608 # check transactions-6 success:         1
23609 # INFO: Storage engine used for t1 seems to be not transactional.
23610 COMMIT;
23611         
23612 # check transactions-7 success:         1
23613 DELETE FROM t1 WHERE f_charbig = 'was inserted';
23614 COMMIT WORK;
23615 SET @@session.sql_mode = 'traditional';
23616 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23617 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23618 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23619 '', '', 'was inserted' FROM t0_template
23620 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23621 ERROR 22012: Division by 0
23622 COMMIT;
23623         
23624 # check transactions-8 success:         1
23625 # INFO: Storage engine used for t1 seems to be unable to revert
23626 #       changes made by the failing statement.
23627 SET @@session.sql_mode = '';
23628 SET AUTOCOMMIT= 1;
23629 DELETE FROM t1 WHERE f_charbig = 'was inserted';
23630 COMMIT WORK;
23631 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23632         
23633 # check special-1 success:      1
23634 UPDATE t1 SET f_charbig = '';
23635         
23636 # check special-2 success:      1
23637 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23638 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23639 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23640 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23641 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23642 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23643 'just inserted' FROM t0_template
23644 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23645 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23646 BEGIN
23647 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23648 f_charbig = 'updated by trigger'
23649       WHERE f_int1 = new.f_int1;
23650 END|
23651 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23652 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23653 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23654         
23655 # check trigger-1 success:      1
23656 DROP TRIGGER trg_1;
23657 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23658 f_int2 = CAST(f_char1 AS SIGNED INT),
23659 f_charbig = 'just inserted'
23660    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23661 DELETE FROM t0_aux
23662 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23663 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23664 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23665 'just inserted' FROM t0_template
23666 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23667 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23668 BEGIN
23669 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23670 f_charbig = 'updated by trigger'
23671       WHERE f_int1 = new.f_int1;
23672 END|
23673 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23674 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23675 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23676         
23677 # check trigger-2 success:      1
23678 DROP TRIGGER trg_1;
23679 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23680 f_int2 = CAST(f_char1 AS SIGNED INT),
23681 f_charbig = 'just inserted'
23682    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23683 DELETE FROM t0_aux
23684 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23685 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23686 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23687 'just inserted' FROM t0_template
23688 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23689 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23690 BEGIN
23691 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23692 f_charbig = 'updated by trigger'
23693       WHERE f_int1 = new.f_int1;
23694 END|
23695 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23696 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23697         
23698 # check trigger-3 success:      1
23699 DROP TRIGGER trg_1;
23700 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23701 f_int2 = CAST(f_char1 AS SIGNED INT),
23702 f_charbig = 'just inserted'
23703    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23704 DELETE FROM t0_aux
23705 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23706 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23707 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23708 'just inserted' FROM t0_template
23709 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23710 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23711 BEGIN
23712 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23713 f_charbig = 'updated by trigger'
23714       WHERE f_int1 = - old.f_int1;
23715 END|
23716 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23717 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23718         
23719 # check trigger-4 success:      1
23720 DROP TRIGGER trg_1;
23721 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23722 f_int2 = CAST(f_char1 AS SIGNED INT),
23723 f_charbig = 'just inserted'
23724    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23725 DELETE FROM t0_aux
23726 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23727 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23728 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23729 'just inserted' FROM t0_template
23730 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23731 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23732 BEGIN
23733 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23734 f_charbig = 'updated by trigger'
23735       WHERE f_int1 = new.f_int1;
23736 END|
23737 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23738 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23739         
23740 # check trigger-5 success:      1
23741 DROP TRIGGER trg_1;
23742 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23743 f_int2 = CAST(f_char1 AS SIGNED INT),
23744 f_charbig = 'just inserted'
23745    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23746 DELETE FROM t0_aux
23747 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23748 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23749 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23750 'just inserted' FROM t0_template
23751 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23752 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23753 BEGIN
23754 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23755 f_charbig = 'updated by trigger'
23756       WHERE f_int1 = - old.f_int1;
23757 END|
23758 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
23759 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23760         
23761 # check trigger-6 success:      1
23762 DROP TRIGGER trg_1;
23763 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23764 f_int2 = CAST(f_char1 AS SIGNED INT),
23765 f_charbig = 'just inserted'
23766    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23767 DELETE FROM t0_aux
23768 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23769 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23770 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23771 'just inserted' FROM t0_template
23772 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23773 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23774 BEGIN
23775 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23776 f_charbig = 'updated by trigger'
23777       WHERE f_int1 = - old.f_int1;
23778 END|
23779 DELETE FROM t0_aux
23780 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23781         
23782 # check trigger-7 success:      1
23783 DROP TRIGGER trg_1;
23784 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23785 f_int2 = CAST(f_char1 AS SIGNED INT),
23786 f_charbig = 'just inserted'
23787    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23788 DELETE FROM t0_aux
23789 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23790 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23791 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23792 'just inserted' FROM t0_template
23793 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23794 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23795 BEGIN
23796 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23797 f_charbig = 'updated by trigger'
23798       WHERE f_int1 = - old.f_int1;
23799 END|
23800 DELETE FROM t0_aux
23801 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23802         
23803 # check trigger-8 success:      1
23804 DROP TRIGGER trg_1;
23805 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23806 f_int2 = CAST(f_char1 AS SIGNED INT),
23807 f_charbig = 'just inserted'
23808    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23809 DELETE FROM t0_aux
23810 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23811 DELETE FROM t1
23812 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23813 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23814 BEGIN
23815 SET new.f_int1 = old.f_int1 + @max_row,
23816 new.f_int2 = old.f_int2 - @max_row,
23817 new.f_charbig = '####updated per update trigger####';
23818 END|
23819 UPDATE t1
23820 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23821 f_charbig = '####updated per update statement itself####';
23822         
23823 # check trigger-9 success:      1
23824 DROP TRIGGER trg_2;
23825 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23826 f_int2 = CAST(f_char1 AS SIGNED INT),
23827 f_charbig = CONCAT('===',f_char1,'===');
23828 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23829 BEGIN
23830 SET new.f_int1 = new.f_int1 + @max_row,
23831 new.f_int2 = new.f_int2 - @max_row,
23832 new.f_charbig = '####updated per update trigger####';
23833 END|
23834 UPDATE t1
23835 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23836 f_charbig = '####updated per update statement itself####';
23837         
23838 # check trigger-10 success:     1
23839 DROP TRIGGER trg_2;
23840 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23841 f_int2 = CAST(f_char1 AS SIGNED INT),
23842 f_charbig = CONCAT('===',f_char1,'===');
23843 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23844 BEGIN
23845 SET new.f_int1 = @my_max1 + @counter,
23846 new.f_int2 = @my_min2 - @counter,
23847 new.f_charbig = '####updated per insert trigger####';
23848 SET @counter = @counter + 1;
23849 END|
23850 SET @counter = 1;
23851 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23852 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23853 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23854 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23855 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23856 ORDER BY f_int1;
23857 DROP TRIGGER trg_3;
23858         
23859 # check trigger-11 success:     1
23860 DELETE FROM t1
23861 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23862 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23863 AND f_charbig = '####updated per insert trigger####';
23864 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23865 BEGIN
23866 SET new.f_int1 = @my_max1 + @counter,
23867 new.f_int2 = @my_min2 - @counter,
23868 new.f_charbig = '####updated per insert trigger####';
23869 SET @counter = @counter + 1;
23870 END|
23871 SET @counter = 1;
23872 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23873 INSERT INTO t1 (f_char1, f_char2, f_charbig)
23874 SELECT CAST(f_int1 AS CHAR),
23875 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23876 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23877 ORDER BY f_int1;
23878 DROP TRIGGER trg_3;
23879         
23880 # check trigger-12 success:     1
23881 DELETE FROM t1
23882 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23883 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23884 AND f_charbig = '####updated per insert trigger####';
23885 ANALYZE  TABLE t1;
23886 Table   Op      Msg_type        Msg_text
23887 test.t1 analyze status  OK
23888 CHECK    TABLE t1 EXTENDED;
23889 Table   Op      Msg_type        Msg_text
23890 test.t1 check   status  OK
23891 CHECKSUM TABLE t1 EXTENDED;
23892 Table   Checksum
23893 test.t1 <some_value>
23894 OPTIMIZE TABLE t1;
23895 Table   Op      Msg_type        Msg_text
23896 test.t1 optimize        status  OK
23897 # check layout success:    1
23898 REPAIR   TABLE t1 EXTENDED;
23899 Table   Op      Msg_type        Msg_text
23900 test.t1 repair  status  OK
23901 # check layout success:    1
23902 TRUNCATE t1;
23903         
23904 # check TRUNCATE success:       1
23905 # check layout success:    1
23906 # End usability test (inc/partition_check.inc)
23907 DROP TABLE t1;
23908 CREATE TABLE t1 (
23909 f_int1 INTEGER,
23910 f_int2 INTEGER,
23911 f_char1 CHAR(20),
23912 f_char2 CHAR(20),
23913 f_charbig VARCHAR(1000)
23916 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
23917 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23918 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23919 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23920 ALTER TABLE t1 CHECK PARTITION part_1,part_2;
23921 Table   Op      Msg_type        Msg_text
23922 test.t1 check   status  OK
23923 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23924 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23925 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
23926 # Start usability test (inc/partition_check.inc)
23927 create_command
23928 SHOW CREATE TABLE t1;
23929 Table   Create Table
23930 t1      CREATE TABLE `t1` (
23931   `f_int1` int(11) DEFAULT NULL,
23932   `f_int2` int(11) DEFAULT NULL,
23933   `f_char1` char(20) DEFAULT NULL,
23934   `f_char2` char(20) DEFAULT NULL,
23935   `f_charbig` varchar(1000) DEFAULT NULL
23936 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
23937 /*!50100 PARTITION BY KEY (f_int1)
23938 (PARTITION part_1 ENGINE = MyISAM,
23939  PARTITION part_2 ENGINE = MyISAM,
23940  PARTITION part_3 ENGINE = MyISAM,
23941  PARTITION part_4 ENGINE = MyISAM,
23942  PARTITION part_5 ENGINE = MyISAM) */
23944 unified filelist
23945 t1#P#part_1.MYD
23946 t1#P#part_1.MYI
23947 t1#P#part_2.MYD
23948 t1#P#part_2.MYI
23949 t1#P#part_3.MYD
23950 t1#P#part_3.MYI
23951 t1#P#part_4.MYD
23952 t1#P#part_4.MYI
23953 t1#P#part_5.MYD
23954 t1#P#part_5.MYI
23955 t1.frm
23956 t1.par
23958 # check prerequisites-1 success:    1
23959 # check COUNT(*) success:    1
23960 # check MIN/MAX(f_int1) success:    1
23961 # check MIN/MAX(f_int2) success:    1
23962 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23963 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23964 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23965 WHERE f_int1 IN (2,3);
23966 # check prerequisites-3 success:    1
23967 DELETE FROM t1 WHERE f_charbig = 'delete me';
23968 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
23969 # check read via f_int1 success: 1
23970 # check read via f_int2 success: 1
23971         
23972 # check multiple-1 success:     1
23973 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23974         
23975 # check multiple-2 success:     1
23976 INSERT INTO t1 SELECT * FROM t0_template
23977 WHERE MOD(f_int1,3) = 0;
23978         
23979 # check multiple-3 success:     1
23980 UPDATE t1 SET f_int1 = f_int1 + @max_row
23981 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23982 AND @max_row_div2 + @max_row_div4;
23983         
23984 # check multiple-4 success:     1
23985 DELETE FROM t1
23986 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23987 AND @max_row_div2 + @max_row_div4 + @max_row;
23988         
23989 # check multiple-5 success:     1
23990 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23991 INSERT INTO t1
23992 SET f_int1 = @cur_value , f_int2 = @cur_value,
23993 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23994 f_charbig = '#SINGLE#';
23995         
23996 # check single-1 success:       1
23997 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23998 INSERT INTO t1
23999 SET f_int1 = @cur_value , f_int2 = @cur_value,
24000 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24001 f_charbig = '#SINGLE#';
24002         
24003 # check single-2 success:       1
24004 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24005 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24006 UPDATE t1 SET f_int1 = @cur_value2
24007 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24008         
24009 # check single-3 success:       1
24010 SET @cur_value1= -1;
24011 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24012 UPDATE t1 SET f_int1 = @cur_value1
24013 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24014         
24015 # check single-4 success:       1
24016 SELECT MAX(f_int1) INTO @cur_value FROM t1;
24017 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24018         
24019 # check single-5 success:       1
24020 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24021         
24022 # check single-6 success:       1
24023 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24024         
24025 # check single-7 success:       1
24026 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24027 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24028 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24029 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24030 f_charbig = '#NULL#';
24031 INSERT INTO t1
24032 SET f_int1 = NULL , f_int2 = -@max_row,
24033 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24034 f_charbig = '#NULL#';
24035 # check null success:    1
24036         
24037 # check null-1 success:         1
24038 UPDATE t1 SET f_int1 = -@max_row
24039 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24040 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24041         
24042 # check null-2 success:         1
24043 UPDATE t1 SET f_int1 = NULL
24044 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24045 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24046         
24047 # check null-3 success:         1
24048 DELETE FROM t1
24049 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24050 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24051         
24052 # check null-4 success:         1
24053 DELETE FROM t1
24054 WHERE f_int1 = 0 AND f_int2 = 0
24055 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24056 AND f_charbig = '#NULL#';
24057 SET AUTOCOMMIT= 0;
24058 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24059 SELECT f_int1, f_int1, '', '', 'was inserted'
24060 FROM t0_template source_tab
24061 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24062         
24063 # check transactions-1 success:         1
24064 COMMIT WORK;
24065         
24066 # check transactions-2 success:         1
24067 ROLLBACK WORK;
24068         
24069 # check transactions-3 success:         1
24070 DELETE FROM t1 WHERE f_charbig = 'was inserted';
24071 COMMIT WORK;
24072 ROLLBACK WORK;
24073         
24074 # check transactions-4 success:         1
24075 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24076 SELECT f_int1, f_int1, '', '', 'was inserted'
24077 FROM t0_template source_tab
24078 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24079         
24080 # check transactions-5 success:         1
24081 ROLLBACK WORK;
24082 Warnings:
24083 Warning 1196    Some non-transactional changed tables couldn't be rolled back
24084         
24085 # check transactions-6 success:         1
24086 # INFO: Storage engine used for t1 seems to be not transactional.
24087 COMMIT;
24088         
24089 # check transactions-7 success:         1
24090 DELETE FROM t1 WHERE f_charbig = 'was inserted';
24091 COMMIT WORK;
24092 SET @@session.sql_mode = 'traditional';
24093 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24094 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24095 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24096 '', '', 'was inserted' FROM t0_template
24097 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24098 ERROR 22012: Division by 0
24099 COMMIT;
24100         
24101 # check transactions-8 success:         1
24102 # INFO: Storage engine used for t1 seems to be unable to revert
24103 #       changes made by the failing statement.
24104 SET @@session.sql_mode = '';
24105 SET AUTOCOMMIT= 1;
24106 DELETE FROM t1 WHERE f_charbig = 'was inserted';
24107 COMMIT WORK;
24108 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24109         
24110 # check special-1 success:      1
24111 UPDATE t1 SET f_charbig = '';
24112         
24113 # check special-2 success:      1
24114 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24115 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24116 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24117 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24118 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24119 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24120 'just inserted' FROM t0_template
24121 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24122 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24123 BEGIN
24124 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24125 f_charbig = 'updated by trigger'
24126       WHERE f_int1 = new.f_int1;
24127 END|
24128 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24129 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24130 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24131         
24132 # check trigger-1 success:      1
24133 DROP TRIGGER trg_1;
24134 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24135 f_int2 = CAST(f_char1 AS SIGNED INT),
24136 f_charbig = 'just inserted'
24137    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24138 DELETE FROM t0_aux
24139 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24140 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24141 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24142 'just inserted' FROM t0_template
24143 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24144 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24145 BEGIN
24146 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24147 f_charbig = 'updated by trigger'
24148       WHERE f_int1 = new.f_int1;
24149 END|
24150 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24151 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24152 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24153         
24154 # check trigger-2 success:      1
24155 DROP TRIGGER trg_1;
24156 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24157 f_int2 = CAST(f_char1 AS SIGNED INT),
24158 f_charbig = 'just inserted'
24159    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24160 DELETE FROM t0_aux
24161 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24162 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24163 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24164 'just inserted' FROM t0_template
24165 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24166 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24167 BEGIN
24168 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24169 f_charbig = 'updated by trigger'
24170       WHERE f_int1 = new.f_int1;
24171 END|
24172 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24173 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24174         
24175 # check trigger-3 success:      1
24176 DROP TRIGGER trg_1;
24177 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24178 f_int2 = CAST(f_char1 AS SIGNED INT),
24179 f_charbig = 'just inserted'
24180    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24181 DELETE FROM t0_aux
24182 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24183 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24184 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24185 'just inserted' FROM t0_template
24186 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24187 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24188 BEGIN
24189 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24190 f_charbig = 'updated by trigger'
24191       WHERE f_int1 = - old.f_int1;
24192 END|
24193 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24194 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24195         
24196 # check trigger-4 success:      1
24197 DROP TRIGGER trg_1;
24198 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24199 f_int2 = CAST(f_char1 AS SIGNED INT),
24200 f_charbig = 'just inserted'
24201    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24202 DELETE FROM t0_aux
24203 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24204 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24205 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24206 'just inserted' FROM t0_template
24207 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24208 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24209 BEGIN
24210 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24211 f_charbig = 'updated by trigger'
24212       WHERE f_int1 = new.f_int1;
24213 END|
24214 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24215 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24216         
24217 # check trigger-5 success:      1
24218 DROP TRIGGER trg_1;
24219 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24220 f_int2 = CAST(f_char1 AS SIGNED INT),
24221 f_charbig = 'just inserted'
24222    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24223 DELETE FROM t0_aux
24224 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24225 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24226 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24227 'just inserted' FROM t0_template
24228 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24229 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24230 BEGIN
24231 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24232 f_charbig = 'updated by trigger'
24233       WHERE f_int1 = - old.f_int1;
24234 END|
24235 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24236 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24237         
24238 # check trigger-6 success:      1
24239 DROP TRIGGER trg_1;
24240 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24241 f_int2 = CAST(f_char1 AS SIGNED INT),
24242 f_charbig = 'just inserted'
24243    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24244 DELETE FROM t0_aux
24245 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24246 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24247 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24248 'just inserted' FROM t0_template
24249 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24250 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24251 BEGIN
24252 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24253 f_charbig = 'updated by trigger'
24254       WHERE f_int1 = - old.f_int1;
24255 END|
24256 DELETE FROM t0_aux
24257 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24258         
24259 # check trigger-7 success:      1
24260 DROP TRIGGER trg_1;
24261 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24262 f_int2 = CAST(f_char1 AS SIGNED INT),
24263 f_charbig = 'just inserted'
24264    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24265 DELETE FROM t0_aux
24266 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24267 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24268 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24269 'just inserted' FROM t0_template
24270 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24271 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24272 BEGIN
24273 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24274 f_charbig = 'updated by trigger'
24275       WHERE f_int1 = - old.f_int1;
24276 END|
24277 DELETE FROM t0_aux
24278 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24279         
24280 # check trigger-8 success:      1
24281 DROP TRIGGER trg_1;
24282 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24283 f_int2 = CAST(f_char1 AS SIGNED INT),
24284 f_charbig = 'just inserted'
24285    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24286 DELETE FROM t0_aux
24287 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24288 DELETE FROM t1
24289 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24290 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24291 BEGIN
24292 SET new.f_int1 = old.f_int1 + @max_row,
24293 new.f_int2 = old.f_int2 - @max_row,
24294 new.f_charbig = '####updated per update trigger####';
24295 END|
24296 UPDATE t1
24297 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24298 f_charbig = '####updated per update statement itself####';
24299         
24300 # check trigger-9 success:      1
24301 DROP TRIGGER trg_2;
24302 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24303 f_int2 = CAST(f_char1 AS SIGNED INT),
24304 f_charbig = CONCAT('===',f_char1,'===');
24305 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24306 BEGIN
24307 SET new.f_int1 = new.f_int1 + @max_row,
24308 new.f_int2 = new.f_int2 - @max_row,
24309 new.f_charbig = '####updated per update trigger####';
24310 END|
24311 UPDATE t1
24312 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24313 f_charbig = '####updated per update statement itself####';
24314         
24315 # check trigger-10 success:     1
24316 DROP TRIGGER trg_2;
24317 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24318 f_int2 = CAST(f_char1 AS SIGNED INT),
24319 f_charbig = CONCAT('===',f_char1,'===');
24320 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24321 BEGIN
24322 SET new.f_int1 = @my_max1 + @counter,
24323 new.f_int2 = @my_min2 - @counter,
24324 new.f_charbig = '####updated per insert trigger####';
24325 SET @counter = @counter + 1;
24326 END|
24327 SET @counter = 1;
24328 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24329 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24330 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24331 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24332 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24333 ORDER BY f_int1;
24334 DROP TRIGGER trg_3;
24335         
24336 # check trigger-11 success:     1
24337 DELETE FROM t1
24338 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24339 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24340 AND f_charbig = '####updated per insert trigger####';
24341 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24342 BEGIN
24343 SET new.f_int1 = @my_max1 + @counter,
24344 new.f_int2 = @my_min2 - @counter,
24345 new.f_charbig = '####updated per insert trigger####';
24346 SET @counter = @counter + 1;
24347 END|
24348 SET @counter = 1;
24349 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24350 INSERT INTO t1 (f_char1, f_char2, f_charbig)
24351 SELECT CAST(f_int1 AS CHAR),
24352 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24353 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24354 ORDER BY f_int1;
24355 DROP TRIGGER trg_3;
24356         
24357 # check trigger-12 success:     1
24358 DELETE FROM t1
24359 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24360 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24361 AND f_charbig = '####updated per insert trigger####';
24362 ANALYZE  TABLE t1;
24363 Table   Op      Msg_type        Msg_text
24364 test.t1 analyze status  OK
24365 CHECK    TABLE t1 EXTENDED;
24366 Table   Op      Msg_type        Msg_text
24367 test.t1 check   status  OK
24368 CHECKSUM TABLE t1 EXTENDED;
24369 Table   Checksum
24370 test.t1 <some_value>
24371 OPTIMIZE TABLE t1;
24372 Table   Op      Msg_type        Msg_text
24373 test.t1 optimize        status  OK
24374 # check layout success:    1
24375 REPAIR   TABLE t1 EXTENDED;
24376 Table   Op      Msg_type        Msg_text
24377 test.t1 repair  status  OK
24378 # check layout success:    1
24379 TRUNCATE t1;
24380         
24381 # check TRUNCATE success:       1
24382 # check layout success:    1
24383 # End usability test (inc/partition_check.inc)
24384 DROP TABLE t1;
24385 CREATE TABLE t1 (
24386 f_int1 INTEGER,
24387 f_int2 INTEGER,
24388 f_char1 CHAR(20),
24389 f_char2 CHAR(20),
24390 f_charbig VARCHAR(1000)
24393 PARTITION BY LIST(MOD(f_int1,4))
24394 (PARTITION part_3 VALUES IN (-3),
24395 PARTITION part_2 VALUES IN (-2),
24396 PARTITION part_1 VALUES IN (-1),
24397 PARTITION part_N VALUES IN (NULL),
24398 PARTITION part0 VALUES IN (0),
24399 PARTITION part1 VALUES IN (1),
24400 PARTITION part2 VALUES IN (2),
24401 PARTITION part3 VALUES IN (3));
24402 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24403 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24404 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24405 ALTER TABLE t1 CHECK PARTITION part_1,part_2;
24406 Table   Op      Msg_type        Msg_text
24407 test.t1 check   status  OK
24408 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24409 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24410 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24411 # Start usability test (inc/partition_check.inc)
24412 create_command
24413 SHOW CREATE TABLE t1;
24414 Table   Create Table
24415 t1      CREATE TABLE `t1` (
24416   `f_int1` int(11) DEFAULT NULL,
24417   `f_int2` int(11) DEFAULT NULL,
24418   `f_char1` char(20) DEFAULT NULL,
24419   `f_char2` char(20) DEFAULT NULL,
24420   `f_charbig` varchar(1000) DEFAULT NULL
24421 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
24422 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
24423 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
24424  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
24425  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
24426  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
24427  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
24428  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
24429  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
24430  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
24432 unified filelist
24433 t1#P#part0.MYD
24434 t1#P#part0.MYI
24435 t1#P#part1.MYD
24436 t1#P#part1.MYI
24437 t1#P#part2.MYD
24438 t1#P#part2.MYI
24439 t1#P#part3.MYD
24440 t1#P#part3.MYI
24441 t1#P#part_1.MYD
24442 t1#P#part_1.MYI
24443 t1#P#part_2.MYD
24444 t1#P#part_2.MYI
24445 t1#P#part_3.MYD
24446 t1#P#part_3.MYI
24447 t1#P#part_N.MYD
24448 t1#P#part_N.MYI
24449 t1.frm
24450 t1.par
24452 # check prerequisites-1 success:    1
24453 # check COUNT(*) success:    1
24454 # check MIN/MAX(f_int1) success:    1
24455 # check MIN/MAX(f_int2) success:    1
24456 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24457 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24458 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24459 WHERE f_int1 IN (2,3);
24460 # check prerequisites-3 success:    1
24461 DELETE FROM t1 WHERE f_charbig = 'delete me';
24462 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
24463 # check read via f_int1 success: 1
24464 # check read via f_int2 success: 1
24465         
24466 # check multiple-1 success:     1
24467 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24468         
24469 # check multiple-2 success:     1
24470 INSERT INTO t1 SELECT * FROM t0_template
24471 WHERE MOD(f_int1,3) = 0;
24472         
24473 # check multiple-3 success:     1
24474 UPDATE t1 SET f_int1 = f_int1 + @max_row
24475 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24476 AND @max_row_div2 + @max_row_div4;
24477         
24478 # check multiple-4 success:     1
24479 DELETE FROM t1
24480 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24481 AND @max_row_div2 + @max_row_div4 + @max_row;
24482         
24483 # check multiple-5 success:     1
24484 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24485 INSERT INTO t1
24486 SET f_int1 = @cur_value , f_int2 = @cur_value,
24487 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24488 f_charbig = '#SINGLE#';
24489         
24490 # check single-1 success:       1
24491 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24492 INSERT INTO t1
24493 SET f_int1 = @cur_value , f_int2 = @cur_value,
24494 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24495 f_charbig = '#SINGLE#';
24496         
24497 # check single-2 success:       1
24498 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24499 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24500 UPDATE t1 SET f_int1 = @cur_value2
24501 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24502         
24503 # check single-3 success:       1
24504 SET @cur_value1= -1;
24505 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24506 UPDATE t1 SET f_int1 = @cur_value1
24507 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24508         
24509 # check single-4 success:       1
24510 SELECT MAX(f_int1) INTO @cur_value FROM t1;
24511 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24512         
24513 # check single-5 success:       1
24514 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24515         
24516 # check single-6 success:       1
24517 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24518         
24519 # check single-7 success:       1
24520 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24521 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24522 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24523 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24524 f_charbig = '#NULL#';
24525 INSERT INTO t1
24526 SET f_int1 = NULL , f_int2 = -@max_row,
24527 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24528 f_charbig = '#NULL#';
24529 # check null success:    1
24530         
24531 # check null-1 success:         1
24532 UPDATE t1 SET f_int1 = -@max_row
24533 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24534 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24535         
24536 # check null-2 success:         1
24537 UPDATE t1 SET f_int1 = NULL
24538 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24539 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24540         
24541 # check null-3 success:         1
24542 DELETE FROM t1
24543 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24544 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24545         
24546 # check null-4 success:         1
24547 DELETE FROM t1
24548 WHERE f_int1 = 0 AND f_int2 = 0
24549 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24550 AND f_charbig = '#NULL#';
24551 SET AUTOCOMMIT= 0;
24552 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24553 SELECT f_int1, f_int1, '', '', 'was inserted'
24554 FROM t0_template source_tab
24555 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24556         
24557 # check transactions-1 success:         1
24558 COMMIT WORK;
24559         
24560 # check transactions-2 success:         1
24561 ROLLBACK WORK;
24562         
24563 # check transactions-3 success:         1
24564 DELETE FROM t1 WHERE f_charbig = 'was inserted';
24565 COMMIT WORK;
24566 ROLLBACK WORK;
24567         
24568 # check transactions-4 success:         1
24569 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24570 SELECT f_int1, f_int1, '', '', 'was inserted'
24571 FROM t0_template source_tab
24572 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24573         
24574 # check transactions-5 success:         1
24575 ROLLBACK WORK;
24576 Warnings:
24577 Warning 1196    Some non-transactional changed tables couldn't be rolled back
24578         
24579 # check transactions-6 success:         1
24580 # INFO: Storage engine used for t1 seems to be not transactional.
24581 COMMIT;
24582         
24583 # check transactions-7 success:         1
24584 DELETE FROM t1 WHERE f_charbig = 'was inserted';
24585 COMMIT WORK;
24586 SET @@session.sql_mode = 'traditional';
24587 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24588 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24589 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24590 '', '', 'was inserted' FROM t0_template
24591 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24592 ERROR 22012: Division by 0
24593 COMMIT;
24594         
24595 # check transactions-8 success:         1
24596 # INFO: Storage engine used for t1 seems to be unable to revert
24597 #       changes made by the failing statement.
24598 SET @@session.sql_mode = '';
24599 SET AUTOCOMMIT= 1;
24600 DELETE FROM t1 WHERE f_charbig = 'was inserted';
24601 COMMIT WORK;
24602 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24603         
24604 # check special-1 success:      1
24605 UPDATE t1 SET f_charbig = '';
24606         
24607 # check special-2 success:      1
24608 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24609 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24610 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24611 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24612 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24613 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24614 'just inserted' FROM t0_template
24615 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24616 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24617 BEGIN
24618 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24619 f_charbig = 'updated by trigger'
24620       WHERE f_int1 = new.f_int1;
24621 END|
24622 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24623 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24624 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24625         
24626 # check trigger-1 success:      1
24627 DROP TRIGGER trg_1;
24628 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24629 f_int2 = CAST(f_char1 AS SIGNED INT),
24630 f_charbig = 'just inserted'
24631    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24632 DELETE FROM t0_aux
24633 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24634 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24635 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24636 'just inserted' FROM t0_template
24637 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24638 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24639 BEGIN
24640 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24641 f_charbig = 'updated by trigger'
24642       WHERE f_int1 = new.f_int1;
24643 END|
24644 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24645 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24646 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24647         
24648 # check trigger-2 success:      1
24649 DROP TRIGGER trg_1;
24650 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24651 f_int2 = CAST(f_char1 AS SIGNED INT),
24652 f_charbig = 'just inserted'
24653    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24654 DELETE FROM t0_aux
24655 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24656 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24657 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24658 'just inserted' FROM t0_template
24659 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24660 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24661 BEGIN
24662 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24663 f_charbig = 'updated by trigger'
24664       WHERE f_int1 = new.f_int1;
24665 END|
24666 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24667 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24668         
24669 # check trigger-3 success:      1
24670 DROP TRIGGER trg_1;
24671 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24672 f_int2 = CAST(f_char1 AS SIGNED INT),
24673 f_charbig = 'just inserted'
24674    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24675 DELETE FROM t0_aux
24676 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24677 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24678 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24679 'just inserted' FROM t0_template
24680 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24681 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24682 BEGIN
24683 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24684 f_charbig = 'updated by trigger'
24685       WHERE f_int1 = - old.f_int1;
24686 END|
24687 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24688 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24689         
24690 # check trigger-4 success:      1
24691 DROP TRIGGER trg_1;
24692 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24693 f_int2 = CAST(f_char1 AS SIGNED INT),
24694 f_charbig = 'just inserted'
24695    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24696 DELETE FROM t0_aux
24697 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24698 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24699 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24700 'just inserted' FROM t0_template
24701 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24702 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24703 BEGIN
24704 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24705 f_charbig = 'updated by trigger'
24706       WHERE f_int1 = new.f_int1;
24707 END|
24708 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24709 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24710         
24711 # check trigger-5 success:      1
24712 DROP TRIGGER trg_1;
24713 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24714 f_int2 = CAST(f_char1 AS SIGNED INT),
24715 f_charbig = 'just inserted'
24716    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24717 DELETE FROM t0_aux
24718 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24719 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24720 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24721 'just inserted' FROM t0_template
24722 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24723 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24724 BEGIN
24725 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24726 f_charbig = 'updated by trigger'
24727       WHERE f_int1 = - old.f_int1;
24728 END|
24729 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
24730 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24731         
24732 # check trigger-6 success:      1
24733 DROP TRIGGER trg_1;
24734 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24735 f_int2 = CAST(f_char1 AS SIGNED INT),
24736 f_charbig = 'just inserted'
24737    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24738 DELETE FROM t0_aux
24739 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24740 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24741 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24742 'just inserted' FROM t0_template
24743 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24744 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24745 BEGIN
24746 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24747 f_charbig = 'updated by trigger'
24748       WHERE f_int1 = - old.f_int1;
24749 END|
24750 DELETE FROM t0_aux
24751 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24752         
24753 # check trigger-7 success:      1
24754 DROP TRIGGER trg_1;
24755 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24756 f_int2 = CAST(f_char1 AS SIGNED INT),
24757 f_charbig = 'just inserted'
24758    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24759 DELETE FROM t0_aux
24760 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24761 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24762 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24763 'just inserted' FROM t0_template
24764 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24765 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24766 BEGIN
24767 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24768 f_charbig = 'updated by trigger'
24769       WHERE f_int1 = - old.f_int1;
24770 END|
24771 DELETE FROM t0_aux
24772 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24773         
24774 # check trigger-8 success:      1
24775 DROP TRIGGER trg_1;
24776 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24777 f_int2 = CAST(f_char1 AS SIGNED INT),
24778 f_charbig = 'just inserted'
24779    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24780 DELETE FROM t0_aux
24781 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24782 DELETE FROM t1
24783 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24784 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24785 BEGIN
24786 SET new.f_int1 = old.f_int1 + @max_row,
24787 new.f_int2 = old.f_int2 - @max_row,
24788 new.f_charbig = '####updated per update trigger####';
24789 END|
24790 UPDATE t1
24791 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24792 f_charbig = '####updated per update statement itself####';
24793         
24794 # check trigger-9 success:      1
24795 DROP TRIGGER trg_2;
24796 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24797 f_int2 = CAST(f_char1 AS SIGNED INT),
24798 f_charbig = CONCAT('===',f_char1,'===');
24799 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24800 BEGIN
24801 SET new.f_int1 = new.f_int1 + @max_row,
24802 new.f_int2 = new.f_int2 - @max_row,
24803 new.f_charbig = '####updated per update trigger####';
24804 END|
24805 UPDATE t1
24806 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24807 f_charbig = '####updated per update statement itself####';
24808         
24809 # check trigger-10 success:     1
24810 DROP TRIGGER trg_2;
24811 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24812 f_int2 = CAST(f_char1 AS SIGNED INT),
24813 f_charbig = CONCAT('===',f_char1,'===');
24814 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24815 BEGIN
24816 SET new.f_int1 = @my_max1 + @counter,
24817 new.f_int2 = @my_min2 - @counter,
24818 new.f_charbig = '####updated per insert trigger####';
24819 SET @counter = @counter + 1;
24820 END|
24821 SET @counter = 1;
24822 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24823 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24824 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24825 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24826 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24827 ORDER BY f_int1;
24828 DROP TRIGGER trg_3;
24829         
24830 # check trigger-11 success:     1
24831 DELETE FROM t1
24832 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24833 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24834 AND f_charbig = '####updated per insert trigger####';
24835 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24836 BEGIN
24837 SET new.f_int1 = @my_max1 + @counter,
24838 new.f_int2 = @my_min2 - @counter,
24839 new.f_charbig = '####updated per insert trigger####';
24840 SET @counter = @counter + 1;
24841 END|
24842 SET @counter = 1;
24843 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24844 INSERT INTO t1 (f_char1, f_char2, f_charbig)
24845 SELECT CAST(f_int1 AS CHAR),
24846 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24847 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24848 ORDER BY f_int1;
24849 DROP TRIGGER trg_3;
24850         
24851 # check trigger-12 success:     1
24852 DELETE FROM t1
24853 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24854 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24855 AND f_charbig = '####updated per insert trigger####';
24856 ANALYZE  TABLE t1;
24857 Table   Op      Msg_type        Msg_text
24858 test.t1 analyze status  OK
24859 CHECK    TABLE t1 EXTENDED;
24860 Table   Op      Msg_type        Msg_text
24861 test.t1 check   status  OK
24862 CHECKSUM TABLE t1 EXTENDED;
24863 Table   Checksum
24864 test.t1 <some_value>
24865 OPTIMIZE TABLE t1;
24866 Table   Op      Msg_type        Msg_text
24867 test.t1 optimize        status  OK
24868 # check layout success:    1
24869 REPAIR   TABLE t1 EXTENDED;
24870 Table   Op      Msg_type        Msg_text
24871 test.t1 repair  status  OK
24872 # check layout success:    1
24873 TRUNCATE t1;
24874         
24875 # check TRUNCATE success:       1
24876 # check layout success:    1
24877 # End usability test (inc/partition_check.inc)
24878 DROP TABLE t1;
24879 CREATE TABLE t1 (
24880 f_int1 INTEGER,
24881 f_int2 INTEGER,
24882 f_char1 CHAR(20),
24883 f_char2 CHAR(20),
24884 f_charbig VARCHAR(1000)
24887 PARTITION BY RANGE(f_int1)
24888 (PARTITION parta VALUES LESS THAN (0),
24889 PARTITION part_1 VALUES LESS THAN (5),
24890 PARTITION part_2 VALUES LESS THAN (10),
24891 PARTITION part_3 VALUES LESS THAN (10 + 5),
24892 PARTITION part_4 VALUES LESS THAN (20),
24893 PARTITION part_5 VALUES LESS THAN (2147483646));
24894 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24895 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24896 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24897 ALTER TABLE t1 CHECK PARTITION part_1,part_2;
24898 Table   Op      Msg_type        Msg_text
24899 test.t1 check   status  OK
24900 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24901 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24902 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24903 # Start usability test (inc/partition_check.inc)
24904 create_command
24905 SHOW CREATE TABLE t1;
24906 Table   Create Table
24907 t1      CREATE TABLE `t1` (
24908   `f_int1` int(11) DEFAULT NULL,
24909   `f_int2` int(11) DEFAULT NULL,
24910   `f_char1` char(20) DEFAULT NULL,
24911   `f_char2` char(20) DEFAULT NULL,
24912   `f_charbig` varchar(1000) DEFAULT NULL
24913 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
24914 /*!50100 PARTITION BY RANGE (f_int1)
24915 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
24916  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
24917  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
24918  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
24919  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
24920  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
24922 unified filelist
24923 t1#P#part_1.MYD
24924 t1#P#part_1.MYI
24925 t1#P#part_2.MYD
24926 t1#P#part_2.MYI
24927 t1#P#part_3.MYD
24928 t1#P#part_3.MYI
24929 t1#P#part_4.MYD
24930 t1#P#part_4.MYI
24931 t1#P#part_5.MYD
24932 t1#P#part_5.MYI
24933 t1#P#parta.MYD
24934 t1#P#parta.MYI
24935 t1.frm
24936 t1.par
24938 # check prerequisites-1 success:    1
24939 # check COUNT(*) success:    1
24940 # check MIN/MAX(f_int1) success:    1
24941 # check MIN/MAX(f_int2) success:    1
24942 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24943 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24944 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24945 WHERE f_int1 IN (2,3);
24946 # check prerequisites-3 success:    1
24947 DELETE FROM t1 WHERE f_charbig = 'delete me';
24948 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
24949 # check read via f_int1 success: 1
24950 # check read via f_int2 success: 1
24951         
24952 # check multiple-1 success:     1
24953 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24954         
24955 # check multiple-2 success:     1
24956 INSERT INTO t1 SELECT * FROM t0_template
24957 WHERE MOD(f_int1,3) = 0;
24958         
24959 # check multiple-3 success:     1
24960 UPDATE t1 SET f_int1 = f_int1 + @max_row
24961 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24962 AND @max_row_div2 + @max_row_div4;
24963         
24964 # check multiple-4 success:     1
24965 DELETE FROM t1
24966 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24967 AND @max_row_div2 + @max_row_div4 + @max_row;
24968         
24969 # check multiple-5 success:     1
24970 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24971 INSERT INTO t1
24972 SET f_int1 = @cur_value , f_int2 = @cur_value,
24973 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24974 f_charbig = '#SINGLE#';
24975         
24976 # check single-1 success:       1
24977 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24978 INSERT INTO t1
24979 SET f_int1 = @cur_value , f_int2 = @cur_value,
24980 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24981 f_charbig = '#SINGLE#';
24982         
24983 # check single-2 success:       1
24984 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24985 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24986 UPDATE t1 SET f_int1 = @cur_value2
24987 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24988         
24989 # check single-3 success:       1
24990 SET @cur_value1= -1;
24991 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24992 UPDATE t1 SET f_int1 = @cur_value1
24993 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24994         
24995 # check single-4 success:       1
24996 SELECT MAX(f_int1) INTO @cur_value FROM t1;
24997 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24998         
24999 # check single-5 success:       1
25000 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25001         
25002 # check single-6 success:       1
25003 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25004 ERROR HY000: Table has no partition for value 2147483647
25005 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25006 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25007 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25008 f_charbig = '#NULL#';
25009 INSERT INTO t1
25010 SET f_int1 = NULL , f_int2 = -@max_row,
25011 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25012 f_charbig = '#NULL#';
25013 # check null success:    1
25014         
25015 # check null-1 success:         1
25016 UPDATE t1 SET f_int1 = -@max_row
25017 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25018 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25019         
25020 # check null-2 success:         1
25021 UPDATE t1 SET f_int1 = NULL
25022 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25023 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25024         
25025 # check null-3 success:         1
25026 DELETE FROM t1
25027 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25028 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25029         
25030 # check null-4 success:         1
25031 DELETE FROM t1
25032 WHERE f_int1 = 0 AND f_int2 = 0
25033 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25034 AND f_charbig = '#NULL#';
25035 SET AUTOCOMMIT= 0;
25036 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25037 SELECT f_int1, f_int1, '', '', 'was inserted'
25038 FROM t0_template source_tab
25039 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25040         
25041 # check transactions-1 success:         1
25042 COMMIT WORK;
25043         
25044 # check transactions-2 success:         1
25045 ROLLBACK WORK;
25046         
25047 # check transactions-3 success:         1
25048 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25049 COMMIT WORK;
25050 ROLLBACK WORK;
25051         
25052 # check transactions-4 success:         1
25053 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25054 SELECT f_int1, f_int1, '', '', 'was inserted'
25055 FROM t0_template source_tab
25056 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25057         
25058 # check transactions-5 success:         1
25059 ROLLBACK WORK;
25060 Warnings:
25061 Warning 1196    Some non-transactional changed tables couldn't be rolled back
25062         
25063 # check transactions-6 success:         1
25064 # INFO: Storage engine used for t1 seems to be not transactional.
25065 COMMIT;
25066         
25067 # check transactions-7 success:         1
25068 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25069 COMMIT WORK;
25070 SET @@session.sql_mode = 'traditional';
25071 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25072 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25073 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25074 '', '', 'was inserted' FROM t0_template
25075 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25076 ERROR 22012: Division by 0
25077 COMMIT;
25078         
25079 # check transactions-8 success:         1
25080 # INFO: Storage engine used for t1 seems to be unable to revert
25081 #       changes made by the failing statement.
25082 SET @@session.sql_mode = '';
25083 SET AUTOCOMMIT= 1;
25084 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25085 COMMIT WORK;
25086 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25087         
25088 # check special-1 success:      1
25089 UPDATE t1 SET f_charbig = '';
25090         
25091 # check special-2 success:      1
25092 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25093 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25094 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25095 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25096 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25097 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25098 'just inserted' FROM t0_template
25099 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25100 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25101 BEGIN
25102 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25103 f_charbig = 'updated by trigger'
25104       WHERE f_int1 = new.f_int1;
25105 END|
25106 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25107 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25108 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25109         
25110 # check trigger-1 success:      1
25111 DROP TRIGGER trg_1;
25112 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25113 f_int2 = CAST(f_char1 AS SIGNED INT),
25114 f_charbig = 'just inserted'
25115    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25116 DELETE FROM t0_aux
25117 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25118 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25119 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25120 'just inserted' FROM t0_template
25121 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25122 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25123 BEGIN
25124 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25125 f_charbig = 'updated by trigger'
25126       WHERE f_int1 = new.f_int1;
25127 END|
25128 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25129 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25130 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25131         
25132 # check trigger-2 success:      1
25133 DROP TRIGGER trg_1;
25134 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25135 f_int2 = CAST(f_char1 AS SIGNED INT),
25136 f_charbig = 'just inserted'
25137    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25138 DELETE FROM t0_aux
25139 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25140 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25141 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25142 'just inserted' FROM t0_template
25143 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25144 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25145 BEGIN
25146 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25147 f_charbig = 'updated by trigger'
25148       WHERE f_int1 = new.f_int1;
25149 END|
25150 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25151 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25152         
25153 # check trigger-3 success:      1
25154 DROP TRIGGER trg_1;
25155 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25156 f_int2 = CAST(f_char1 AS SIGNED INT),
25157 f_charbig = 'just inserted'
25158    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25159 DELETE FROM t0_aux
25160 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25161 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25162 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25163 'just inserted' FROM t0_template
25164 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25165 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25166 BEGIN
25167 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25168 f_charbig = 'updated by trigger'
25169       WHERE f_int1 = - old.f_int1;
25170 END|
25171 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25172 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25173         
25174 # check trigger-4 success:      1
25175 DROP TRIGGER trg_1;
25176 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25177 f_int2 = CAST(f_char1 AS SIGNED INT),
25178 f_charbig = 'just inserted'
25179    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25180 DELETE FROM t0_aux
25181 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25182 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25183 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25184 'just inserted' FROM t0_template
25185 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25186 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25187 BEGIN
25188 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25189 f_charbig = 'updated by trigger'
25190       WHERE f_int1 = new.f_int1;
25191 END|
25192 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25193 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25194         
25195 # check trigger-5 success:      1
25196 DROP TRIGGER trg_1;
25197 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25198 f_int2 = CAST(f_char1 AS SIGNED INT),
25199 f_charbig = 'just inserted'
25200    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25201 DELETE FROM t0_aux
25202 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25203 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25204 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25205 'just inserted' FROM t0_template
25206 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25207 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25208 BEGIN
25209 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25210 f_charbig = 'updated by trigger'
25211       WHERE f_int1 = - old.f_int1;
25212 END|
25213 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25214 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25215         
25216 # check trigger-6 success:      1
25217 DROP TRIGGER trg_1;
25218 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25219 f_int2 = CAST(f_char1 AS SIGNED INT),
25220 f_charbig = 'just inserted'
25221    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25222 DELETE FROM t0_aux
25223 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25224 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25225 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25226 'just inserted' FROM t0_template
25227 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25228 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25229 BEGIN
25230 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25231 f_charbig = 'updated by trigger'
25232       WHERE f_int1 = - old.f_int1;
25233 END|
25234 DELETE FROM t0_aux
25235 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25236         
25237 # check trigger-7 success:      1
25238 DROP TRIGGER trg_1;
25239 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25240 f_int2 = CAST(f_char1 AS SIGNED INT),
25241 f_charbig = 'just inserted'
25242    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25243 DELETE FROM t0_aux
25244 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25245 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25246 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25247 'just inserted' FROM t0_template
25248 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25249 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25250 BEGIN
25251 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25252 f_charbig = 'updated by trigger'
25253       WHERE f_int1 = - old.f_int1;
25254 END|
25255 DELETE FROM t0_aux
25256 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25257         
25258 # check trigger-8 success:      1
25259 DROP TRIGGER trg_1;
25260 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25261 f_int2 = CAST(f_char1 AS SIGNED INT),
25262 f_charbig = 'just inserted'
25263    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25264 DELETE FROM t0_aux
25265 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25266 DELETE FROM t1
25267 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25268 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25269 BEGIN
25270 SET new.f_int1 = old.f_int1 + @max_row,
25271 new.f_int2 = old.f_int2 - @max_row,
25272 new.f_charbig = '####updated per update trigger####';
25273 END|
25274 UPDATE t1
25275 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25276 f_charbig = '####updated per update statement itself####';
25277         
25278 # check trigger-9 success:      1
25279 DROP TRIGGER trg_2;
25280 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25281 f_int2 = CAST(f_char1 AS SIGNED INT),
25282 f_charbig = CONCAT('===',f_char1,'===');
25283 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25284 BEGIN
25285 SET new.f_int1 = new.f_int1 + @max_row,
25286 new.f_int2 = new.f_int2 - @max_row,
25287 new.f_charbig = '####updated per update trigger####';
25288 END|
25289 UPDATE t1
25290 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25291 f_charbig = '####updated per update statement itself####';
25292         
25293 # check trigger-10 success:     1
25294 DROP TRIGGER trg_2;
25295 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25296 f_int2 = CAST(f_char1 AS SIGNED INT),
25297 f_charbig = CONCAT('===',f_char1,'===');
25298 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25299 BEGIN
25300 SET new.f_int1 = @my_max1 + @counter,
25301 new.f_int2 = @my_min2 - @counter,
25302 new.f_charbig = '####updated per insert trigger####';
25303 SET @counter = @counter + 1;
25304 END|
25305 SET @counter = 1;
25306 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25307 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25308 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25309 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25310 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25311 ORDER BY f_int1;
25312 DROP TRIGGER trg_3;
25313         
25314 # check trigger-11 success:     1
25315 DELETE FROM t1
25316 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25317 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25318 AND f_charbig = '####updated per insert trigger####';
25319 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25320 BEGIN
25321 SET new.f_int1 = @my_max1 + @counter,
25322 new.f_int2 = @my_min2 - @counter,
25323 new.f_charbig = '####updated per insert trigger####';
25324 SET @counter = @counter + 1;
25325 END|
25326 SET @counter = 1;
25327 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25328 INSERT INTO t1 (f_char1, f_char2, f_charbig)
25329 SELECT CAST(f_int1 AS CHAR),
25330 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25331 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25332 ORDER BY f_int1;
25333 DROP TRIGGER trg_3;
25334         
25335 # check trigger-12 success:     1
25336 DELETE FROM t1
25337 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25338 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25339 AND f_charbig = '####updated per insert trigger####';
25340 ANALYZE  TABLE t1;
25341 Table   Op      Msg_type        Msg_text
25342 test.t1 analyze status  OK
25343 CHECK    TABLE t1 EXTENDED;
25344 Table   Op      Msg_type        Msg_text
25345 test.t1 check   status  OK
25346 CHECKSUM TABLE t1 EXTENDED;
25347 Table   Checksum
25348 test.t1 <some_value>
25349 OPTIMIZE TABLE t1;
25350 Table   Op      Msg_type        Msg_text
25351 test.t1 optimize        status  OK
25352 # check layout success:    1
25353 REPAIR   TABLE t1 EXTENDED;
25354 Table   Op      Msg_type        Msg_text
25355 test.t1 repair  status  OK
25356 # check layout success:    1
25357 TRUNCATE t1;
25358         
25359 # check TRUNCATE success:       1
25360 # check layout success:    1
25361 # End usability test (inc/partition_check.inc)
25362 DROP TABLE t1;
25363 CREATE TABLE t1 (
25364 f_int1 INTEGER,
25365 f_int2 INTEGER,
25366 f_char1 CHAR(20),
25367 f_char2 CHAR(20),
25368 f_charbig VARCHAR(1000)
25371 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
25372 (PARTITION part_1 VALUES LESS THAN (0),
25373 PARTITION part_2 VALUES LESS THAN (5),
25374 PARTITION part_3 VALUES LESS THAN (10),
25375 PARTITION part_4 VALUES LESS THAN (2147483646));
25376 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25377 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25378 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25379 ALTER TABLE t1 CHECK PARTITION part_1,part_2;
25380 Table   Op      Msg_type        Msg_text
25381 test.t1 check   status  OK
25382 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25383 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25384 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25385 # Start usability test (inc/partition_check.inc)
25386 create_command
25387 SHOW CREATE TABLE t1;
25388 Table   Create Table
25389 t1      CREATE TABLE `t1` (
25390   `f_int1` int(11) DEFAULT NULL,
25391   `f_int2` int(11) DEFAULT NULL,
25392   `f_char1` char(20) DEFAULT NULL,
25393   `f_char2` char(20) DEFAULT NULL,
25394   `f_charbig` varchar(1000) DEFAULT NULL
25395 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
25396 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
25397 SUBPARTITION BY HASH (f_int1)
25398 SUBPARTITIONS 2
25399 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
25400  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
25401  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
25402  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
25404 unified filelist
25405 t1#P#part_1#SP#part_1sp0.MYD
25406 t1#P#part_1#SP#part_1sp0.MYI
25407 t1#P#part_1#SP#part_1sp1.MYD
25408 t1#P#part_1#SP#part_1sp1.MYI
25409 t1#P#part_2#SP#part_2sp0.MYD
25410 t1#P#part_2#SP#part_2sp0.MYI
25411 t1#P#part_2#SP#part_2sp1.MYD
25412 t1#P#part_2#SP#part_2sp1.MYI
25413 t1#P#part_3#SP#part_3sp0.MYD
25414 t1#P#part_3#SP#part_3sp0.MYI
25415 t1#P#part_3#SP#part_3sp1.MYD
25416 t1#P#part_3#SP#part_3sp1.MYI
25417 t1#P#part_4#SP#part_4sp0.MYD
25418 t1#P#part_4#SP#part_4sp0.MYI
25419 t1#P#part_4#SP#part_4sp1.MYD
25420 t1#P#part_4#SP#part_4sp1.MYI
25421 t1.frm
25422 t1.par
25424 # check prerequisites-1 success:    1
25425 # check COUNT(*) success:    1
25426 # check MIN/MAX(f_int1) success:    1
25427 # check MIN/MAX(f_int2) success:    1
25428 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25429 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25430 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25431 WHERE f_int1 IN (2,3);
25432 # check prerequisites-3 success:    1
25433 DELETE FROM t1 WHERE f_charbig = 'delete me';
25434 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
25435 # check read via f_int1 success: 1
25436 # check read via f_int2 success: 1
25437         
25438 # check multiple-1 success:     1
25439 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25440         
25441 # check multiple-2 success:     1
25442 INSERT INTO t1 SELECT * FROM t0_template
25443 WHERE MOD(f_int1,3) = 0;
25444         
25445 # check multiple-3 success:     1
25446 UPDATE t1 SET f_int1 = f_int1 + @max_row
25447 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25448 AND @max_row_div2 + @max_row_div4;
25449         
25450 # check multiple-4 success:     1
25451 DELETE FROM t1
25452 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25453 AND @max_row_div2 + @max_row_div4 + @max_row;
25454         
25455 # check multiple-5 success:     1
25456 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25457 INSERT INTO t1
25458 SET f_int1 = @cur_value , f_int2 = @cur_value,
25459 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25460 f_charbig = '#SINGLE#';
25461         
25462 # check single-1 success:       1
25463 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25464 INSERT INTO t1
25465 SET f_int1 = @cur_value , f_int2 = @cur_value,
25466 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25467 f_charbig = '#SINGLE#';
25468         
25469 # check single-2 success:       1
25470 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25471 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25472 UPDATE t1 SET f_int1 = @cur_value2
25473 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25474         
25475 # check single-3 success:       1
25476 SET @cur_value1= -1;
25477 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25478 UPDATE t1 SET f_int1 = @cur_value1
25479 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25480         
25481 # check single-4 success:       1
25482 SELECT MAX(f_int1) INTO @cur_value FROM t1;
25483 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25484         
25485 # check single-5 success:       1
25486 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25487         
25488 # check single-6 success:       1
25489 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25490         
25491 # check single-7 success:       1
25492 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
25493 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25494 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25495 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25496 f_charbig = '#NULL#';
25497 INSERT INTO t1
25498 SET f_int1 = NULL , f_int2 = -@max_row,
25499 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25500 f_charbig = '#NULL#';
25501 # check null success:    1
25502         
25503 # check null-1 success:         1
25504 UPDATE t1 SET f_int1 = -@max_row
25505 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25506 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25507         
25508 # check null-2 success:         1
25509 UPDATE t1 SET f_int1 = NULL
25510 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25511 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25512         
25513 # check null-3 success:         1
25514 DELETE FROM t1
25515 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25516 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25517         
25518 # check null-4 success:         1
25519 DELETE FROM t1
25520 WHERE f_int1 = 0 AND f_int2 = 0
25521 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25522 AND f_charbig = '#NULL#';
25523 SET AUTOCOMMIT= 0;
25524 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25525 SELECT f_int1, f_int1, '', '', 'was inserted'
25526 FROM t0_template source_tab
25527 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25528         
25529 # check transactions-1 success:         1
25530 COMMIT WORK;
25531         
25532 # check transactions-2 success:         1
25533 ROLLBACK WORK;
25534         
25535 # check transactions-3 success:         1
25536 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25537 COMMIT WORK;
25538 ROLLBACK WORK;
25539         
25540 # check transactions-4 success:         1
25541 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25542 SELECT f_int1, f_int1, '', '', 'was inserted'
25543 FROM t0_template source_tab
25544 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25545         
25546 # check transactions-5 success:         1
25547 ROLLBACK WORK;
25548 Warnings:
25549 Warning 1196    Some non-transactional changed tables couldn't be rolled back
25550         
25551 # check transactions-6 success:         1
25552 # INFO: Storage engine used for t1 seems to be not transactional.
25553 COMMIT;
25554         
25555 # check transactions-7 success:         1
25556 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25557 COMMIT WORK;
25558 SET @@session.sql_mode = 'traditional';
25559 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25560 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25561 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25562 '', '', 'was inserted' FROM t0_template
25563 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25564 ERROR 22012: Division by 0
25565 COMMIT;
25566         
25567 # check transactions-8 success:         1
25568 # INFO: Storage engine used for t1 seems to be unable to revert
25569 #       changes made by the failing statement.
25570 SET @@session.sql_mode = '';
25571 SET AUTOCOMMIT= 1;
25572 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25573 COMMIT WORK;
25574 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25575         
25576 # check special-1 success:      1
25577 UPDATE t1 SET f_charbig = '';
25578         
25579 # check special-2 success:      1
25580 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25581 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25582 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25583 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25584 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25585 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25586 'just inserted' FROM t0_template
25587 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25588 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25589 BEGIN
25590 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25591 f_charbig = 'updated by trigger'
25592       WHERE f_int1 = new.f_int1;
25593 END|
25594 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25595 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25596 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25597         
25598 # check trigger-1 success:      1
25599 DROP TRIGGER trg_1;
25600 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25601 f_int2 = CAST(f_char1 AS SIGNED INT),
25602 f_charbig = 'just inserted'
25603    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25604 DELETE FROM t0_aux
25605 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25606 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25607 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25608 'just inserted' FROM t0_template
25609 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25610 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25611 BEGIN
25612 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25613 f_charbig = 'updated by trigger'
25614       WHERE f_int1 = new.f_int1;
25615 END|
25616 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25617 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25618 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25619         
25620 # check trigger-2 success:      1
25621 DROP TRIGGER trg_1;
25622 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25623 f_int2 = CAST(f_char1 AS SIGNED INT),
25624 f_charbig = 'just inserted'
25625    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25626 DELETE FROM t0_aux
25627 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25628 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25629 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25630 'just inserted' FROM t0_template
25631 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25632 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25633 BEGIN
25634 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25635 f_charbig = 'updated by trigger'
25636       WHERE f_int1 = new.f_int1;
25637 END|
25638 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25639 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25640         
25641 # check trigger-3 success:      1
25642 DROP TRIGGER trg_1;
25643 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25644 f_int2 = CAST(f_char1 AS SIGNED INT),
25645 f_charbig = 'just inserted'
25646    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25647 DELETE FROM t0_aux
25648 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25649 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25650 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25651 'just inserted' FROM t0_template
25652 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25653 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25654 BEGIN
25655 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25656 f_charbig = 'updated by trigger'
25657       WHERE f_int1 = - old.f_int1;
25658 END|
25659 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25660 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25661         
25662 # check trigger-4 success:      1
25663 DROP TRIGGER trg_1;
25664 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25665 f_int2 = CAST(f_char1 AS SIGNED INT),
25666 f_charbig = 'just inserted'
25667    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25668 DELETE FROM t0_aux
25669 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25670 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25671 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25672 'just inserted' FROM t0_template
25673 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25674 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25675 BEGIN
25676 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25677 f_charbig = 'updated by trigger'
25678       WHERE f_int1 = new.f_int1;
25679 END|
25680 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25681 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25682         
25683 # check trigger-5 success:      1
25684 DROP TRIGGER trg_1;
25685 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25686 f_int2 = CAST(f_char1 AS SIGNED INT),
25687 f_charbig = 'just inserted'
25688    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25689 DELETE FROM t0_aux
25690 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25691 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25692 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25693 'just inserted' FROM t0_template
25694 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25695 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25696 BEGIN
25697 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25698 f_charbig = 'updated by trigger'
25699       WHERE f_int1 = - old.f_int1;
25700 END|
25701 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
25702 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25703         
25704 # check trigger-6 success:      1
25705 DROP TRIGGER trg_1;
25706 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25707 f_int2 = CAST(f_char1 AS SIGNED INT),
25708 f_charbig = 'just inserted'
25709    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25710 DELETE FROM t0_aux
25711 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25712 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25713 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25714 'just inserted' FROM t0_template
25715 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25716 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25717 BEGIN
25718 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25719 f_charbig = 'updated by trigger'
25720       WHERE f_int1 = - old.f_int1;
25721 END|
25722 DELETE FROM t0_aux
25723 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25724         
25725 # check trigger-7 success:      1
25726 DROP TRIGGER trg_1;
25727 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25728 f_int2 = CAST(f_char1 AS SIGNED INT),
25729 f_charbig = 'just inserted'
25730    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25731 DELETE FROM t0_aux
25732 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25733 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25734 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25735 'just inserted' FROM t0_template
25736 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25737 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25738 BEGIN
25739 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25740 f_charbig = 'updated by trigger'
25741       WHERE f_int1 = - old.f_int1;
25742 END|
25743 DELETE FROM t0_aux
25744 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25745         
25746 # check trigger-8 success:      1
25747 DROP TRIGGER trg_1;
25748 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25749 f_int2 = CAST(f_char1 AS SIGNED INT),
25750 f_charbig = 'just inserted'
25751    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25752 DELETE FROM t0_aux
25753 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25754 DELETE FROM t1
25755 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25756 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25757 BEGIN
25758 SET new.f_int1 = old.f_int1 + @max_row,
25759 new.f_int2 = old.f_int2 - @max_row,
25760 new.f_charbig = '####updated per update trigger####';
25761 END|
25762 UPDATE t1
25763 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25764 f_charbig = '####updated per update statement itself####';
25765         
25766 # check trigger-9 success:      1
25767 DROP TRIGGER trg_2;
25768 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25769 f_int2 = CAST(f_char1 AS SIGNED INT),
25770 f_charbig = CONCAT('===',f_char1,'===');
25771 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25772 BEGIN
25773 SET new.f_int1 = new.f_int1 + @max_row,
25774 new.f_int2 = new.f_int2 - @max_row,
25775 new.f_charbig = '####updated per update trigger####';
25776 END|
25777 UPDATE t1
25778 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25779 f_charbig = '####updated per update statement itself####';
25780         
25781 # check trigger-10 success:     1
25782 DROP TRIGGER trg_2;
25783 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25784 f_int2 = CAST(f_char1 AS SIGNED INT),
25785 f_charbig = CONCAT('===',f_char1,'===');
25786 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25787 BEGIN
25788 SET new.f_int1 = @my_max1 + @counter,
25789 new.f_int2 = @my_min2 - @counter,
25790 new.f_charbig = '####updated per insert trigger####';
25791 SET @counter = @counter + 1;
25792 END|
25793 SET @counter = 1;
25794 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25795 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25796 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25797 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25798 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25799 ORDER BY f_int1;
25800 DROP TRIGGER trg_3;
25801         
25802 # check trigger-11 success:     1
25803 DELETE FROM t1
25804 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25805 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25806 AND f_charbig = '####updated per insert trigger####';
25807 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25808 BEGIN
25809 SET new.f_int1 = @my_max1 + @counter,
25810 new.f_int2 = @my_min2 - @counter,
25811 new.f_charbig = '####updated per insert trigger####';
25812 SET @counter = @counter + 1;
25813 END|
25814 SET @counter = 1;
25815 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25816 INSERT INTO t1 (f_char1, f_char2, f_charbig)
25817 SELECT CAST(f_int1 AS CHAR),
25818 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25819 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25820 ORDER BY f_int1;
25821 DROP TRIGGER trg_3;
25822         
25823 # check trigger-12 success:     1
25824 DELETE FROM t1
25825 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25826 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25827 AND f_charbig = '####updated per insert trigger####';
25828 ANALYZE  TABLE t1;
25829 Table   Op      Msg_type        Msg_text
25830 test.t1 analyze status  OK
25831 CHECK    TABLE t1 EXTENDED;
25832 Table   Op      Msg_type        Msg_text
25833 test.t1 check   status  OK
25834 CHECKSUM TABLE t1 EXTENDED;
25835 Table   Checksum
25836 test.t1 <some_value>
25837 OPTIMIZE TABLE t1;
25838 Table   Op      Msg_type        Msg_text
25839 test.t1 optimize        status  OK
25840 # check layout success:    1
25841 REPAIR   TABLE t1 EXTENDED;
25842 Table   Op      Msg_type        Msg_text
25843 test.t1 repair  status  OK
25844 # check layout success:    1
25845 TRUNCATE t1;
25846         
25847 # check TRUNCATE success:       1
25848 # check layout success:    1
25849 # End usability test (inc/partition_check.inc)
25850 DROP TABLE t1;
25851 CREATE TABLE t1 (
25852 f_int1 INTEGER,
25853 f_int2 INTEGER,
25854 f_char1 CHAR(20),
25855 f_char2 CHAR(20),
25856 f_charbig VARCHAR(1000)
25859 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
25860 (PARTITION part_1 VALUES LESS THAN (0)
25861 (SUBPARTITION subpart11, SUBPARTITION subpart12),
25862 PARTITION part_2 VALUES LESS THAN (5)
25863 (SUBPARTITION subpart21, SUBPARTITION subpart22),
25864 PARTITION part_3 VALUES LESS THAN (10)
25865 (SUBPARTITION subpart31, SUBPARTITION subpart32),
25866 PARTITION part_4 VALUES LESS THAN (2147483646)
25867 (SUBPARTITION subpart41, SUBPARTITION subpart42));
25868 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25869 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25870 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25871 ALTER TABLE t1 CHECK PARTITION part_1,part_2;
25872 Table   Op      Msg_type        Msg_text
25873 test.t1 check   status  OK
25874 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25875 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25876 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25877 # Start usability test (inc/partition_check.inc)
25878 create_command
25879 SHOW CREATE TABLE t1;
25880 Table   Create Table
25881 t1      CREATE TABLE `t1` (
25882   `f_int1` int(11) DEFAULT NULL,
25883   `f_int2` int(11) DEFAULT NULL,
25884   `f_char1` char(20) DEFAULT NULL,
25885   `f_char2` char(20) DEFAULT NULL,
25886   `f_charbig` varchar(1000) DEFAULT NULL
25887 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
25888 /*!50100 PARTITION BY RANGE (f_int1)
25889 SUBPARTITION BY KEY (f_int1)
25890 (PARTITION part_1 VALUES LESS THAN (0)
25891  (SUBPARTITION subpart11 ENGINE = MyISAM,
25892   SUBPARTITION subpart12 ENGINE = MyISAM),
25893  PARTITION part_2 VALUES LESS THAN (5)
25894  (SUBPARTITION subpart21 ENGINE = MyISAM,
25895   SUBPARTITION subpart22 ENGINE = MyISAM),
25896  PARTITION part_3 VALUES LESS THAN (10)
25897  (SUBPARTITION subpart31 ENGINE = MyISAM,
25898   SUBPARTITION subpart32 ENGINE = MyISAM),
25899  PARTITION part_4 VALUES LESS THAN (2147483646)
25900  (SUBPARTITION subpart41 ENGINE = MyISAM,
25901   SUBPARTITION subpart42 ENGINE = MyISAM)) */
25903 unified filelist
25904 t1#P#part_1#SP#subpart11.MYD
25905 t1#P#part_1#SP#subpart11.MYI
25906 t1#P#part_1#SP#subpart12.MYD
25907 t1#P#part_1#SP#subpart12.MYI
25908 t1#P#part_2#SP#subpart21.MYD
25909 t1#P#part_2#SP#subpart21.MYI
25910 t1#P#part_2#SP#subpart22.MYD
25911 t1#P#part_2#SP#subpart22.MYI
25912 t1#P#part_3#SP#subpart31.MYD
25913 t1#P#part_3#SP#subpart31.MYI
25914 t1#P#part_3#SP#subpart32.MYD
25915 t1#P#part_3#SP#subpart32.MYI
25916 t1#P#part_4#SP#subpart41.MYD
25917 t1#P#part_4#SP#subpart41.MYI
25918 t1#P#part_4#SP#subpart42.MYD
25919 t1#P#part_4#SP#subpart42.MYI
25920 t1.frm
25921 t1.par
25923 # check prerequisites-1 success:    1
25924 # check COUNT(*) success:    1
25925 # check MIN/MAX(f_int1) success:    1
25926 # check MIN/MAX(f_int2) success:    1
25927 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25928 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25929 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25930 WHERE f_int1 IN (2,3);
25931 # check prerequisites-3 success:    1
25932 DELETE FROM t1 WHERE f_charbig = 'delete me';
25933 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
25934 # check read via f_int1 success: 1
25935 # check read via f_int2 success: 1
25936         
25937 # check multiple-1 success:     1
25938 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25939         
25940 # check multiple-2 success:     1
25941 INSERT INTO t1 SELECT * FROM t0_template
25942 WHERE MOD(f_int1,3) = 0;
25943         
25944 # check multiple-3 success:     1
25945 UPDATE t1 SET f_int1 = f_int1 + @max_row
25946 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25947 AND @max_row_div2 + @max_row_div4;
25948         
25949 # check multiple-4 success:     1
25950 DELETE FROM t1
25951 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25952 AND @max_row_div2 + @max_row_div4 + @max_row;
25953         
25954 # check multiple-5 success:     1
25955 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25956 INSERT INTO t1
25957 SET f_int1 = @cur_value , f_int2 = @cur_value,
25958 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25959 f_charbig = '#SINGLE#';
25960         
25961 # check single-1 success:       1
25962 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25963 INSERT INTO t1
25964 SET f_int1 = @cur_value , f_int2 = @cur_value,
25965 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25966 f_charbig = '#SINGLE#';
25967         
25968 # check single-2 success:       1
25969 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25970 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25971 UPDATE t1 SET f_int1 = @cur_value2
25972 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25973         
25974 # check single-3 success:       1
25975 SET @cur_value1= -1;
25976 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25977 UPDATE t1 SET f_int1 = @cur_value1
25978 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25979         
25980 # check single-4 success:       1
25981 SELECT MAX(f_int1) INTO @cur_value FROM t1;
25982 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25983         
25984 # check single-5 success:       1
25985 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25986         
25987 # check single-6 success:       1
25988 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25989 ERROR HY000: Table has no partition for value 2147483647
25990 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25991 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25992 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25993 f_charbig = '#NULL#';
25994 INSERT INTO t1
25995 SET f_int1 = NULL , f_int2 = -@max_row,
25996 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25997 f_charbig = '#NULL#';
25998 # check null success:    1
25999         
26000 # check null-1 success:         1
26001 UPDATE t1 SET f_int1 = -@max_row
26002 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26003 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26004         
26005 # check null-2 success:         1
26006 UPDATE t1 SET f_int1 = NULL
26007 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26008 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26009         
26010 # check null-3 success:         1
26011 DELETE FROM t1
26012 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26013 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26014         
26015 # check null-4 success:         1
26016 DELETE FROM t1
26017 WHERE f_int1 = 0 AND f_int2 = 0
26018 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26019 AND f_charbig = '#NULL#';
26020 SET AUTOCOMMIT= 0;
26021 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26022 SELECT f_int1, f_int1, '', '', 'was inserted'
26023 FROM t0_template source_tab
26024 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26025         
26026 # check transactions-1 success:         1
26027 COMMIT WORK;
26028         
26029 # check transactions-2 success:         1
26030 ROLLBACK WORK;
26031         
26032 # check transactions-3 success:         1
26033 DELETE FROM t1 WHERE f_charbig = 'was inserted';
26034 COMMIT WORK;
26035 ROLLBACK WORK;
26036         
26037 # check transactions-4 success:         1
26038 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26039 SELECT f_int1, f_int1, '', '', 'was inserted'
26040 FROM t0_template source_tab
26041 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26042         
26043 # check transactions-5 success:         1
26044 ROLLBACK WORK;
26045 Warnings:
26046 Warning 1196    Some non-transactional changed tables couldn't be rolled back
26047         
26048 # check transactions-6 success:         1
26049 # INFO: Storage engine used for t1 seems to be not transactional.
26050 COMMIT;
26051         
26052 # check transactions-7 success:         1
26053 DELETE FROM t1 WHERE f_charbig = 'was inserted';
26054 COMMIT WORK;
26055 SET @@session.sql_mode = 'traditional';
26056 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26057 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26058 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26059 '', '', 'was inserted' FROM t0_template
26060 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26061 ERROR 22012: Division by 0
26062 COMMIT;
26063         
26064 # check transactions-8 success:         1
26065 # INFO: Storage engine used for t1 seems to be unable to revert
26066 #       changes made by the failing statement.
26067 SET @@session.sql_mode = '';
26068 SET AUTOCOMMIT= 1;
26069 DELETE FROM t1 WHERE f_charbig = 'was inserted';
26070 COMMIT WORK;
26071 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26072         
26073 # check special-1 success:      1
26074 UPDATE t1 SET f_charbig = '';
26075         
26076 # check special-2 success:      1
26077 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26078 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26079 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26080 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26081 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26082 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26083 'just inserted' FROM t0_template
26084 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26085 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26086 BEGIN
26087 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26088 f_charbig = 'updated by trigger'
26089       WHERE f_int1 = new.f_int1;
26090 END|
26091 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26092 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26093 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26094         
26095 # check trigger-1 success:      1
26096 DROP TRIGGER trg_1;
26097 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26098 f_int2 = CAST(f_char1 AS SIGNED INT),
26099 f_charbig = 'just inserted'
26100    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26101 DELETE FROM t0_aux
26102 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26103 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26104 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26105 'just inserted' FROM t0_template
26106 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26107 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26108 BEGIN
26109 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26110 f_charbig = 'updated by trigger'
26111       WHERE f_int1 = new.f_int1;
26112 END|
26113 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26114 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26115 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26116         
26117 # check trigger-2 success:      1
26118 DROP TRIGGER trg_1;
26119 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26120 f_int2 = CAST(f_char1 AS SIGNED INT),
26121 f_charbig = 'just inserted'
26122    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26123 DELETE FROM t0_aux
26124 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26125 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26126 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26127 'just inserted' FROM t0_template
26128 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26129 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26130 BEGIN
26131 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26132 f_charbig = 'updated by trigger'
26133       WHERE f_int1 = new.f_int1;
26134 END|
26135 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
26136 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26137         
26138 # check trigger-3 success:      1
26139 DROP TRIGGER trg_1;
26140 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26141 f_int2 = CAST(f_char1 AS SIGNED INT),
26142 f_charbig = 'just inserted'
26143    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26144 DELETE FROM t0_aux
26145 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26146 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26147 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26148 'just inserted' FROM t0_template
26149 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26150 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26151 BEGIN
26152 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26153 f_charbig = 'updated by trigger'
26154       WHERE f_int1 = - old.f_int1;
26155 END|
26156 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
26157 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26158         
26159 # check trigger-4 success:      1
26160 DROP TRIGGER trg_1;
26161 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26162 f_int2 = CAST(f_char1 AS SIGNED INT),
26163 f_charbig = 'just inserted'
26164    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26165 DELETE FROM t0_aux
26166 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26167 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26168 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26169 'just inserted' FROM t0_template
26170 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26171 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26172 BEGIN
26173 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26174 f_charbig = 'updated by trigger'
26175       WHERE f_int1 = new.f_int1;
26176 END|
26177 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
26178 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26179         
26180 # check trigger-5 success:      1
26181 DROP TRIGGER trg_1;
26182 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26183 f_int2 = CAST(f_char1 AS SIGNED INT),
26184 f_charbig = 'just inserted'
26185    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26186 DELETE FROM t0_aux
26187 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26188 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26189 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26190 'just inserted' FROM t0_template
26191 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26192 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26193 BEGIN
26194 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26195 f_charbig = 'updated by trigger'
26196       WHERE f_int1 = - old.f_int1;
26197 END|
26198 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
26199 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26200         
26201 # check trigger-6 success:      1
26202 DROP TRIGGER trg_1;
26203 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26204 f_int2 = CAST(f_char1 AS SIGNED INT),
26205 f_charbig = 'just inserted'
26206    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26207 DELETE FROM t0_aux
26208 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26209 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26210 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26211 'just inserted' FROM t0_template
26212 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26213 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26214 BEGIN
26215 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26216 f_charbig = 'updated by trigger'
26217       WHERE f_int1 = - old.f_int1;
26218 END|
26219 DELETE FROM t0_aux
26220 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26221         
26222 # check trigger-7 success:      1
26223 DROP TRIGGER trg_1;
26224 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26225 f_int2 = CAST(f_char1 AS SIGNED INT),
26226 f_charbig = 'just inserted'
26227    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26228 DELETE FROM t0_aux
26229 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26230 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26231 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26232 'just inserted' FROM t0_template
26233 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26234 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26235 BEGIN
26236 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26237 f_charbig = 'updated by trigger'
26238       WHERE f_int1 = - old.f_int1;
26239 END|
26240 DELETE FROM t0_aux
26241 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26242         
26243 # check trigger-8 success:      1
26244 DROP TRIGGER trg_1;
26245 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26246 f_int2 = CAST(f_char1 AS SIGNED INT),
26247 f_charbig = 'just inserted'
26248    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26249 DELETE FROM t0_aux
26250 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26251 DELETE FROM t1
26252 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26253 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26254 BEGIN
26255 SET new.f_int1 = old.f_int1 + @max_row,
26256 new.f_int2 = old.f_int2 - @max_row,
26257 new.f_charbig = '####updated per update trigger####';
26258 END|
26259 UPDATE t1
26260 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26261 f_charbig = '####updated per update statement itself####';
26262         
26263 # check trigger-9 success:      1
26264 DROP TRIGGER trg_2;
26265 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26266 f_int2 = CAST(f_char1 AS SIGNED INT),
26267 f_charbig = CONCAT('===',f_char1,'===');
26268 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26269 BEGIN
26270 SET new.f_int1 = new.f_int1 + @max_row,
26271 new.f_int2 = new.f_int2 - @max_row,
26272 new.f_charbig = '####updated per update trigger####';
26273 END|
26274 UPDATE t1
26275 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26276 f_charbig = '####updated per update statement itself####';
26277         
26278 # check trigger-10 success:     1
26279 DROP TRIGGER trg_2;
26280 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26281 f_int2 = CAST(f_char1 AS SIGNED INT),
26282 f_charbig = CONCAT('===',f_char1,'===');
26283 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26284 BEGIN
26285 SET new.f_int1 = @my_max1 + @counter,
26286 new.f_int2 = @my_min2 - @counter,
26287 new.f_charbig = '####updated per insert trigger####';
26288 SET @counter = @counter + 1;
26289 END|
26290 SET @counter = 1;
26291 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26292 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26293 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26294 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26295 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26296 ORDER BY f_int1;
26297 DROP TRIGGER trg_3;
26298         
26299 # check trigger-11 success:     1
26300 DELETE FROM t1
26301 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26302 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26303 AND f_charbig = '####updated per insert trigger####';
26304 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26305 BEGIN
26306 SET new.f_int1 = @my_max1 + @counter,
26307 new.f_int2 = @my_min2 - @counter,
26308 new.f_charbig = '####updated per insert trigger####';
26309 SET @counter = @counter + 1;
26310 END|
26311 SET @counter = 1;
26312 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26313 INSERT INTO t1 (f_char1, f_char2, f_charbig)
26314 SELECT CAST(f_int1 AS CHAR),
26315 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26316 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26317 ORDER BY f_int1;
26318 DROP TRIGGER trg_3;
26319         
26320 # check trigger-12 success:     1
26321 DELETE FROM t1
26322 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26323 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26324 AND f_charbig = '####updated per insert trigger####';
26325 ANALYZE  TABLE t1;
26326 Table   Op      Msg_type        Msg_text
26327 test.t1 analyze status  OK
26328 CHECK    TABLE t1 EXTENDED;
26329 Table   Op      Msg_type        Msg_text
26330 test.t1 check   status  OK
26331 CHECKSUM TABLE t1 EXTENDED;
26332 Table   Checksum
26333 test.t1 <some_value>
26334 OPTIMIZE TABLE t1;
26335 Table   Op      Msg_type        Msg_text
26336 test.t1 optimize        status  OK
26337 # check layout success:    1
26338 REPAIR   TABLE t1 EXTENDED;
26339 Table   Op      Msg_type        Msg_text
26340 test.t1 repair  status  OK
26341 # check layout success:    1
26342 TRUNCATE t1;
26343         
26344 # check TRUNCATE success:       1
26345 # check layout success:    1
26346 # End usability test (inc/partition_check.inc)
26347 DROP TABLE t1;
26348 CREATE TABLE t1 (
26349 f_int1 INTEGER,
26350 f_int2 INTEGER,
26351 f_char1 CHAR(20),
26352 f_char2 CHAR(20),
26353 f_charbig VARCHAR(1000)
26356 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
26357 (PARTITION part_1 VALUES IN (0)
26358 (SUBPARTITION sp11, SUBPARTITION sp12),
26359 PARTITION part_2 VALUES IN (1)
26360 (SUBPARTITION sp21, SUBPARTITION sp22),
26361 PARTITION part_3 VALUES IN (2)
26362 (SUBPARTITION sp31, SUBPARTITION sp32),
26363 PARTITION part_4 VALUES IN (NULL)
26364 (SUBPARTITION sp41, SUBPARTITION sp42));
26365 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26366 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26367 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26368 ALTER TABLE t1 CHECK PARTITION part_1,part_2;
26369 Table   Op      Msg_type        Msg_text
26370 test.t1 check   status  OK
26371 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26372 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26373 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26374 # Start usability test (inc/partition_check.inc)
26375 create_command
26376 SHOW CREATE TABLE t1;
26377 Table   Create Table
26378 t1      CREATE TABLE `t1` (
26379   `f_int1` int(11) DEFAULT NULL,
26380   `f_int2` int(11) DEFAULT NULL,
26381   `f_char1` char(20) DEFAULT NULL,
26382   `f_char2` char(20) DEFAULT NULL,
26383   `f_charbig` varchar(1000) DEFAULT NULL
26384 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
26385 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
26386 SUBPARTITION BY HASH (f_int1 + 1)
26387 (PARTITION part_1 VALUES IN (0)
26388  (SUBPARTITION sp11 ENGINE = MyISAM,
26389   SUBPARTITION sp12 ENGINE = MyISAM),
26390  PARTITION part_2 VALUES IN (1)
26391  (SUBPARTITION sp21 ENGINE = MyISAM,
26392   SUBPARTITION sp22 ENGINE = MyISAM),
26393  PARTITION part_3 VALUES IN (2)
26394  (SUBPARTITION sp31 ENGINE = MyISAM,
26395   SUBPARTITION sp32 ENGINE = MyISAM),
26396  PARTITION part_4 VALUES IN (NULL)
26397  (SUBPARTITION sp41 ENGINE = MyISAM,
26398   SUBPARTITION sp42 ENGINE = MyISAM)) */
26400 unified filelist
26401 t1#P#part_1#SP#sp11.MYD
26402 t1#P#part_1#SP#sp11.MYI
26403 t1#P#part_1#SP#sp12.MYD
26404 t1#P#part_1#SP#sp12.MYI
26405 t1#P#part_2#SP#sp21.MYD
26406 t1#P#part_2#SP#sp21.MYI
26407 t1#P#part_2#SP#sp22.MYD
26408 t1#P#part_2#SP#sp22.MYI
26409 t1#P#part_3#SP#sp31.MYD
26410 t1#P#part_3#SP#sp31.MYI
26411 t1#P#part_3#SP#sp32.MYD
26412 t1#P#part_3#SP#sp32.MYI
26413 t1#P#part_4#SP#sp41.MYD
26414 t1#P#part_4#SP#sp41.MYI
26415 t1#P#part_4#SP#sp42.MYD
26416 t1#P#part_4#SP#sp42.MYI
26417 t1.frm
26418 t1.par
26420 # check prerequisites-1 success:    1
26421 # check COUNT(*) success:    1
26422 # check MIN/MAX(f_int1) success:    1
26423 # check MIN/MAX(f_int2) success:    1
26424 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26425 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26426 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26427 WHERE f_int1 IN (2,3);
26428 # check prerequisites-3 success:    1
26429 DELETE FROM t1 WHERE f_charbig = 'delete me';
26430 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
26431 # check read via f_int1 success: 1
26432 # check read via f_int2 success: 1
26433         
26434 # check multiple-1 success:     1
26435 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26436         
26437 # check multiple-2 success:     1
26438 INSERT INTO t1 SELECT * FROM t0_template
26439 WHERE MOD(f_int1,3) = 0;
26440         
26441 # check multiple-3 success:     1
26442 UPDATE t1 SET f_int1 = f_int1 + @max_row
26443 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26444 AND @max_row_div2 + @max_row_div4;
26445         
26446 # check multiple-4 success:     1
26447 DELETE FROM t1
26448 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26449 AND @max_row_div2 + @max_row_div4 + @max_row;
26450         
26451 # check multiple-5 success:     1
26452 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26453 INSERT INTO t1
26454 SET f_int1 = @cur_value , f_int2 = @cur_value,
26455 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26456 f_charbig = '#SINGLE#';
26457         
26458 # check single-1 success:       1
26459 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26460 INSERT INTO t1
26461 SET f_int1 = @cur_value , f_int2 = @cur_value,
26462 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26463 f_charbig = '#SINGLE#';
26464         
26465 # check single-2 success:       1
26466 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26467 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26468 UPDATE t1 SET f_int1 = @cur_value2
26469 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26470         
26471 # check single-3 success:       1
26472 SET @cur_value1= -1;
26473 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26474 UPDATE t1 SET f_int1 = @cur_value1
26475 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26476         
26477 # check single-4 success:       1
26478 SELECT MAX(f_int1) INTO @cur_value FROM t1;
26479 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26480         
26481 # check single-5 success:       1
26482 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26483         
26484 # check single-6 success:       1
26485 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26486         
26487 # check single-7 success:       1
26488 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
26489 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26490 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26491 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26492 f_charbig = '#NULL#';
26493 INSERT INTO t1
26494 SET f_int1 = NULL , f_int2 = -@max_row,
26495 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26496 f_charbig = '#NULL#';
26497 # check null success:    1
26498         
26499 # check null-1 success:         1
26500 UPDATE t1 SET f_int1 = -@max_row
26501 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26502 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26503         
26504 # check null-2 success:         1
26505 UPDATE t1 SET f_int1 = NULL
26506 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26507 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26508         
26509 # check null-3 success:         1
26510 DELETE FROM t1
26511 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26512 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26513         
26514 # check null-4 success:         1
26515 DELETE FROM t1
26516 WHERE f_int1 = 0 AND f_int2 = 0
26517 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26518 AND f_charbig = '#NULL#';
26519 SET AUTOCOMMIT= 0;
26520 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26521 SELECT f_int1, f_int1, '', '', 'was inserted'
26522 FROM t0_template source_tab
26523 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26524         
26525 # check transactions-1 success:         1
26526 COMMIT WORK;
26527         
26528 # check transactions-2 success:         1
26529 ROLLBACK WORK;
26530         
26531 # check transactions-3 success:         1
26532 DELETE FROM t1 WHERE f_charbig = 'was inserted';
26533 COMMIT WORK;
26534 ROLLBACK WORK;
26535         
26536 # check transactions-4 success:         1
26537 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26538 SELECT f_int1, f_int1, '', '', 'was inserted'
26539 FROM t0_template source_tab
26540 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26541         
26542 # check transactions-5 success:         1
26543 ROLLBACK WORK;
26544 Warnings:
26545 Warning 1196    Some non-transactional changed tables couldn't be rolled back
26546         
26547 # check transactions-6 success:         1
26548 # INFO: Storage engine used for t1 seems to be not transactional.
26549 COMMIT;
26550         
26551 # check transactions-7 success:         1
26552 DELETE FROM t1 WHERE f_charbig = 'was inserted';
26553 COMMIT WORK;
26554 SET @@session.sql_mode = 'traditional';
26555 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26556 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26557 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26558 '', '', 'was inserted' FROM t0_template
26559 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26560 ERROR 22012: Division by 0
26561 COMMIT;
26562         
26563 # check transactions-8 success:         1
26564 # INFO: Storage engine used for t1 seems to be unable to revert
26565 #       changes made by the failing statement.
26566 SET @@session.sql_mode = '';
26567 SET AUTOCOMMIT= 1;
26568 DELETE FROM t1 WHERE f_charbig = 'was inserted';
26569 COMMIT WORK;
26570 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26571         
26572 # check special-1 success:      1
26573 UPDATE t1 SET f_charbig = '';
26574         
26575 # check special-2 success:      1
26576 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26577 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26578 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26579 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26580 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26581 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26582 'just inserted' FROM t0_template
26583 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26584 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26585 BEGIN
26586 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26587 f_charbig = 'updated by trigger'
26588       WHERE f_int1 = new.f_int1;
26589 END|
26590 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26591 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26592 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26593         
26594 # check trigger-1 success:      1
26595 DROP TRIGGER trg_1;
26596 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26597 f_int2 = CAST(f_char1 AS SIGNED INT),
26598 f_charbig = 'just inserted'
26599    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26600 DELETE FROM t0_aux
26601 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26602 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26603 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26604 'just inserted' FROM t0_template
26605 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26606 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26607 BEGIN
26608 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26609 f_charbig = 'updated by trigger'
26610       WHERE f_int1 = new.f_int1;
26611 END|
26612 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26613 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26614 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26615         
26616 # check trigger-2 success:      1
26617 DROP TRIGGER trg_1;
26618 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26619 f_int2 = CAST(f_char1 AS SIGNED INT),
26620 f_charbig = 'just inserted'
26621    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26622 DELETE FROM t0_aux
26623 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26624 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26625 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26626 'just inserted' FROM t0_template
26627 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26628 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26629 BEGIN
26630 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26631 f_charbig = 'updated by trigger'
26632       WHERE f_int1 = new.f_int1;
26633 END|
26634 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
26635 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26636         
26637 # check trigger-3 success:      1
26638 DROP TRIGGER trg_1;
26639 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26640 f_int2 = CAST(f_char1 AS SIGNED INT),
26641 f_charbig = 'just inserted'
26642    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26643 DELETE FROM t0_aux
26644 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26645 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26646 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26647 'just inserted' FROM t0_template
26648 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26649 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26650 BEGIN
26651 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26652 f_charbig = 'updated by trigger'
26653       WHERE f_int1 = - old.f_int1;
26654 END|
26655 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
26656 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26657         
26658 # check trigger-4 success:      1
26659 DROP TRIGGER trg_1;
26660 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26661 f_int2 = CAST(f_char1 AS SIGNED INT),
26662 f_charbig = 'just inserted'
26663    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26664 DELETE FROM t0_aux
26665 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26666 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26667 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26668 'just inserted' FROM t0_template
26669 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26670 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26671 BEGIN
26672 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26673 f_charbig = 'updated by trigger'
26674       WHERE f_int1 = new.f_int1;
26675 END|
26676 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
26677 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26678         
26679 # check trigger-5 success:      1
26680 DROP TRIGGER trg_1;
26681 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26682 f_int2 = CAST(f_char1 AS SIGNED INT),
26683 f_charbig = 'just inserted'
26684    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26685 DELETE FROM t0_aux
26686 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26687 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26688 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26689 'just inserted' FROM t0_template
26690 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26691 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26692 BEGIN
26693 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26694 f_charbig = 'updated by trigger'
26695       WHERE f_int1 = - old.f_int1;
26696 END|
26697 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
26698 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26699         
26700 # check trigger-6 success:      1
26701 DROP TRIGGER trg_1;
26702 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26703 f_int2 = CAST(f_char1 AS SIGNED INT),
26704 f_charbig = 'just inserted'
26705    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26706 DELETE FROM t0_aux
26707 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26708 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26709 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26710 'just inserted' FROM t0_template
26711 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26712 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26713 BEGIN
26714 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26715 f_charbig = 'updated by trigger'
26716       WHERE f_int1 = - old.f_int1;
26717 END|
26718 DELETE FROM t0_aux
26719 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26720         
26721 # check trigger-7 success:      1
26722 DROP TRIGGER trg_1;
26723 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26724 f_int2 = CAST(f_char1 AS SIGNED INT),
26725 f_charbig = 'just inserted'
26726    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26727 DELETE FROM t0_aux
26728 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26729 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26730 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26731 'just inserted' FROM t0_template
26732 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26733 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26734 BEGIN
26735 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26736 f_charbig = 'updated by trigger'
26737       WHERE f_int1 = - old.f_int1;
26738 END|
26739 DELETE FROM t0_aux
26740 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26741         
26742 # check trigger-8 success:      1
26743 DROP TRIGGER trg_1;
26744 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26745 f_int2 = CAST(f_char1 AS SIGNED INT),
26746 f_charbig = 'just inserted'
26747    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26748 DELETE FROM t0_aux
26749 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26750 DELETE FROM t1
26751 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26752 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26753 BEGIN
26754 SET new.f_int1 = old.f_int1 + @max_row,
26755 new.f_int2 = old.f_int2 - @max_row,
26756 new.f_charbig = '####updated per update trigger####';
26757 END|
26758 UPDATE t1
26759 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26760 f_charbig = '####updated per update statement itself####';
26761         
26762 # check trigger-9 success:      1
26763 DROP TRIGGER trg_2;
26764 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26765 f_int2 = CAST(f_char1 AS SIGNED INT),
26766 f_charbig = CONCAT('===',f_char1,'===');
26767 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26768 BEGIN
26769 SET new.f_int1 = new.f_int1 + @max_row,
26770 new.f_int2 = new.f_int2 - @max_row,
26771 new.f_charbig = '####updated per update trigger####';
26772 END|
26773 UPDATE t1
26774 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26775 f_charbig = '####updated per update statement itself####';
26776         
26777 # check trigger-10 success:     1
26778 DROP TRIGGER trg_2;
26779 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26780 f_int2 = CAST(f_char1 AS SIGNED INT),
26781 f_charbig = CONCAT('===',f_char1,'===');
26782 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26783 BEGIN
26784 SET new.f_int1 = @my_max1 + @counter,
26785 new.f_int2 = @my_min2 - @counter,
26786 new.f_charbig = '####updated per insert trigger####';
26787 SET @counter = @counter + 1;
26788 END|
26789 SET @counter = 1;
26790 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26791 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26792 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26793 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26794 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26795 ORDER BY f_int1;
26796 DROP TRIGGER trg_3;
26797         
26798 # check trigger-11 success:     1
26799 DELETE FROM t1
26800 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26801 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26802 AND f_charbig = '####updated per insert trigger####';
26803 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26804 BEGIN
26805 SET new.f_int1 = @my_max1 + @counter,
26806 new.f_int2 = @my_min2 - @counter,
26807 new.f_charbig = '####updated per insert trigger####';
26808 SET @counter = @counter + 1;
26809 END|
26810 SET @counter = 1;
26811 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26812 INSERT INTO t1 (f_char1, f_char2, f_charbig)
26813 SELECT CAST(f_int1 AS CHAR),
26814 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26815 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26816 ORDER BY f_int1;
26817 DROP TRIGGER trg_3;
26818         
26819 # check trigger-12 success:     1
26820 DELETE FROM t1
26821 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26822 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26823 AND f_charbig = '####updated per insert trigger####';
26824 ANALYZE  TABLE t1;
26825 Table   Op      Msg_type        Msg_text
26826 test.t1 analyze status  OK
26827 CHECK    TABLE t1 EXTENDED;
26828 Table   Op      Msg_type        Msg_text
26829 test.t1 check   status  OK
26830 CHECKSUM TABLE t1 EXTENDED;
26831 Table   Checksum
26832 test.t1 <some_value>
26833 OPTIMIZE TABLE t1;
26834 Table   Op      Msg_type        Msg_text
26835 test.t1 optimize        status  OK
26836 # check layout success:    1
26837 REPAIR   TABLE t1 EXTENDED;
26838 Table   Op      Msg_type        Msg_text
26839 test.t1 repair  status  OK
26840 # check layout success:    1
26841 TRUNCATE t1;
26842         
26843 # check TRUNCATE success:       1
26844 # check layout success:    1
26845 # End usability test (inc/partition_check.inc)
26846 DROP TABLE t1;
26847 CREATE TABLE t1 (
26848 f_int1 INTEGER,
26849 f_int2 INTEGER,
26850 f_char1 CHAR(20),
26851 f_char2 CHAR(20),
26852 f_charbig VARCHAR(1000)
26855 PARTITION BY LIST(ABS(MOD(f_int1,2)))
26856 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
26857 (PARTITION part_1 VALUES IN (0),
26858  PARTITION part_2 VALUES IN (1),
26859  PARTITION part_3 VALUES IN (NULL));
26860 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26861 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26862 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26863 ALTER TABLE t1 CHECK PARTITION part_1,part_2;
26864 Table   Op      Msg_type        Msg_text
26865 test.t1 check   status  OK
26866 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26867 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26868 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26869 # Start usability test (inc/partition_check.inc)
26870 create_command
26871 SHOW CREATE TABLE t1;
26872 Table   Create Table
26873 t1      CREATE TABLE `t1` (
26874   `f_int1` int(11) DEFAULT NULL,
26875   `f_int2` int(11) DEFAULT NULL,
26876   `f_char1` char(20) DEFAULT NULL,
26877   `f_char2` char(20) DEFAULT NULL,
26878   `f_charbig` varchar(1000) DEFAULT NULL
26879 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
26880 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
26881 SUBPARTITION BY KEY (f_int1)
26882 SUBPARTITIONS 3
26883 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
26884  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
26885  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
26887 unified filelist
26888 t1#P#part_1#SP#part_1sp0.MYD
26889 t1#P#part_1#SP#part_1sp0.MYI
26890 t1#P#part_1#SP#part_1sp1.MYD
26891 t1#P#part_1#SP#part_1sp1.MYI
26892 t1#P#part_1#SP#part_1sp2.MYD
26893 t1#P#part_1#SP#part_1sp2.MYI
26894 t1#P#part_2#SP#part_2sp0.MYD
26895 t1#P#part_2#SP#part_2sp0.MYI
26896 t1#P#part_2#SP#part_2sp1.MYD
26897 t1#P#part_2#SP#part_2sp1.MYI
26898 t1#P#part_2#SP#part_2sp2.MYD
26899 t1#P#part_2#SP#part_2sp2.MYI
26900 t1#P#part_3#SP#part_3sp0.MYD
26901 t1#P#part_3#SP#part_3sp0.MYI
26902 t1#P#part_3#SP#part_3sp1.MYD
26903 t1#P#part_3#SP#part_3sp1.MYI
26904 t1#P#part_3#SP#part_3sp2.MYD
26905 t1#P#part_3#SP#part_3sp2.MYI
26906 t1.frm
26907 t1.par
26909 # check prerequisites-1 success:    1
26910 # check COUNT(*) success:    1
26911 # check MIN/MAX(f_int1) success:    1
26912 # check MIN/MAX(f_int2) success:    1
26913 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26914 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26915 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26916 WHERE f_int1 IN (2,3);
26917 # check prerequisites-3 success:    1
26918 DELETE FROM t1 WHERE f_charbig = 'delete me';
26919 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
26920 # check read via f_int1 success: 1
26921 # check read via f_int2 success: 1
26922         
26923 # check multiple-1 success:     1
26924 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26925         
26926 # check multiple-2 success:     1
26927 INSERT INTO t1 SELECT * FROM t0_template
26928 WHERE MOD(f_int1,3) = 0;
26929         
26930 # check multiple-3 success:     1
26931 UPDATE t1 SET f_int1 = f_int1 + @max_row
26932 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26933 AND @max_row_div2 + @max_row_div4;
26934         
26935 # check multiple-4 success:     1
26936 DELETE FROM t1
26937 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26938 AND @max_row_div2 + @max_row_div4 + @max_row;
26939         
26940 # check multiple-5 success:     1
26941 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26942 INSERT INTO t1
26943 SET f_int1 = @cur_value , f_int2 = @cur_value,
26944 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26945 f_charbig = '#SINGLE#';
26946         
26947 # check single-1 success:       1
26948 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26949 INSERT INTO t1
26950 SET f_int1 = @cur_value , f_int2 = @cur_value,
26951 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26952 f_charbig = '#SINGLE#';
26953         
26954 # check single-2 success:       1
26955 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26956 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26957 UPDATE t1 SET f_int1 = @cur_value2
26958 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26959         
26960 # check single-3 success:       1
26961 SET @cur_value1= -1;
26962 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26963 UPDATE t1 SET f_int1 = @cur_value1
26964 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26965         
26966 # check single-4 success:       1
26967 SELECT MAX(f_int1) INTO @cur_value FROM t1;
26968 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26969         
26970 # check single-5 success:       1
26971 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26972         
26973 # check single-6 success:       1
26974 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26975         
26976 # check single-7 success:       1
26977 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
26978 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26979 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26980 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26981 f_charbig = '#NULL#';
26982 INSERT INTO t1
26983 SET f_int1 = NULL , f_int2 = -@max_row,
26984 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26985 f_charbig = '#NULL#';
26986 # check null success:    1
26987         
26988 # check null-1 success:         1
26989 UPDATE t1 SET f_int1 = -@max_row
26990 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26991 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26992         
26993 # check null-2 success:         1
26994 UPDATE t1 SET f_int1 = NULL
26995 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26996 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26997         
26998 # check null-3 success:         1
26999 DELETE FROM t1
27000 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27001 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27002         
27003 # check null-4 success:         1
27004 DELETE FROM t1
27005 WHERE f_int1 = 0 AND f_int2 = 0
27006 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27007 AND f_charbig = '#NULL#';
27008 SET AUTOCOMMIT= 0;
27009 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27010 SELECT f_int1, f_int1, '', '', 'was inserted'
27011 FROM t0_template source_tab
27012 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27013         
27014 # check transactions-1 success:         1
27015 COMMIT WORK;
27016         
27017 # check transactions-2 success:         1
27018 ROLLBACK WORK;
27019         
27020 # check transactions-3 success:         1
27021 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27022 COMMIT WORK;
27023 ROLLBACK WORK;
27024         
27025 # check transactions-4 success:         1
27026 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27027 SELECT f_int1, f_int1, '', '', 'was inserted'
27028 FROM t0_template source_tab
27029 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27030         
27031 # check transactions-5 success:         1
27032 ROLLBACK WORK;
27033 Warnings:
27034 Warning 1196    Some non-transactional changed tables couldn't be rolled back
27035         
27036 # check transactions-6 success:         1
27037 # INFO: Storage engine used for t1 seems to be not transactional.
27038 COMMIT;
27039         
27040 # check transactions-7 success:         1
27041 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27042 COMMIT WORK;
27043 SET @@session.sql_mode = 'traditional';
27044 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27045 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27046 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27047 '', '', 'was inserted' FROM t0_template
27048 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27049 ERROR 22012: Division by 0
27050 COMMIT;
27051         
27052 # check transactions-8 success:         1
27053 # INFO: Storage engine used for t1 seems to be unable to revert
27054 #       changes made by the failing statement.
27055 SET @@session.sql_mode = '';
27056 SET AUTOCOMMIT= 1;
27057 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27058 COMMIT WORK;
27059 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27060         
27061 # check special-1 success:      1
27062 UPDATE t1 SET f_charbig = '';
27063         
27064 # check special-2 success:      1
27065 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27066 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27067 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27068 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27069 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27070 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27071 'just inserted' FROM t0_template
27072 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27073 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27074 BEGIN
27075 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27076 f_charbig = 'updated by trigger'
27077       WHERE f_int1 = new.f_int1;
27078 END|
27079 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27080 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27081 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27082         
27083 # check trigger-1 success:      1
27084 DROP TRIGGER trg_1;
27085 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27086 f_int2 = CAST(f_char1 AS SIGNED INT),
27087 f_charbig = 'just inserted'
27088    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27089 DELETE FROM t0_aux
27090 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27091 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27092 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27093 'just inserted' FROM t0_template
27094 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27095 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27096 BEGIN
27097 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27098 f_charbig = 'updated by trigger'
27099       WHERE f_int1 = new.f_int1;
27100 END|
27101 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27102 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27103 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27104         
27105 # check trigger-2 success:      1
27106 DROP TRIGGER trg_1;
27107 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27108 f_int2 = CAST(f_char1 AS SIGNED INT),
27109 f_charbig = 'just inserted'
27110    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27111 DELETE FROM t0_aux
27112 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27113 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27114 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27115 'just inserted' FROM t0_template
27116 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27117 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27118 BEGIN
27119 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27120 f_charbig = 'updated by trigger'
27121       WHERE f_int1 = new.f_int1;
27122 END|
27123 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
27124 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27125         
27126 # check trigger-3 success:      1
27127 DROP TRIGGER trg_1;
27128 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27129 f_int2 = CAST(f_char1 AS SIGNED INT),
27130 f_charbig = 'just inserted'
27131    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27132 DELETE FROM t0_aux
27133 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27134 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27135 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27136 'just inserted' FROM t0_template
27137 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27138 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27139 BEGIN
27140 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27141 f_charbig = 'updated by trigger'
27142       WHERE f_int1 = - old.f_int1;
27143 END|
27144 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
27145 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27146         
27147 # check trigger-4 success:      1
27148 DROP TRIGGER trg_1;
27149 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27150 f_int2 = CAST(f_char1 AS SIGNED INT),
27151 f_charbig = 'just inserted'
27152    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27153 DELETE FROM t0_aux
27154 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27155 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27156 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27157 'just inserted' FROM t0_template
27158 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27159 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27160 BEGIN
27161 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27162 f_charbig = 'updated by trigger'
27163       WHERE f_int1 = new.f_int1;
27164 END|
27165 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
27166 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27167         
27168 # check trigger-5 success:      1
27169 DROP TRIGGER trg_1;
27170 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27171 f_int2 = CAST(f_char1 AS SIGNED INT),
27172 f_charbig = 'just inserted'
27173    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27174 DELETE FROM t0_aux
27175 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27176 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27177 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27178 'just inserted' FROM t0_template
27179 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27180 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27181 BEGIN
27182 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27183 f_charbig = 'updated by trigger'
27184       WHERE f_int1 = - old.f_int1;
27185 END|
27186 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
27187 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27188         
27189 # check trigger-6 success:      1
27190 DROP TRIGGER trg_1;
27191 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27192 f_int2 = CAST(f_char1 AS SIGNED INT),
27193 f_charbig = 'just inserted'
27194    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27195 DELETE FROM t0_aux
27196 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27197 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27198 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27199 'just inserted' FROM t0_template
27200 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27201 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27202 BEGIN
27203 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27204 f_charbig = 'updated by trigger'
27205       WHERE f_int1 = - old.f_int1;
27206 END|
27207 DELETE FROM t0_aux
27208 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27209         
27210 # check trigger-7 success:      1
27211 DROP TRIGGER trg_1;
27212 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27213 f_int2 = CAST(f_char1 AS SIGNED INT),
27214 f_charbig = 'just inserted'
27215    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27216 DELETE FROM t0_aux
27217 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27218 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27219 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27220 'just inserted' FROM t0_template
27221 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27222 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27223 BEGIN
27224 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27225 f_charbig = 'updated by trigger'
27226       WHERE f_int1 = - old.f_int1;
27227 END|
27228 DELETE FROM t0_aux
27229 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27230         
27231 # check trigger-8 success:      1
27232 DROP TRIGGER trg_1;
27233 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27234 f_int2 = CAST(f_char1 AS SIGNED INT),
27235 f_charbig = 'just inserted'
27236    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27237 DELETE FROM t0_aux
27238 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27239 DELETE FROM t1
27240 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27241 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27242 BEGIN
27243 SET new.f_int1 = old.f_int1 + @max_row,
27244 new.f_int2 = old.f_int2 - @max_row,
27245 new.f_charbig = '####updated per update trigger####';
27246 END|
27247 UPDATE t1
27248 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27249 f_charbig = '####updated per update statement itself####';
27250         
27251 # check trigger-9 success:      1
27252 DROP TRIGGER trg_2;
27253 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27254 f_int2 = CAST(f_char1 AS SIGNED INT),
27255 f_charbig = CONCAT('===',f_char1,'===');
27256 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27257 BEGIN
27258 SET new.f_int1 = new.f_int1 + @max_row,
27259 new.f_int2 = new.f_int2 - @max_row,
27260 new.f_charbig = '####updated per update trigger####';
27261 END|
27262 UPDATE t1
27263 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27264 f_charbig = '####updated per update statement itself####';
27265         
27266 # check trigger-10 success:     1
27267 DROP TRIGGER trg_2;
27268 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27269 f_int2 = CAST(f_char1 AS SIGNED INT),
27270 f_charbig = CONCAT('===',f_char1,'===');
27271 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27272 BEGIN
27273 SET new.f_int1 = @my_max1 + @counter,
27274 new.f_int2 = @my_min2 - @counter,
27275 new.f_charbig = '####updated per insert trigger####';
27276 SET @counter = @counter + 1;
27277 END|
27278 SET @counter = 1;
27279 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27280 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27281 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27282 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27283 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27284 ORDER BY f_int1;
27285 DROP TRIGGER trg_3;
27286         
27287 # check trigger-11 success:     1
27288 DELETE FROM t1
27289 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27290 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27291 AND f_charbig = '####updated per insert trigger####';
27292 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27293 BEGIN
27294 SET new.f_int1 = @my_max1 + @counter,
27295 new.f_int2 = @my_min2 - @counter,
27296 new.f_charbig = '####updated per insert trigger####';
27297 SET @counter = @counter + 1;
27298 END|
27299 SET @counter = 1;
27300 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27301 INSERT INTO t1 (f_char1, f_char2, f_charbig)
27302 SELECT CAST(f_int1 AS CHAR),
27303 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27304 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27305 ORDER BY f_int1;
27306 DROP TRIGGER trg_3;
27307         
27308 # check trigger-12 success:     1
27309 DELETE FROM t1
27310 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27311 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27312 AND f_charbig = '####updated per insert trigger####';
27313 ANALYZE  TABLE t1;
27314 Table   Op      Msg_type        Msg_text
27315 test.t1 analyze status  OK
27316 CHECK    TABLE t1 EXTENDED;
27317 Table   Op      Msg_type        Msg_text
27318 test.t1 check   status  OK
27319 CHECKSUM TABLE t1 EXTENDED;
27320 Table   Checksum
27321 test.t1 <some_value>
27322 OPTIMIZE TABLE t1;
27323 Table   Op      Msg_type        Msg_text
27324 test.t1 optimize        status  OK
27325 # check layout success:    1
27326 REPAIR   TABLE t1 EXTENDED;
27327 Table   Op      Msg_type        Msg_text
27328 test.t1 repair  status  OK
27329 # check layout success:    1
27330 TRUNCATE t1;
27331         
27332 # check TRUNCATE success:       1
27333 # check layout success:    1
27334 # End usability test (inc/partition_check.inc)
27335 DROP TABLE t1;
27336 #  2.3 ALTER ... CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
27337 DROP TABLE IF EXISTS t1;
27338 CREATE TABLE t1 (
27339 f_int1 INTEGER,
27340 f_int2 INTEGER,
27341 f_char1 CHAR(20),
27342 f_char2 CHAR(20),
27343 f_charbig VARCHAR(1000)
27346 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
27347 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27348 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27349 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
27350 ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
27351 Table   Op      Msg_type        Msg_text
27352 test.t1 check   error   Error in list of partitions to test.t1
27353 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27354 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27355 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
27356 # Start usability test (inc/partition_check.inc)
27357 create_command
27358 SHOW CREATE TABLE t1;
27359 Table   Create Table
27360 t1      CREATE TABLE `t1` (
27361   `f_int1` int(11) DEFAULT NULL,
27362   `f_int2` int(11) DEFAULT NULL,
27363   `f_char1` char(20) DEFAULT NULL,
27364   `f_char2` char(20) DEFAULT NULL,
27365   `f_charbig` varchar(1000) DEFAULT NULL
27366 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
27367 /*!50100 PARTITION BY HASH (f_int1)
27368 (PARTITION part_1 ENGINE = MyISAM,
27369  PARTITION part_2 ENGINE = MyISAM) */
27371 unified filelist
27372 t1#P#part_1.MYD
27373 t1#P#part_1.MYI
27374 t1#P#part_2.MYD
27375 t1#P#part_2.MYI
27376 t1.frm
27377 t1.par
27379 # check prerequisites-1 success:    1
27380 # check COUNT(*) success:    1
27381 # check MIN/MAX(f_int1) success:    1
27382 # check MIN/MAX(f_int2) success:    1
27383 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27384 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27385 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27386 WHERE f_int1 IN (2,3);
27387 # check prerequisites-3 success:    1
27388 DELETE FROM t1 WHERE f_charbig = 'delete me';
27389 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
27390 # check read via f_int1 success: 1
27391 # check read via f_int2 success: 1
27392         
27393 # check multiple-1 success:     1
27394 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27395         
27396 # check multiple-2 success:     1
27397 INSERT INTO t1 SELECT * FROM t0_template
27398 WHERE MOD(f_int1,3) = 0;
27399         
27400 # check multiple-3 success:     1
27401 UPDATE t1 SET f_int1 = f_int1 + @max_row
27402 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27403 AND @max_row_div2 + @max_row_div4;
27404         
27405 # check multiple-4 success:     1
27406 DELETE FROM t1
27407 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27408 AND @max_row_div2 + @max_row_div4 + @max_row;
27409         
27410 # check multiple-5 success:     1
27411 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27412 INSERT INTO t1
27413 SET f_int1 = @cur_value , f_int2 = @cur_value,
27414 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27415 f_charbig = '#SINGLE#';
27416         
27417 # check single-1 success:       1
27418 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27419 INSERT INTO t1
27420 SET f_int1 = @cur_value , f_int2 = @cur_value,
27421 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27422 f_charbig = '#SINGLE#';
27423         
27424 # check single-2 success:       1
27425 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27426 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27427 UPDATE t1 SET f_int1 = @cur_value2
27428 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27429         
27430 # check single-3 success:       1
27431 SET @cur_value1= -1;
27432 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27433 UPDATE t1 SET f_int1 = @cur_value1
27434 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27435         
27436 # check single-4 success:       1
27437 SELECT MAX(f_int1) INTO @cur_value FROM t1;
27438 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27439         
27440 # check single-5 success:       1
27441 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27442         
27443 # check single-6 success:       1
27444 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27445         
27446 # check single-7 success:       1
27447 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
27448 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27449 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27450 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27451 f_charbig = '#NULL#';
27452 INSERT INTO t1
27453 SET f_int1 = NULL , f_int2 = -@max_row,
27454 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27455 f_charbig = '#NULL#';
27456 # check null success:    1
27457         
27458 # check null-1 success:         1
27459 UPDATE t1 SET f_int1 = -@max_row
27460 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27461 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27462         
27463 # check null-2 success:         1
27464 UPDATE t1 SET f_int1 = NULL
27465 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27466 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27467         
27468 # check null-3 success:         1
27469 DELETE FROM t1
27470 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27471 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27472         
27473 # check null-4 success:         1
27474 DELETE FROM t1
27475 WHERE f_int1 = 0 AND f_int2 = 0
27476 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27477 AND f_charbig = '#NULL#';
27478 SET AUTOCOMMIT= 0;
27479 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27480 SELECT f_int1, f_int1, '', '', 'was inserted'
27481 FROM t0_template source_tab
27482 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27483         
27484 # check transactions-1 success:         1
27485 COMMIT WORK;
27486         
27487 # check transactions-2 success:         1
27488 ROLLBACK WORK;
27489         
27490 # check transactions-3 success:         1
27491 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27492 COMMIT WORK;
27493 ROLLBACK WORK;
27494         
27495 # check transactions-4 success:         1
27496 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27497 SELECT f_int1, f_int1, '', '', 'was inserted'
27498 FROM t0_template source_tab
27499 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27500         
27501 # check transactions-5 success:         1
27502 ROLLBACK WORK;
27503 Warnings:
27504 Warning 1196    Some non-transactional changed tables couldn't be rolled back
27505         
27506 # check transactions-6 success:         1
27507 # INFO: Storage engine used for t1 seems to be not transactional.
27508 COMMIT;
27509         
27510 # check transactions-7 success:         1
27511 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27512 COMMIT WORK;
27513 SET @@session.sql_mode = 'traditional';
27514 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27515 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27516 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27517 '', '', 'was inserted' FROM t0_template
27518 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27519 ERROR 22012: Division by 0
27520 COMMIT;
27521         
27522 # check transactions-8 success:         1
27523 # INFO: Storage engine used for t1 seems to be unable to revert
27524 #       changes made by the failing statement.
27525 SET @@session.sql_mode = '';
27526 SET AUTOCOMMIT= 1;
27527 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27528 COMMIT WORK;
27529 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27530         
27531 # check special-1 success:      1
27532 UPDATE t1 SET f_charbig = '';
27533         
27534 # check special-2 success:      1
27535 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27536 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27537 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27538 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27539 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27540 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27541 'just inserted' FROM t0_template
27542 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27543 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27544 BEGIN
27545 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27546 f_charbig = 'updated by trigger'
27547       WHERE f_int1 = new.f_int1;
27548 END|
27549 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27550 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27551 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27552         
27553 # check trigger-1 success:      1
27554 DROP TRIGGER trg_1;
27555 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27556 f_int2 = CAST(f_char1 AS SIGNED INT),
27557 f_charbig = 'just inserted'
27558    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27559 DELETE FROM t0_aux
27560 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27561 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27562 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27563 'just inserted' FROM t0_template
27564 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27565 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27566 BEGIN
27567 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27568 f_charbig = 'updated by trigger'
27569       WHERE f_int1 = new.f_int1;
27570 END|
27571 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27572 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27573 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27574         
27575 # check trigger-2 success:      1
27576 DROP TRIGGER trg_1;
27577 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27578 f_int2 = CAST(f_char1 AS SIGNED INT),
27579 f_charbig = 'just inserted'
27580    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27581 DELETE FROM t0_aux
27582 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27583 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27584 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27585 'just inserted' FROM t0_template
27586 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27587 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27588 BEGIN
27589 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27590 f_charbig = 'updated by trigger'
27591       WHERE f_int1 = new.f_int1;
27592 END|
27593 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
27594 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27595         
27596 # check trigger-3 success:      1
27597 DROP TRIGGER trg_1;
27598 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27599 f_int2 = CAST(f_char1 AS SIGNED INT),
27600 f_charbig = 'just inserted'
27601    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27602 DELETE FROM t0_aux
27603 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27604 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27605 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27606 'just inserted' FROM t0_template
27607 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27608 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27609 BEGIN
27610 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27611 f_charbig = 'updated by trigger'
27612       WHERE f_int1 = - old.f_int1;
27613 END|
27614 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
27615 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27616         
27617 # check trigger-4 success:      1
27618 DROP TRIGGER trg_1;
27619 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27620 f_int2 = CAST(f_char1 AS SIGNED INT),
27621 f_charbig = 'just inserted'
27622    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27623 DELETE FROM t0_aux
27624 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27625 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27626 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27627 'just inserted' FROM t0_template
27628 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27629 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27630 BEGIN
27631 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27632 f_charbig = 'updated by trigger'
27633       WHERE f_int1 = new.f_int1;
27634 END|
27635 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
27636 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27637         
27638 # check trigger-5 success:      1
27639 DROP TRIGGER trg_1;
27640 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27641 f_int2 = CAST(f_char1 AS SIGNED INT),
27642 f_charbig = 'just inserted'
27643    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27644 DELETE FROM t0_aux
27645 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27646 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27647 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27648 'just inserted' FROM t0_template
27649 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27650 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27651 BEGIN
27652 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27653 f_charbig = 'updated by trigger'
27654       WHERE f_int1 = - old.f_int1;
27655 END|
27656 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
27657 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27658         
27659 # check trigger-6 success:      1
27660 DROP TRIGGER trg_1;
27661 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27662 f_int2 = CAST(f_char1 AS SIGNED INT),
27663 f_charbig = 'just inserted'
27664    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27665 DELETE FROM t0_aux
27666 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27667 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27668 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27669 'just inserted' FROM t0_template
27670 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27671 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27672 BEGIN
27673 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27674 f_charbig = 'updated by trigger'
27675       WHERE f_int1 = - old.f_int1;
27676 END|
27677 DELETE FROM t0_aux
27678 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27679         
27680 # check trigger-7 success:      1
27681 DROP TRIGGER trg_1;
27682 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27683 f_int2 = CAST(f_char1 AS SIGNED INT),
27684 f_charbig = 'just inserted'
27685    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27686 DELETE FROM t0_aux
27687 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27688 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27689 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27690 'just inserted' FROM t0_template
27691 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27692 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27693 BEGIN
27694 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27695 f_charbig = 'updated by trigger'
27696       WHERE f_int1 = - old.f_int1;
27697 END|
27698 DELETE FROM t0_aux
27699 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27700         
27701 # check trigger-8 success:      1
27702 DROP TRIGGER trg_1;
27703 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27704 f_int2 = CAST(f_char1 AS SIGNED INT),
27705 f_charbig = 'just inserted'
27706    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27707 DELETE FROM t0_aux
27708 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27709 DELETE FROM t1
27710 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27711 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27712 BEGIN
27713 SET new.f_int1 = old.f_int1 + @max_row,
27714 new.f_int2 = old.f_int2 - @max_row,
27715 new.f_charbig = '####updated per update trigger####';
27716 END|
27717 UPDATE t1
27718 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27719 f_charbig = '####updated per update statement itself####';
27720         
27721 # check trigger-9 success:      1
27722 DROP TRIGGER trg_2;
27723 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27724 f_int2 = CAST(f_char1 AS SIGNED INT),
27725 f_charbig = CONCAT('===',f_char1,'===');
27726 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27727 BEGIN
27728 SET new.f_int1 = new.f_int1 + @max_row,
27729 new.f_int2 = new.f_int2 - @max_row,
27730 new.f_charbig = '####updated per update trigger####';
27731 END|
27732 UPDATE t1
27733 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27734 f_charbig = '####updated per update statement itself####';
27735         
27736 # check trigger-10 success:     1
27737 DROP TRIGGER trg_2;
27738 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27739 f_int2 = CAST(f_char1 AS SIGNED INT),
27740 f_charbig = CONCAT('===',f_char1,'===');
27741 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27742 BEGIN
27743 SET new.f_int1 = @my_max1 + @counter,
27744 new.f_int2 = @my_min2 - @counter,
27745 new.f_charbig = '####updated per insert trigger####';
27746 SET @counter = @counter + 1;
27747 END|
27748 SET @counter = 1;
27749 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27750 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27751 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27752 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27753 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27754 ORDER BY f_int1;
27755 DROP TRIGGER trg_3;
27756         
27757 # check trigger-11 success:     1
27758 DELETE FROM t1
27759 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27760 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27761 AND f_charbig = '####updated per insert trigger####';
27762 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27763 BEGIN
27764 SET new.f_int1 = @my_max1 + @counter,
27765 new.f_int2 = @my_min2 - @counter,
27766 new.f_charbig = '####updated per insert trigger####';
27767 SET @counter = @counter + 1;
27768 END|
27769 SET @counter = 1;
27770 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27771 INSERT INTO t1 (f_char1, f_char2, f_charbig)
27772 SELECT CAST(f_int1 AS CHAR),
27773 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27774 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27775 ORDER BY f_int1;
27776 DROP TRIGGER trg_3;
27777         
27778 # check trigger-12 success:     1
27779 DELETE FROM t1
27780 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27781 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27782 AND f_charbig = '####updated per insert trigger####';
27783 ANALYZE  TABLE t1;
27784 Table   Op      Msg_type        Msg_text
27785 test.t1 analyze status  OK
27786 CHECK    TABLE t1 EXTENDED;
27787 Table   Op      Msg_type        Msg_text
27788 test.t1 check   status  OK
27789 CHECKSUM TABLE t1 EXTENDED;
27790 Table   Checksum
27791 test.t1 <some_value>
27792 OPTIMIZE TABLE t1;
27793 Table   Op      Msg_type        Msg_text
27794 test.t1 optimize        status  OK
27795 # check layout success:    1
27796 REPAIR   TABLE t1 EXTENDED;
27797 Table   Op      Msg_type        Msg_text
27798 test.t1 repair  status  OK
27799 # check layout success:    1
27800 TRUNCATE t1;
27801         
27802 # check TRUNCATE success:       1
27803 # check layout success:    1
27804 # End usability test (inc/partition_check.inc)
27805 DROP TABLE t1;
27806 CREATE TABLE t1 (
27807 f_int1 INTEGER,
27808 f_int2 INTEGER,
27809 f_char1 CHAR(20),
27810 f_char2 CHAR(20),
27811 f_charbig VARCHAR(1000)
27814 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
27815 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27816 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27817 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
27818 ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
27819 Table   Op      Msg_type        Msg_text
27820 test.t1 check   error   Error in list of partitions to test.t1
27821 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27822 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27823 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
27824 # Start usability test (inc/partition_check.inc)
27825 create_command
27826 SHOW CREATE TABLE t1;
27827 Table   Create Table
27828 t1      CREATE TABLE `t1` (
27829   `f_int1` int(11) DEFAULT NULL,
27830   `f_int2` int(11) DEFAULT NULL,
27831   `f_char1` char(20) DEFAULT NULL,
27832   `f_char2` char(20) DEFAULT NULL,
27833   `f_charbig` varchar(1000) DEFAULT NULL
27834 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
27835 /*!50100 PARTITION BY KEY (f_int1)
27836 (PARTITION part_1 ENGINE = MyISAM,
27837  PARTITION part_2 ENGINE = MyISAM,
27838  PARTITION part_3 ENGINE = MyISAM,
27839  PARTITION part_4 ENGINE = MyISAM,
27840  PARTITION part_5 ENGINE = MyISAM) */
27842 unified filelist
27843 t1#P#part_1.MYD
27844 t1#P#part_1.MYI
27845 t1#P#part_2.MYD
27846 t1#P#part_2.MYI
27847 t1#P#part_3.MYD
27848 t1#P#part_3.MYI
27849 t1#P#part_4.MYD
27850 t1#P#part_4.MYI
27851 t1#P#part_5.MYD
27852 t1#P#part_5.MYI
27853 t1.frm
27854 t1.par
27856 # check prerequisites-1 success:    1
27857 # check COUNT(*) success:    1
27858 # check MIN/MAX(f_int1) success:    1
27859 # check MIN/MAX(f_int2) success:    1
27860 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27861 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27862 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27863 WHERE f_int1 IN (2,3);
27864 # check prerequisites-3 success:    1
27865 DELETE FROM t1 WHERE f_charbig = 'delete me';
27866 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
27867 # check read via f_int1 success: 1
27868 # check read via f_int2 success: 1
27869         
27870 # check multiple-1 success:     1
27871 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27872         
27873 # check multiple-2 success:     1
27874 INSERT INTO t1 SELECT * FROM t0_template
27875 WHERE MOD(f_int1,3) = 0;
27876         
27877 # check multiple-3 success:     1
27878 UPDATE t1 SET f_int1 = f_int1 + @max_row
27879 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27880 AND @max_row_div2 + @max_row_div4;
27881         
27882 # check multiple-4 success:     1
27883 DELETE FROM t1
27884 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27885 AND @max_row_div2 + @max_row_div4 + @max_row;
27886         
27887 # check multiple-5 success:     1
27888 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27889 INSERT INTO t1
27890 SET f_int1 = @cur_value , f_int2 = @cur_value,
27891 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27892 f_charbig = '#SINGLE#';
27893         
27894 # check single-1 success:       1
27895 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27896 INSERT INTO t1
27897 SET f_int1 = @cur_value , f_int2 = @cur_value,
27898 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27899 f_charbig = '#SINGLE#';
27900         
27901 # check single-2 success:       1
27902 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27903 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27904 UPDATE t1 SET f_int1 = @cur_value2
27905 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27906         
27907 # check single-3 success:       1
27908 SET @cur_value1= -1;
27909 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27910 UPDATE t1 SET f_int1 = @cur_value1
27911 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27912         
27913 # check single-4 success:       1
27914 SELECT MAX(f_int1) INTO @cur_value FROM t1;
27915 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27916         
27917 # check single-5 success:       1
27918 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27919         
27920 # check single-6 success:       1
27921 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27922         
27923 # check single-7 success:       1
27924 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
27925 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27926 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27927 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27928 f_charbig = '#NULL#';
27929 INSERT INTO t1
27930 SET f_int1 = NULL , f_int2 = -@max_row,
27931 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27932 f_charbig = '#NULL#';
27933 # check null success:    1
27934         
27935 # check null-1 success:         1
27936 UPDATE t1 SET f_int1 = -@max_row
27937 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27938 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27939         
27940 # check null-2 success:         1
27941 UPDATE t1 SET f_int1 = NULL
27942 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27943 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27944         
27945 # check null-3 success:         1
27946 DELETE FROM t1
27947 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27948 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27949         
27950 # check null-4 success:         1
27951 DELETE FROM t1
27952 WHERE f_int1 = 0 AND f_int2 = 0
27953 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27954 AND f_charbig = '#NULL#';
27955 SET AUTOCOMMIT= 0;
27956 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27957 SELECT f_int1, f_int1, '', '', 'was inserted'
27958 FROM t0_template source_tab
27959 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27960         
27961 # check transactions-1 success:         1
27962 COMMIT WORK;
27963         
27964 # check transactions-2 success:         1
27965 ROLLBACK WORK;
27966         
27967 # check transactions-3 success:         1
27968 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27969 COMMIT WORK;
27970 ROLLBACK WORK;
27971         
27972 # check transactions-4 success:         1
27973 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27974 SELECT f_int1, f_int1, '', '', 'was inserted'
27975 FROM t0_template source_tab
27976 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27977         
27978 # check transactions-5 success:         1
27979 ROLLBACK WORK;
27980 Warnings:
27981 Warning 1196    Some non-transactional changed tables couldn't be rolled back
27982         
27983 # check transactions-6 success:         1
27984 # INFO: Storage engine used for t1 seems to be not transactional.
27985 COMMIT;
27986         
27987 # check transactions-7 success:         1
27988 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27989 COMMIT WORK;
27990 SET @@session.sql_mode = 'traditional';
27991 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27992 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27993 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27994 '', '', 'was inserted' FROM t0_template
27995 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27996 ERROR 22012: Division by 0
27997 COMMIT;
27998         
27999 # check transactions-8 success:         1
28000 # INFO: Storage engine used for t1 seems to be unable to revert
28001 #       changes made by the failing statement.
28002 SET @@session.sql_mode = '';
28003 SET AUTOCOMMIT= 1;
28004 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28005 COMMIT WORK;
28006 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28007         
28008 # check special-1 success:      1
28009 UPDATE t1 SET f_charbig = '';
28010         
28011 # check special-2 success:      1
28012 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28013 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28014 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28015 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28016 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28017 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28018 'just inserted' FROM t0_template
28019 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28020 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28021 BEGIN
28022 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28023 f_charbig = 'updated by trigger'
28024       WHERE f_int1 = new.f_int1;
28025 END|
28026 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28027 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28028 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28029         
28030 # check trigger-1 success:      1
28031 DROP TRIGGER trg_1;
28032 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28033 f_int2 = CAST(f_char1 AS SIGNED INT),
28034 f_charbig = 'just inserted'
28035    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28036 DELETE FROM t0_aux
28037 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28038 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28039 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28040 'just inserted' FROM t0_template
28041 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28042 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28043 BEGIN
28044 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28045 f_charbig = 'updated by trigger'
28046       WHERE f_int1 = new.f_int1;
28047 END|
28048 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28049 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28050 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28051         
28052 # check trigger-2 success:      1
28053 DROP TRIGGER trg_1;
28054 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28055 f_int2 = CAST(f_char1 AS SIGNED INT),
28056 f_charbig = 'just inserted'
28057    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28058 DELETE FROM t0_aux
28059 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28060 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28061 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28062 'just inserted' FROM t0_template
28063 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28064 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28065 BEGIN
28066 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28067 f_charbig = 'updated by trigger'
28068       WHERE f_int1 = new.f_int1;
28069 END|
28070 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
28071 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28072         
28073 # check trigger-3 success:      1
28074 DROP TRIGGER trg_1;
28075 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28076 f_int2 = CAST(f_char1 AS SIGNED INT),
28077 f_charbig = 'just inserted'
28078    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28079 DELETE FROM t0_aux
28080 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28081 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28082 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28083 'just inserted' FROM t0_template
28084 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28085 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28086 BEGIN
28087 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28088 f_charbig = 'updated by trigger'
28089       WHERE f_int1 = - old.f_int1;
28090 END|
28091 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
28092 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28093         
28094 # check trigger-4 success:      1
28095 DROP TRIGGER trg_1;
28096 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28097 f_int2 = CAST(f_char1 AS SIGNED INT),
28098 f_charbig = 'just inserted'
28099    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28100 DELETE FROM t0_aux
28101 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28102 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28103 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28104 'just inserted' FROM t0_template
28105 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28106 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28107 BEGIN
28108 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28109 f_charbig = 'updated by trigger'
28110       WHERE f_int1 = new.f_int1;
28111 END|
28112 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
28113 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28114         
28115 # check trigger-5 success:      1
28116 DROP TRIGGER trg_1;
28117 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28118 f_int2 = CAST(f_char1 AS SIGNED INT),
28119 f_charbig = 'just inserted'
28120    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28121 DELETE FROM t0_aux
28122 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28123 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28124 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28125 'just inserted' FROM t0_template
28126 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28127 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28128 BEGIN
28129 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28130 f_charbig = 'updated by trigger'
28131       WHERE f_int1 = - old.f_int1;
28132 END|
28133 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
28134 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28135         
28136 # check trigger-6 success:      1
28137 DROP TRIGGER trg_1;
28138 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28139 f_int2 = CAST(f_char1 AS SIGNED INT),
28140 f_charbig = 'just inserted'
28141    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28142 DELETE FROM t0_aux
28143 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28144 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28145 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28146 'just inserted' FROM t0_template
28147 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28148 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28149 BEGIN
28150 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28151 f_charbig = 'updated by trigger'
28152       WHERE f_int1 = - old.f_int1;
28153 END|
28154 DELETE FROM t0_aux
28155 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28156         
28157 # check trigger-7 success:      1
28158 DROP TRIGGER trg_1;
28159 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28160 f_int2 = CAST(f_char1 AS SIGNED INT),
28161 f_charbig = 'just inserted'
28162    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28163 DELETE FROM t0_aux
28164 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28165 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28166 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28167 'just inserted' FROM t0_template
28168 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28169 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28170 BEGIN
28171 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28172 f_charbig = 'updated by trigger'
28173       WHERE f_int1 = - old.f_int1;
28174 END|
28175 DELETE FROM t0_aux
28176 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28177         
28178 # check trigger-8 success:      1
28179 DROP TRIGGER trg_1;
28180 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28181 f_int2 = CAST(f_char1 AS SIGNED INT),
28182 f_charbig = 'just inserted'
28183    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28184 DELETE FROM t0_aux
28185 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28186 DELETE FROM t1
28187 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28188 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28189 BEGIN
28190 SET new.f_int1 = old.f_int1 + @max_row,
28191 new.f_int2 = old.f_int2 - @max_row,
28192 new.f_charbig = '####updated per update trigger####';
28193 END|
28194 UPDATE t1
28195 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28196 f_charbig = '####updated per update statement itself####';
28197         
28198 # check trigger-9 success:      1
28199 DROP TRIGGER trg_2;
28200 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28201 f_int2 = CAST(f_char1 AS SIGNED INT),
28202 f_charbig = CONCAT('===',f_char1,'===');
28203 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28204 BEGIN
28205 SET new.f_int1 = new.f_int1 + @max_row,
28206 new.f_int2 = new.f_int2 - @max_row,
28207 new.f_charbig = '####updated per update trigger####';
28208 END|
28209 UPDATE t1
28210 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28211 f_charbig = '####updated per update statement itself####';
28212         
28213 # check trigger-10 success:     1
28214 DROP TRIGGER trg_2;
28215 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28216 f_int2 = CAST(f_char1 AS SIGNED INT),
28217 f_charbig = CONCAT('===',f_char1,'===');
28218 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28219 BEGIN
28220 SET new.f_int1 = @my_max1 + @counter,
28221 new.f_int2 = @my_min2 - @counter,
28222 new.f_charbig = '####updated per insert trigger####';
28223 SET @counter = @counter + 1;
28224 END|
28225 SET @counter = 1;
28226 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28227 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28228 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28229 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28230 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28231 ORDER BY f_int1;
28232 DROP TRIGGER trg_3;
28233         
28234 # check trigger-11 success:     1
28235 DELETE FROM t1
28236 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28237 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28238 AND f_charbig = '####updated per insert trigger####';
28239 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28240 BEGIN
28241 SET new.f_int1 = @my_max1 + @counter,
28242 new.f_int2 = @my_min2 - @counter,
28243 new.f_charbig = '####updated per insert trigger####';
28244 SET @counter = @counter + 1;
28245 END|
28246 SET @counter = 1;
28247 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28248 INSERT INTO t1 (f_char1, f_char2, f_charbig)
28249 SELECT CAST(f_int1 AS CHAR),
28250 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28251 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28252 ORDER BY f_int1;
28253 DROP TRIGGER trg_3;
28254         
28255 # check trigger-12 success:     1
28256 DELETE FROM t1
28257 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28258 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28259 AND f_charbig = '####updated per insert trigger####';
28260 ANALYZE  TABLE t1;
28261 Table   Op      Msg_type        Msg_text
28262 test.t1 analyze status  OK
28263 CHECK    TABLE t1 EXTENDED;
28264 Table   Op      Msg_type        Msg_text
28265 test.t1 check   status  OK
28266 CHECKSUM TABLE t1 EXTENDED;
28267 Table   Checksum
28268 test.t1 <some_value>
28269 OPTIMIZE TABLE t1;
28270 Table   Op      Msg_type        Msg_text
28271 test.t1 optimize        status  OK
28272 # check layout success:    1
28273 REPAIR   TABLE t1 EXTENDED;
28274 Table   Op      Msg_type        Msg_text
28275 test.t1 repair  status  OK
28276 # check layout success:    1
28277 TRUNCATE t1;
28278         
28279 # check TRUNCATE success:       1
28280 # check layout success:    1
28281 # End usability test (inc/partition_check.inc)
28282 DROP TABLE t1;
28283 CREATE TABLE t1 (
28284 f_int1 INTEGER,
28285 f_int2 INTEGER,
28286 f_char1 CHAR(20),
28287 f_char2 CHAR(20),
28288 f_charbig VARCHAR(1000)
28291 PARTITION BY LIST(MOD(f_int1,4))
28292 (PARTITION part_3 VALUES IN (-3),
28293 PARTITION part_2 VALUES IN (-2),
28294 PARTITION part_1 VALUES IN (-1),
28295 PARTITION part_N VALUES IN (NULL),
28296 PARTITION part0 VALUES IN (0),
28297 PARTITION part1 VALUES IN (1),
28298 PARTITION part2 VALUES IN (2),
28299 PARTITION part3 VALUES IN (3));
28300 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28301 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28302 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
28303 ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
28304 Table   Op      Msg_type        Msg_text
28305 test.t1 check   error   Error in list of partitions to test.t1
28306 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28307 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28308 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
28309 # Start usability test (inc/partition_check.inc)
28310 create_command
28311 SHOW CREATE TABLE t1;
28312 Table   Create Table
28313 t1      CREATE TABLE `t1` (
28314   `f_int1` int(11) DEFAULT NULL,
28315   `f_int2` int(11) DEFAULT NULL,
28316   `f_char1` char(20) DEFAULT NULL,
28317   `f_char2` char(20) DEFAULT NULL,
28318   `f_charbig` varchar(1000) DEFAULT NULL
28319 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
28320 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
28321 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
28322  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
28323  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
28324  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
28325  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
28326  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
28327  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
28328  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
28330 unified filelist
28331 t1#P#part0.MYD
28332 t1#P#part0.MYI
28333 t1#P#part1.MYD
28334 t1#P#part1.MYI
28335 t1#P#part2.MYD
28336 t1#P#part2.MYI
28337 t1#P#part3.MYD
28338 t1#P#part3.MYI
28339 t1#P#part_1.MYD
28340 t1#P#part_1.MYI
28341 t1#P#part_2.MYD
28342 t1#P#part_2.MYI
28343 t1#P#part_3.MYD
28344 t1#P#part_3.MYI
28345 t1#P#part_N.MYD
28346 t1#P#part_N.MYI
28347 t1.frm
28348 t1.par
28350 # check prerequisites-1 success:    1
28351 # check COUNT(*) success:    1
28352 # check MIN/MAX(f_int1) success:    1
28353 # check MIN/MAX(f_int2) success:    1
28354 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28355 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28356 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28357 WHERE f_int1 IN (2,3);
28358 # check prerequisites-3 success:    1
28359 DELETE FROM t1 WHERE f_charbig = 'delete me';
28360 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
28361 # check read via f_int1 success: 1
28362 # check read via f_int2 success: 1
28363         
28364 # check multiple-1 success:     1
28365 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28366         
28367 # check multiple-2 success:     1
28368 INSERT INTO t1 SELECT * FROM t0_template
28369 WHERE MOD(f_int1,3) = 0;
28370         
28371 # check multiple-3 success:     1
28372 UPDATE t1 SET f_int1 = f_int1 + @max_row
28373 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28374 AND @max_row_div2 + @max_row_div4;
28375         
28376 # check multiple-4 success:     1
28377 DELETE FROM t1
28378 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28379 AND @max_row_div2 + @max_row_div4 + @max_row;
28380         
28381 # check multiple-5 success:     1
28382 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28383 INSERT INTO t1
28384 SET f_int1 = @cur_value , f_int2 = @cur_value,
28385 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28386 f_charbig = '#SINGLE#';
28387         
28388 # check single-1 success:       1
28389 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28390 INSERT INTO t1
28391 SET f_int1 = @cur_value , f_int2 = @cur_value,
28392 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28393 f_charbig = '#SINGLE#';
28394         
28395 # check single-2 success:       1
28396 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28397 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28398 UPDATE t1 SET f_int1 = @cur_value2
28399 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28400         
28401 # check single-3 success:       1
28402 SET @cur_value1= -1;
28403 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28404 UPDATE t1 SET f_int1 = @cur_value1
28405 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28406         
28407 # check single-4 success:       1
28408 SELECT MAX(f_int1) INTO @cur_value FROM t1;
28409 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28410         
28411 # check single-5 success:       1
28412 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28413         
28414 # check single-6 success:       1
28415 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28416         
28417 # check single-7 success:       1
28418 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
28419 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28420 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28421 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28422 f_charbig = '#NULL#';
28423 INSERT INTO t1
28424 SET f_int1 = NULL , f_int2 = -@max_row,
28425 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28426 f_charbig = '#NULL#';
28427 # check null success:    1
28428         
28429 # check null-1 success:         1
28430 UPDATE t1 SET f_int1 = -@max_row
28431 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28432 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28433         
28434 # check null-2 success:         1
28435 UPDATE t1 SET f_int1 = NULL
28436 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28437 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28438         
28439 # check null-3 success:         1
28440 DELETE FROM t1
28441 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28442 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28443         
28444 # check null-4 success:         1
28445 DELETE FROM t1
28446 WHERE f_int1 = 0 AND f_int2 = 0
28447 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28448 AND f_charbig = '#NULL#';
28449 SET AUTOCOMMIT= 0;
28450 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28451 SELECT f_int1, f_int1, '', '', 'was inserted'
28452 FROM t0_template source_tab
28453 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28454         
28455 # check transactions-1 success:         1
28456 COMMIT WORK;
28457         
28458 # check transactions-2 success:         1
28459 ROLLBACK WORK;
28460         
28461 # check transactions-3 success:         1
28462 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28463 COMMIT WORK;
28464 ROLLBACK WORK;
28465         
28466 # check transactions-4 success:         1
28467 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28468 SELECT f_int1, f_int1, '', '', 'was inserted'
28469 FROM t0_template source_tab
28470 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28471         
28472 # check transactions-5 success:         1
28473 ROLLBACK WORK;
28474 Warnings:
28475 Warning 1196    Some non-transactional changed tables couldn't be rolled back
28476         
28477 # check transactions-6 success:         1
28478 # INFO: Storage engine used for t1 seems to be not transactional.
28479 COMMIT;
28480         
28481 # check transactions-7 success:         1
28482 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28483 COMMIT WORK;
28484 SET @@session.sql_mode = 'traditional';
28485 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28486 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28487 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28488 '', '', 'was inserted' FROM t0_template
28489 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28490 ERROR 22012: Division by 0
28491 COMMIT;
28492         
28493 # check transactions-8 success:         1
28494 # INFO: Storage engine used for t1 seems to be unable to revert
28495 #       changes made by the failing statement.
28496 SET @@session.sql_mode = '';
28497 SET AUTOCOMMIT= 1;
28498 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28499 COMMIT WORK;
28500 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28501         
28502 # check special-1 success:      1
28503 UPDATE t1 SET f_charbig = '';
28504         
28505 # check special-2 success:      1
28506 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28507 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28508 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28509 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28510 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28511 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28512 'just inserted' FROM t0_template
28513 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28514 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28515 BEGIN
28516 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28517 f_charbig = 'updated by trigger'
28518       WHERE f_int1 = new.f_int1;
28519 END|
28520 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28521 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28522 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28523         
28524 # check trigger-1 success:      1
28525 DROP TRIGGER trg_1;
28526 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28527 f_int2 = CAST(f_char1 AS SIGNED INT),
28528 f_charbig = 'just inserted'
28529    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28530 DELETE FROM t0_aux
28531 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28532 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28533 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28534 'just inserted' FROM t0_template
28535 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28536 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28537 BEGIN
28538 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28539 f_charbig = 'updated by trigger'
28540       WHERE f_int1 = new.f_int1;
28541 END|
28542 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28543 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28544 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28545         
28546 # check trigger-2 success:      1
28547 DROP TRIGGER trg_1;
28548 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28549 f_int2 = CAST(f_char1 AS SIGNED INT),
28550 f_charbig = 'just inserted'
28551    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28552 DELETE FROM t0_aux
28553 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28554 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28555 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28556 'just inserted' FROM t0_template
28557 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28558 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28559 BEGIN
28560 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28561 f_charbig = 'updated by trigger'
28562       WHERE f_int1 = new.f_int1;
28563 END|
28564 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
28565 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28566         
28567 # check trigger-3 success:      1
28568 DROP TRIGGER trg_1;
28569 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28570 f_int2 = CAST(f_char1 AS SIGNED INT),
28571 f_charbig = 'just inserted'
28572    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28573 DELETE FROM t0_aux
28574 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28575 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28576 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28577 'just inserted' FROM t0_template
28578 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28579 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28580 BEGIN
28581 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28582 f_charbig = 'updated by trigger'
28583       WHERE f_int1 = - old.f_int1;
28584 END|
28585 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
28586 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28587         
28588 # check trigger-4 success:      1
28589 DROP TRIGGER trg_1;
28590 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28591 f_int2 = CAST(f_char1 AS SIGNED INT),
28592 f_charbig = 'just inserted'
28593    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28594 DELETE FROM t0_aux
28595 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28596 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28597 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28598 'just inserted' FROM t0_template
28599 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28600 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28601 BEGIN
28602 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28603 f_charbig = 'updated by trigger'
28604       WHERE f_int1 = new.f_int1;
28605 END|
28606 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
28607 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28608         
28609 # check trigger-5 success:      1
28610 DROP TRIGGER trg_1;
28611 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28612 f_int2 = CAST(f_char1 AS SIGNED INT),
28613 f_charbig = 'just inserted'
28614    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28615 DELETE FROM t0_aux
28616 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28617 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28618 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28619 'just inserted' FROM t0_template
28620 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28621 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28622 BEGIN
28623 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28624 f_charbig = 'updated by trigger'
28625       WHERE f_int1 = - old.f_int1;
28626 END|
28627 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
28628 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28629         
28630 # check trigger-6 success:      1
28631 DROP TRIGGER trg_1;
28632 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28633 f_int2 = CAST(f_char1 AS SIGNED INT),
28634 f_charbig = 'just inserted'
28635    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28636 DELETE FROM t0_aux
28637 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28638 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28639 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28640 'just inserted' FROM t0_template
28641 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28642 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28643 BEGIN
28644 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28645 f_charbig = 'updated by trigger'
28646       WHERE f_int1 = - old.f_int1;
28647 END|
28648 DELETE FROM t0_aux
28649 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28650         
28651 # check trigger-7 success:      1
28652 DROP TRIGGER trg_1;
28653 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28654 f_int2 = CAST(f_char1 AS SIGNED INT),
28655 f_charbig = 'just inserted'
28656    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28657 DELETE FROM t0_aux
28658 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28659 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28660 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28661 'just inserted' FROM t0_template
28662 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28663 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28664 BEGIN
28665 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28666 f_charbig = 'updated by trigger'
28667       WHERE f_int1 = - old.f_int1;
28668 END|
28669 DELETE FROM t0_aux
28670 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28671         
28672 # check trigger-8 success:      1
28673 DROP TRIGGER trg_1;
28674 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28675 f_int2 = CAST(f_char1 AS SIGNED INT),
28676 f_charbig = 'just inserted'
28677    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28678 DELETE FROM t0_aux
28679 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28680 DELETE FROM t1
28681 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28682 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28683 BEGIN
28684 SET new.f_int1 = old.f_int1 + @max_row,
28685 new.f_int2 = old.f_int2 - @max_row,
28686 new.f_charbig = '####updated per update trigger####';
28687 END|
28688 UPDATE t1
28689 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28690 f_charbig = '####updated per update statement itself####';
28691         
28692 # check trigger-9 success:      1
28693 DROP TRIGGER trg_2;
28694 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28695 f_int2 = CAST(f_char1 AS SIGNED INT),
28696 f_charbig = CONCAT('===',f_char1,'===');
28697 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28698 BEGIN
28699 SET new.f_int1 = new.f_int1 + @max_row,
28700 new.f_int2 = new.f_int2 - @max_row,
28701 new.f_charbig = '####updated per update trigger####';
28702 END|
28703 UPDATE t1
28704 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28705 f_charbig = '####updated per update statement itself####';
28706         
28707 # check trigger-10 success:     1
28708 DROP TRIGGER trg_2;
28709 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28710 f_int2 = CAST(f_char1 AS SIGNED INT),
28711 f_charbig = CONCAT('===',f_char1,'===');
28712 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28713 BEGIN
28714 SET new.f_int1 = @my_max1 + @counter,
28715 new.f_int2 = @my_min2 - @counter,
28716 new.f_charbig = '####updated per insert trigger####';
28717 SET @counter = @counter + 1;
28718 END|
28719 SET @counter = 1;
28720 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28721 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28722 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28723 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28724 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28725 ORDER BY f_int1;
28726 DROP TRIGGER trg_3;
28727         
28728 # check trigger-11 success:     1
28729 DELETE FROM t1
28730 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28731 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28732 AND f_charbig = '####updated per insert trigger####';
28733 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28734 BEGIN
28735 SET new.f_int1 = @my_max1 + @counter,
28736 new.f_int2 = @my_min2 - @counter,
28737 new.f_charbig = '####updated per insert trigger####';
28738 SET @counter = @counter + 1;
28739 END|
28740 SET @counter = 1;
28741 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28742 INSERT INTO t1 (f_char1, f_char2, f_charbig)
28743 SELECT CAST(f_int1 AS CHAR),
28744 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28745 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28746 ORDER BY f_int1;
28747 DROP TRIGGER trg_3;
28748         
28749 # check trigger-12 success:     1
28750 DELETE FROM t1
28751 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28752 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28753 AND f_charbig = '####updated per insert trigger####';
28754 ANALYZE  TABLE t1;
28755 Table   Op      Msg_type        Msg_text
28756 test.t1 analyze status  OK
28757 CHECK    TABLE t1 EXTENDED;
28758 Table   Op      Msg_type        Msg_text
28759 test.t1 check   status  OK
28760 CHECKSUM TABLE t1 EXTENDED;
28761 Table   Checksum
28762 test.t1 <some_value>
28763 OPTIMIZE TABLE t1;
28764 Table   Op      Msg_type        Msg_text
28765 test.t1 optimize        status  OK
28766 # check layout success:    1
28767 REPAIR   TABLE t1 EXTENDED;
28768 Table   Op      Msg_type        Msg_text
28769 test.t1 repair  status  OK
28770 # check layout success:    1
28771 TRUNCATE t1;
28772         
28773 # check TRUNCATE success:       1
28774 # check layout success:    1
28775 # End usability test (inc/partition_check.inc)
28776 DROP TABLE t1;
28777 CREATE TABLE t1 (
28778 f_int1 INTEGER,
28779 f_int2 INTEGER,
28780 f_char1 CHAR(20),
28781 f_char2 CHAR(20),
28782 f_charbig VARCHAR(1000)
28785 PARTITION BY RANGE(f_int1)
28786 (PARTITION parta VALUES LESS THAN (0),
28787 PARTITION part_1 VALUES LESS THAN (5),
28788 PARTITION part_2 VALUES LESS THAN (10),
28789 PARTITION part_3 VALUES LESS THAN (10 + 5),
28790 PARTITION part_4 VALUES LESS THAN (20),
28791 PARTITION part_5 VALUES LESS THAN (2147483646));
28792 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28793 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28794 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
28795 ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
28796 Table   Op      Msg_type        Msg_text
28797 test.t1 check   error   Error in list of partitions to test.t1
28798 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28799 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28800 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
28801 # Start usability test (inc/partition_check.inc)
28802 create_command
28803 SHOW CREATE TABLE t1;
28804 Table   Create Table
28805 t1      CREATE TABLE `t1` (
28806   `f_int1` int(11) DEFAULT NULL,
28807   `f_int2` int(11) DEFAULT NULL,
28808   `f_char1` char(20) DEFAULT NULL,
28809   `f_char2` char(20) DEFAULT NULL,
28810   `f_charbig` varchar(1000) DEFAULT NULL
28811 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
28812 /*!50100 PARTITION BY RANGE (f_int1)
28813 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
28814  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
28815  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
28816  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
28817  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
28818  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
28820 unified filelist
28821 t1#P#part_1.MYD
28822 t1#P#part_1.MYI
28823 t1#P#part_2.MYD
28824 t1#P#part_2.MYI
28825 t1#P#part_3.MYD
28826 t1#P#part_3.MYI
28827 t1#P#part_4.MYD
28828 t1#P#part_4.MYI
28829 t1#P#part_5.MYD
28830 t1#P#part_5.MYI
28831 t1#P#parta.MYD
28832 t1#P#parta.MYI
28833 t1.frm
28834 t1.par
28836 # check prerequisites-1 success:    1
28837 # check COUNT(*) success:    1
28838 # check MIN/MAX(f_int1) success:    1
28839 # check MIN/MAX(f_int2) success:    1
28840 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28841 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28842 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28843 WHERE f_int1 IN (2,3);
28844 # check prerequisites-3 success:    1
28845 DELETE FROM t1 WHERE f_charbig = 'delete me';
28846 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
28847 # check read via f_int1 success: 1
28848 # check read via f_int2 success: 1
28849         
28850 # check multiple-1 success:     1
28851 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28852         
28853 # check multiple-2 success:     1
28854 INSERT INTO t1 SELECT * FROM t0_template
28855 WHERE MOD(f_int1,3) = 0;
28856         
28857 # check multiple-3 success:     1
28858 UPDATE t1 SET f_int1 = f_int1 + @max_row
28859 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28860 AND @max_row_div2 + @max_row_div4;
28861         
28862 # check multiple-4 success:     1
28863 DELETE FROM t1
28864 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28865 AND @max_row_div2 + @max_row_div4 + @max_row;
28866         
28867 # check multiple-5 success:     1
28868 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28869 INSERT INTO t1
28870 SET f_int1 = @cur_value , f_int2 = @cur_value,
28871 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28872 f_charbig = '#SINGLE#';
28873         
28874 # check single-1 success:       1
28875 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28876 INSERT INTO t1
28877 SET f_int1 = @cur_value , f_int2 = @cur_value,
28878 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28879 f_charbig = '#SINGLE#';
28880         
28881 # check single-2 success:       1
28882 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28883 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28884 UPDATE t1 SET f_int1 = @cur_value2
28885 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28886         
28887 # check single-3 success:       1
28888 SET @cur_value1= -1;
28889 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28890 UPDATE t1 SET f_int1 = @cur_value1
28891 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28892         
28893 # check single-4 success:       1
28894 SELECT MAX(f_int1) INTO @cur_value FROM t1;
28895 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28896         
28897 # check single-5 success:       1
28898 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28899         
28900 # check single-6 success:       1
28901 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28902 ERROR HY000: Table has no partition for value 2147483647
28903 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28904 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28905 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28906 f_charbig = '#NULL#';
28907 INSERT INTO t1
28908 SET f_int1 = NULL , f_int2 = -@max_row,
28909 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28910 f_charbig = '#NULL#';
28911 # check null success:    1
28912         
28913 # check null-1 success:         1
28914 UPDATE t1 SET f_int1 = -@max_row
28915 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28916 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28917         
28918 # check null-2 success:         1
28919 UPDATE t1 SET f_int1 = NULL
28920 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28921 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28922         
28923 # check null-3 success:         1
28924 DELETE FROM t1
28925 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28926 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28927         
28928 # check null-4 success:         1
28929 DELETE FROM t1
28930 WHERE f_int1 = 0 AND f_int2 = 0
28931 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28932 AND f_charbig = '#NULL#';
28933 SET AUTOCOMMIT= 0;
28934 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28935 SELECT f_int1, f_int1, '', '', 'was inserted'
28936 FROM t0_template source_tab
28937 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28938         
28939 # check transactions-1 success:         1
28940 COMMIT WORK;
28941         
28942 # check transactions-2 success:         1
28943 ROLLBACK WORK;
28944         
28945 # check transactions-3 success:         1
28946 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28947 COMMIT WORK;
28948 ROLLBACK WORK;
28949         
28950 # check transactions-4 success:         1
28951 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28952 SELECT f_int1, f_int1, '', '', 'was inserted'
28953 FROM t0_template source_tab
28954 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28955         
28956 # check transactions-5 success:         1
28957 ROLLBACK WORK;
28958 Warnings:
28959 Warning 1196    Some non-transactional changed tables couldn't be rolled back
28960         
28961 # check transactions-6 success:         1
28962 # INFO: Storage engine used for t1 seems to be not transactional.
28963 COMMIT;
28964         
28965 # check transactions-7 success:         1
28966 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28967 COMMIT WORK;
28968 SET @@session.sql_mode = 'traditional';
28969 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28970 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28971 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28972 '', '', 'was inserted' FROM t0_template
28973 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28974 ERROR 22012: Division by 0
28975 COMMIT;
28976         
28977 # check transactions-8 success:         1
28978 # INFO: Storage engine used for t1 seems to be unable to revert
28979 #       changes made by the failing statement.
28980 SET @@session.sql_mode = '';
28981 SET AUTOCOMMIT= 1;
28982 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28983 COMMIT WORK;
28984 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28985         
28986 # check special-1 success:      1
28987 UPDATE t1 SET f_charbig = '';
28988         
28989 # check special-2 success:      1
28990 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28991 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28992 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28993 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28994 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28995 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28996 'just inserted' FROM t0_template
28997 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28998 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28999 BEGIN
29000 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29001 f_charbig = 'updated by trigger'
29002       WHERE f_int1 = new.f_int1;
29003 END|
29004 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29005 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29006 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29007         
29008 # check trigger-1 success:      1
29009 DROP TRIGGER trg_1;
29010 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29011 f_int2 = CAST(f_char1 AS SIGNED INT),
29012 f_charbig = 'just inserted'
29013    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29014 DELETE FROM t0_aux
29015 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29016 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29017 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29018 'just inserted' FROM t0_template
29019 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29020 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29021 BEGIN
29022 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29023 f_charbig = 'updated by trigger'
29024       WHERE f_int1 = new.f_int1;
29025 END|
29026 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29027 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29028 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29029         
29030 # check trigger-2 success:      1
29031 DROP TRIGGER trg_1;
29032 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29033 f_int2 = CAST(f_char1 AS SIGNED INT),
29034 f_charbig = 'just inserted'
29035    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29036 DELETE FROM t0_aux
29037 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29038 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29039 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29040 'just inserted' FROM t0_template
29041 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29042 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29043 BEGIN
29044 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29045 f_charbig = 'updated by trigger'
29046       WHERE f_int1 = new.f_int1;
29047 END|
29048 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
29049 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29050         
29051 # check trigger-3 success:      1
29052 DROP TRIGGER trg_1;
29053 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29054 f_int2 = CAST(f_char1 AS SIGNED INT),
29055 f_charbig = 'just inserted'
29056    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29057 DELETE FROM t0_aux
29058 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29059 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29060 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29061 'just inserted' FROM t0_template
29062 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29063 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29064 BEGIN
29065 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29066 f_charbig = 'updated by trigger'
29067       WHERE f_int1 = - old.f_int1;
29068 END|
29069 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
29070 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29071         
29072 # check trigger-4 success:      1
29073 DROP TRIGGER trg_1;
29074 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29075 f_int2 = CAST(f_char1 AS SIGNED INT),
29076 f_charbig = 'just inserted'
29077    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29078 DELETE FROM t0_aux
29079 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29080 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29081 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29082 'just inserted' FROM t0_template
29083 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29084 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29085 BEGIN
29086 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29087 f_charbig = 'updated by trigger'
29088       WHERE f_int1 = new.f_int1;
29089 END|
29090 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
29091 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29092         
29093 # check trigger-5 success:      1
29094 DROP TRIGGER trg_1;
29095 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29096 f_int2 = CAST(f_char1 AS SIGNED INT),
29097 f_charbig = 'just inserted'
29098    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29099 DELETE FROM t0_aux
29100 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29101 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29102 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29103 'just inserted' FROM t0_template
29104 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29105 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29106 BEGIN
29107 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29108 f_charbig = 'updated by trigger'
29109       WHERE f_int1 = - old.f_int1;
29110 END|
29111 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
29112 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29113         
29114 # check trigger-6 success:      1
29115 DROP TRIGGER trg_1;
29116 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29117 f_int2 = CAST(f_char1 AS SIGNED INT),
29118 f_charbig = 'just inserted'
29119    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29120 DELETE FROM t0_aux
29121 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29122 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29123 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29124 'just inserted' FROM t0_template
29125 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29126 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29127 BEGIN
29128 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29129 f_charbig = 'updated by trigger'
29130       WHERE f_int1 = - old.f_int1;
29131 END|
29132 DELETE FROM t0_aux
29133 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29134         
29135 # check trigger-7 success:      1
29136 DROP TRIGGER trg_1;
29137 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29138 f_int2 = CAST(f_char1 AS SIGNED INT),
29139 f_charbig = 'just inserted'
29140    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29141 DELETE FROM t0_aux
29142 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29143 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29144 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29145 'just inserted' FROM t0_template
29146 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29147 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29148 BEGIN
29149 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29150 f_charbig = 'updated by trigger'
29151       WHERE f_int1 = - old.f_int1;
29152 END|
29153 DELETE FROM t0_aux
29154 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29155         
29156 # check trigger-8 success:      1
29157 DROP TRIGGER trg_1;
29158 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29159 f_int2 = CAST(f_char1 AS SIGNED INT),
29160 f_charbig = 'just inserted'
29161    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29162 DELETE FROM t0_aux
29163 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29164 DELETE FROM t1
29165 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29166 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29167 BEGIN
29168 SET new.f_int1 = old.f_int1 + @max_row,
29169 new.f_int2 = old.f_int2 - @max_row,
29170 new.f_charbig = '####updated per update trigger####';
29171 END|
29172 UPDATE t1
29173 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29174 f_charbig = '####updated per update statement itself####';
29175         
29176 # check trigger-9 success:      1
29177 DROP TRIGGER trg_2;
29178 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29179 f_int2 = CAST(f_char1 AS SIGNED INT),
29180 f_charbig = CONCAT('===',f_char1,'===');
29181 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29182 BEGIN
29183 SET new.f_int1 = new.f_int1 + @max_row,
29184 new.f_int2 = new.f_int2 - @max_row,
29185 new.f_charbig = '####updated per update trigger####';
29186 END|
29187 UPDATE t1
29188 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29189 f_charbig = '####updated per update statement itself####';
29190         
29191 # check trigger-10 success:     1
29192 DROP TRIGGER trg_2;
29193 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29194 f_int2 = CAST(f_char1 AS SIGNED INT),
29195 f_charbig = CONCAT('===',f_char1,'===');
29196 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29197 BEGIN
29198 SET new.f_int1 = @my_max1 + @counter,
29199 new.f_int2 = @my_min2 - @counter,
29200 new.f_charbig = '####updated per insert trigger####';
29201 SET @counter = @counter + 1;
29202 END|
29203 SET @counter = 1;
29204 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29205 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29206 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29207 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29208 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29209 ORDER BY f_int1;
29210 DROP TRIGGER trg_3;
29211         
29212 # check trigger-11 success:     1
29213 DELETE FROM t1
29214 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29215 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29216 AND f_charbig = '####updated per insert trigger####';
29217 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29218 BEGIN
29219 SET new.f_int1 = @my_max1 + @counter,
29220 new.f_int2 = @my_min2 - @counter,
29221 new.f_charbig = '####updated per insert trigger####';
29222 SET @counter = @counter + 1;
29223 END|
29224 SET @counter = 1;
29225 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29226 INSERT INTO t1 (f_char1, f_char2, f_charbig)
29227 SELECT CAST(f_int1 AS CHAR),
29228 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29229 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29230 ORDER BY f_int1;
29231 DROP TRIGGER trg_3;
29232         
29233 # check trigger-12 success:     1
29234 DELETE FROM t1
29235 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29236 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29237 AND f_charbig = '####updated per insert trigger####';
29238 ANALYZE  TABLE t1;
29239 Table   Op      Msg_type        Msg_text
29240 test.t1 analyze status  OK
29241 CHECK    TABLE t1 EXTENDED;
29242 Table   Op      Msg_type        Msg_text
29243 test.t1 check   status  OK
29244 CHECKSUM TABLE t1 EXTENDED;
29245 Table   Checksum
29246 test.t1 <some_value>
29247 OPTIMIZE TABLE t1;
29248 Table   Op      Msg_type        Msg_text
29249 test.t1 optimize        status  OK
29250 # check layout success:    1
29251 REPAIR   TABLE t1 EXTENDED;
29252 Table   Op      Msg_type        Msg_text
29253 test.t1 repair  status  OK
29254 # check layout success:    1
29255 TRUNCATE t1;
29256         
29257 # check TRUNCATE success:       1
29258 # check layout success:    1
29259 # End usability test (inc/partition_check.inc)
29260 DROP TABLE t1;
29261 CREATE TABLE t1 (
29262 f_int1 INTEGER,
29263 f_int2 INTEGER,
29264 f_char1 CHAR(20),
29265 f_char2 CHAR(20),
29266 f_charbig VARCHAR(1000)
29269 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
29270 (PARTITION part_1 VALUES LESS THAN (0),
29271 PARTITION part_2 VALUES LESS THAN (5),
29272 PARTITION part_3 VALUES LESS THAN (10),
29273 PARTITION part_4 VALUES LESS THAN (2147483646));
29274 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29275 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29276 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
29277 ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
29278 Table   Op      Msg_type        Msg_text
29279 test.t1 check   error   Error in list of partitions to test.t1
29280 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29281 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29282 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
29283 # Start usability test (inc/partition_check.inc)
29284 create_command
29285 SHOW CREATE TABLE t1;
29286 Table   Create Table
29287 t1      CREATE TABLE `t1` (
29288   `f_int1` int(11) DEFAULT NULL,
29289   `f_int2` int(11) DEFAULT NULL,
29290   `f_char1` char(20) DEFAULT NULL,
29291   `f_char2` char(20) DEFAULT NULL,
29292   `f_charbig` varchar(1000) DEFAULT NULL
29293 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
29294 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
29295 SUBPARTITION BY HASH (f_int1)
29296 SUBPARTITIONS 2
29297 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
29298  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
29299  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
29300  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
29302 unified filelist
29303 t1#P#part_1#SP#part_1sp0.MYD
29304 t1#P#part_1#SP#part_1sp0.MYI
29305 t1#P#part_1#SP#part_1sp1.MYD
29306 t1#P#part_1#SP#part_1sp1.MYI
29307 t1#P#part_2#SP#part_2sp0.MYD
29308 t1#P#part_2#SP#part_2sp0.MYI
29309 t1#P#part_2#SP#part_2sp1.MYD
29310 t1#P#part_2#SP#part_2sp1.MYI
29311 t1#P#part_3#SP#part_3sp0.MYD
29312 t1#P#part_3#SP#part_3sp0.MYI
29313 t1#P#part_3#SP#part_3sp1.MYD
29314 t1#P#part_3#SP#part_3sp1.MYI
29315 t1#P#part_4#SP#part_4sp0.MYD
29316 t1#P#part_4#SP#part_4sp0.MYI
29317 t1#P#part_4#SP#part_4sp1.MYD
29318 t1#P#part_4#SP#part_4sp1.MYI
29319 t1.frm
29320 t1.par
29322 # check prerequisites-1 success:    1
29323 # check COUNT(*) success:    1
29324 # check MIN/MAX(f_int1) success:    1
29325 # check MIN/MAX(f_int2) success:    1
29326 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29327 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29328 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29329 WHERE f_int1 IN (2,3);
29330 # check prerequisites-3 success:    1
29331 DELETE FROM t1 WHERE f_charbig = 'delete me';
29332 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
29333 # check read via f_int1 success: 1
29334 # check read via f_int2 success: 1
29335         
29336 # check multiple-1 success:     1
29337 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29338         
29339 # check multiple-2 success:     1
29340 INSERT INTO t1 SELECT * FROM t0_template
29341 WHERE MOD(f_int1,3) = 0;
29342         
29343 # check multiple-3 success:     1
29344 UPDATE t1 SET f_int1 = f_int1 + @max_row
29345 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29346 AND @max_row_div2 + @max_row_div4;
29347         
29348 # check multiple-4 success:     1
29349 DELETE FROM t1
29350 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29351 AND @max_row_div2 + @max_row_div4 + @max_row;
29352         
29353 # check multiple-5 success:     1
29354 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29355 INSERT INTO t1
29356 SET f_int1 = @cur_value , f_int2 = @cur_value,
29357 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29358 f_charbig = '#SINGLE#';
29359         
29360 # check single-1 success:       1
29361 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29362 INSERT INTO t1
29363 SET f_int1 = @cur_value , f_int2 = @cur_value,
29364 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29365 f_charbig = '#SINGLE#';
29366         
29367 # check single-2 success:       1
29368 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29369 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29370 UPDATE t1 SET f_int1 = @cur_value2
29371 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29372         
29373 # check single-3 success:       1
29374 SET @cur_value1= -1;
29375 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29376 UPDATE t1 SET f_int1 = @cur_value1
29377 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29378         
29379 # check single-4 success:       1
29380 SELECT MAX(f_int1) INTO @cur_value FROM t1;
29381 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29382         
29383 # check single-5 success:       1
29384 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29385         
29386 # check single-6 success:       1
29387 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29388         
29389 # check single-7 success:       1
29390 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
29391 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29392 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29393 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29394 f_charbig = '#NULL#';
29395 INSERT INTO t1
29396 SET f_int1 = NULL , f_int2 = -@max_row,
29397 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29398 f_charbig = '#NULL#';
29399 # check null success:    1
29400         
29401 # check null-1 success:         1
29402 UPDATE t1 SET f_int1 = -@max_row
29403 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29404 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29405         
29406 # check null-2 success:         1
29407 UPDATE t1 SET f_int1 = NULL
29408 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29409 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29410         
29411 # check null-3 success:         1
29412 DELETE FROM t1
29413 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29414 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29415         
29416 # check null-4 success:         1
29417 DELETE FROM t1
29418 WHERE f_int1 = 0 AND f_int2 = 0
29419 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29420 AND f_charbig = '#NULL#';
29421 SET AUTOCOMMIT= 0;
29422 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29423 SELECT f_int1, f_int1, '', '', 'was inserted'
29424 FROM t0_template source_tab
29425 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29426         
29427 # check transactions-1 success:         1
29428 COMMIT WORK;
29429         
29430 # check transactions-2 success:         1
29431 ROLLBACK WORK;
29432         
29433 # check transactions-3 success:         1
29434 DELETE FROM t1 WHERE f_charbig = 'was inserted';
29435 COMMIT WORK;
29436 ROLLBACK WORK;
29437         
29438 # check transactions-4 success:         1
29439 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29440 SELECT f_int1, f_int1, '', '', 'was inserted'
29441 FROM t0_template source_tab
29442 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29443         
29444 # check transactions-5 success:         1
29445 ROLLBACK WORK;
29446 Warnings:
29447 Warning 1196    Some non-transactional changed tables couldn't be rolled back
29448         
29449 # check transactions-6 success:         1
29450 # INFO: Storage engine used for t1 seems to be not transactional.
29451 COMMIT;
29452         
29453 # check transactions-7 success:         1
29454 DELETE FROM t1 WHERE f_charbig = 'was inserted';
29455 COMMIT WORK;
29456 SET @@session.sql_mode = 'traditional';
29457 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29458 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29459 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29460 '', '', 'was inserted' FROM t0_template
29461 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29462 ERROR 22012: Division by 0
29463 COMMIT;
29464         
29465 # check transactions-8 success:         1
29466 # INFO: Storage engine used for t1 seems to be unable to revert
29467 #       changes made by the failing statement.
29468 SET @@session.sql_mode = '';
29469 SET AUTOCOMMIT= 1;
29470 DELETE FROM t1 WHERE f_charbig = 'was inserted';
29471 COMMIT WORK;
29472 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29473         
29474 # check special-1 success:      1
29475 UPDATE t1 SET f_charbig = '';
29476         
29477 # check special-2 success:      1
29478 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29479 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29480 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29481 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29482 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29483 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29484 'just inserted' FROM t0_template
29485 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29486 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29487 BEGIN
29488 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29489 f_charbig = 'updated by trigger'
29490       WHERE f_int1 = new.f_int1;
29491 END|
29492 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29493 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29494 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29495         
29496 # check trigger-1 success:      1
29497 DROP TRIGGER trg_1;
29498 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29499 f_int2 = CAST(f_char1 AS SIGNED INT),
29500 f_charbig = 'just inserted'
29501    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29502 DELETE FROM t0_aux
29503 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29504 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29505 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29506 'just inserted' FROM t0_template
29507 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29508 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29509 BEGIN
29510 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29511 f_charbig = 'updated by trigger'
29512       WHERE f_int1 = new.f_int1;
29513 END|
29514 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29515 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29516 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29517         
29518 # check trigger-2 success:      1
29519 DROP TRIGGER trg_1;
29520 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29521 f_int2 = CAST(f_char1 AS SIGNED INT),
29522 f_charbig = 'just inserted'
29523    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29524 DELETE FROM t0_aux
29525 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29526 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29527 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29528 'just inserted' FROM t0_template
29529 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29530 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29531 BEGIN
29532 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29533 f_charbig = 'updated by trigger'
29534       WHERE f_int1 = new.f_int1;
29535 END|
29536 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
29537 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29538         
29539 # check trigger-3 success:      1
29540 DROP TRIGGER trg_1;
29541 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29542 f_int2 = CAST(f_char1 AS SIGNED INT),
29543 f_charbig = 'just inserted'
29544    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29545 DELETE FROM t0_aux
29546 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29547 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29548 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29549 'just inserted' FROM t0_template
29550 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29551 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29552 BEGIN
29553 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29554 f_charbig = 'updated by trigger'
29555       WHERE f_int1 = - old.f_int1;
29556 END|
29557 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
29558 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29559         
29560 # check trigger-4 success:      1
29561 DROP TRIGGER trg_1;
29562 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29563 f_int2 = CAST(f_char1 AS SIGNED INT),
29564 f_charbig = 'just inserted'
29565    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29566 DELETE FROM t0_aux
29567 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29568 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29569 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29570 'just inserted' FROM t0_template
29571 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29572 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29573 BEGIN
29574 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29575 f_charbig = 'updated by trigger'
29576       WHERE f_int1 = new.f_int1;
29577 END|
29578 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
29579 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29580         
29581 # check trigger-5 success:      1
29582 DROP TRIGGER trg_1;
29583 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29584 f_int2 = CAST(f_char1 AS SIGNED INT),
29585 f_charbig = 'just inserted'
29586    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29587 DELETE FROM t0_aux
29588 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29589 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29590 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29591 'just inserted' FROM t0_template
29592 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29593 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29594 BEGIN
29595 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29596 f_charbig = 'updated by trigger'
29597       WHERE f_int1 = - old.f_int1;
29598 END|
29599 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
29600 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29601         
29602 # check trigger-6 success:      1
29603 DROP TRIGGER trg_1;
29604 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29605 f_int2 = CAST(f_char1 AS SIGNED INT),
29606 f_charbig = 'just inserted'
29607    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29608 DELETE FROM t0_aux
29609 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29610 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29611 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29612 'just inserted' FROM t0_template
29613 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29614 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29615 BEGIN
29616 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29617 f_charbig = 'updated by trigger'
29618       WHERE f_int1 = - old.f_int1;
29619 END|
29620 DELETE FROM t0_aux
29621 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29622         
29623 # check trigger-7 success:      1
29624 DROP TRIGGER trg_1;
29625 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29626 f_int2 = CAST(f_char1 AS SIGNED INT),
29627 f_charbig = 'just inserted'
29628    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29629 DELETE FROM t0_aux
29630 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29631 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29632 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29633 'just inserted' FROM t0_template
29634 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29635 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29636 BEGIN
29637 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29638 f_charbig = 'updated by trigger'
29639       WHERE f_int1 = - old.f_int1;
29640 END|
29641 DELETE FROM t0_aux
29642 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29643         
29644 # check trigger-8 success:      1
29645 DROP TRIGGER trg_1;
29646 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29647 f_int2 = CAST(f_char1 AS SIGNED INT),
29648 f_charbig = 'just inserted'
29649    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29650 DELETE FROM t0_aux
29651 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29652 DELETE FROM t1
29653 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29654 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29655 BEGIN
29656 SET new.f_int1 = old.f_int1 + @max_row,
29657 new.f_int2 = old.f_int2 - @max_row,
29658 new.f_charbig = '####updated per update trigger####';
29659 END|
29660 UPDATE t1
29661 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29662 f_charbig = '####updated per update statement itself####';
29663         
29664 # check trigger-9 success:      1
29665 DROP TRIGGER trg_2;
29666 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29667 f_int2 = CAST(f_char1 AS SIGNED INT),
29668 f_charbig = CONCAT('===',f_char1,'===');
29669 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29670 BEGIN
29671 SET new.f_int1 = new.f_int1 + @max_row,
29672 new.f_int2 = new.f_int2 - @max_row,
29673 new.f_charbig = '####updated per update trigger####';
29674 END|
29675 UPDATE t1
29676 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29677 f_charbig = '####updated per update statement itself####';
29678         
29679 # check trigger-10 success:     1
29680 DROP TRIGGER trg_2;
29681 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29682 f_int2 = CAST(f_char1 AS SIGNED INT),
29683 f_charbig = CONCAT('===',f_char1,'===');
29684 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29685 BEGIN
29686 SET new.f_int1 = @my_max1 + @counter,
29687 new.f_int2 = @my_min2 - @counter,
29688 new.f_charbig = '####updated per insert trigger####';
29689 SET @counter = @counter + 1;
29690 END|
29691 SET @counter = 1;
29692 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29693 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29694 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29695 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29696 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29697 ORDER BY f_int1;
29698 DROP TRIGGER trg_3;
29699         
29700 # check trigger-11 success:     1
29701 DELETE FROM t1
29702 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29703 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29704 AND f_charbig = '####updated per insert trigger####';
29705 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29706 BEGIN
29707 SET new.f_int1 = @my_max1 + @counter,
29708 new.f_int2 = @my_min2 - @counter,
29709 new.f_charbig = '####updated per insert trigger####';
29710 SET @counter = @counter + 1;
29711 END|
29712 SET @counter = 1;
29713 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29714 INSERT INTO t1 (f_char1, f_char2, f_charbig)
29715 SELECT CAST(f_int1 AS CHAR),
29716 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29717 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29718 ORDER BY f_int1;
29719 DROP TRIGGER trg_3;
29720         
29721 # check trigger-12 success:     1
29722 DELETE FROM t1
29723 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29724 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29725 AND f_charbig = '####updated per insert trigger####';
29726 ANALYZE  TABLE t1;
29727 Table   Op      Msg_type        Msg_text
29728 test.t1 analyze status  OK
29729 CHECK    TABLE t1 EXTENDED;
29730 Table   Op      Msg_type        Msg_text
29731 test.t1 check   status  OK
29732 CHECKSUM TABLE t1 EXTENDED;
29733 Table   Checksum
29734 test.t1 <some_value>
29735 OPTIMIZE TABLE t1;
29736 Table   Op      Msg_type        Msg_text
29737 test.t1 optimize        status  OK
29738 # check layout success:    1
29739 REPAIR   TABLE t1 EXTENDED;
29740 Table   Op      Msg_type        Msg_text
29741 test.t1 repair  status  OK
29742 # check layout success:    1
29743 TRUNCATE t1;
29744         
29745 # check TRUNCATE success:       1
29746 # check layout success:    1
29747 # End usability test (inc/partition_check.inc)
29748 DROP TABLE t1;
29749 CREATE TABLE t1 (
29750 f_int1 INTEGER,
29751 f_int2 INTEGER,
29752 f_char1 CHAR(20),
29753 f_char2 CHAR(20),
29754 f_charbig VARCHAR(1000)
29757 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
29758 (PARTITION part_1 VALUES LESS THAN (0)
29759 (SUBPARTITION subpart11, SUBPARTITION subpart12),
29760 PARTITION part_2 VALUES LESS THAN (5)
29761 (SUBPARTITION subpart21, SUBPARTITION subpart22),
29762 PARTITION part_3 VALUES LESS THAN (10)
29763 (SUBPARTITION subpart31, SUBPARTITION subpart32),
29764 PARTITION part_4 VALUES LESS THAN (2147483646)
29765 (SUBPARTITION subpart41, SUBPARTITION subpart42));
29766 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29767 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29768 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
29769 ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
29770 Table   Op      Msg_type        Msg_text
29771 test.t1 check   error   Error in list of partitions to test.t1
29772 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29773 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29774 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
29775 # Start usability test (inc/partition_check.inc)
29776 create_command
29777 SHOW CREATE TABLE t1;
29778 Table   Create Table
29779 t1      CREATE TABLE `t1` (
29780   `f_int1` int(11) DEFAULT NULL,
29781   `f_int2` int(11) DEFAULT NULL,
29782   `f_char1` char(20) DEFAULT NULL,
29783   `f_char2` char(20) DEFAULT NULL,
29784   `f_charbig` varchar(1000) DEFAULT NULL
29785 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
29786 /*!50100 PARTITION BY RANGE (f_int1)
29787 SUBPARTITION BY KEY (f_int1)
29788 (PARTITION part_1 VALUES LESS THAN (0)
29789  (SUBPARTITION subpart11 ENGINE = MyISAM,
29790   SUBPARTITION subpart12 ENGINE = MyISAM),
29791  PARTITION part_2 VALUES LESS THAN (5)
29792  (SUBPARTITION subpart21 ENGINE = MyISAM,
29793   SUBPARTITION subpart22 ENGINE = MyISAM),
29794  PARTITION part_3 VALUES LESS THAN (10)
29795  (SUBPARTITION subpart31 ENGINE = MyISAM,
29796   SUBPARTITION subpart32 ENGINE = MyISAM),
29797  PARTITION part_4 VALUES LESS THAN (2147483646)
29798  (SUBPARTITION subpart41 ENGINE = MyISAM,
29799   SUBPARTITION subpart42 ENGINE = MyISAM)) */
29801 unified filelist
29802 t1#P#part_1#SP#subpart11.MYD
29803 t1#P#part_1#SP#subpart11.MYI
29804 t1#P#part_1#SP#subpart12.MYD
29805 t1#P#part_1#SP#subpart12.MYI
29806 t1#P#part_2#SP#subpart21.MYD
29807 t1#P#part_2#SP#subpart21.MYI
29808 t1#P#part_2#SP#subpart22.MYD
29809 t1#P#part_2#SP#subpart22.MYI
29810 t1#P#part_3#SP#subpart31.MYD
29811 t1#P#part_3#SP#subpart31.MYI
29812 t1#P#part_3#SP#subpart32.MYD
29813 t1#P#part_3#SP#subpart32.MYI
29814 t1#P#part_4#SP#subpart41.MYD
29815 t1#P#part_4#SP#subpart41.MYI
29816 t1#P#part_4#SP#subpart42.MYD
29817 t1#P#part_4#SP#subpart42.MYI
29818 t1.frm
29819 t1.par
29821 # check prerequisites-1 success:    1
29822 # check COUNT(*) success:    1
29823 # check MIN/MAX(f_int1) success:    1
29824 # check MIN/MAX(f_int2) success:    1
29825 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29826 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29827 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29828 WHERE f_int1 IN (2,3);
29829 # check prerequisites-3 success:    1
29830 DELETE FROM t1 WHERE f_charbig = 'delete me';
29831 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
29832 # check read via f_int1 success: 1
29833 # check read via f_int2 success: 1
29834         
29835 # check multiple-1 success:     1
29836 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29837         
29838 # check multiple-2 success:     1
29839 INSERT INTO t1 SELECT * FROM t0_template
29840 WHERE MOD(f_int1,3) = 0;
29841         
29842 # check multiple-3 success:     1
29843 UPDATE t1 SET f_int1 = f_int1 + @max_row
29844 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29845 AND @max_row_div2 + @max_row_div4;
29846         
29847 # check multiple-4 success:     1
29848 DELETE FROM t1
29849 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29850 AND @max_row_div2 + @max_row_div4 + @max_row;
29851         
29852 # check multiple-5 success:     1
29853 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29854 INSERT INTO t1
29855 SET f_int1 = @cur_value , f_int2 = @cur_value,
29856 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29857 f_charbig = '#SINGLE#';
29858         
29859 # check single-1 success:       1
29860 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29861 INSERT INTO t1
29862 SET f_int1 = @cur_value , f_int2 = @cur_value,
29863 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29864 f_charbig = '#SINGLE#';
29865         
29866 # check single-2 success:       1
29867 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29868 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29869 UPDATE t1 SET f_int1 = @cur_value2
29870 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29871         
29872 # check single-3 success:       1
29873 SET @cur_value1= -1;
29874 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29875 UPDATE t1 SET f_int1 = @cur_value1
29876 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29877         
29878 # check single-4 success:       1
29879 SELECT MAX(f_int1) INTO @cur_value FROM t1;
29880 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29881         
29882 # check single-5 success:       1
29883 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29884         
29885 # check single-6 success:       1
29886 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29887 ERROR HY000: Table has no partition for value 2147483647
29888 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29889 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29890 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29891 f_charbig = '#NULL#';
29892 INSERT INTO t1
29893 SET f_int1 = NULL , f_int2 = -@max_row,
29894 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29895 f_charbig = '#NULL#';
29896 # check null success:    1
29897         
29898 # check null-1 success:         1
29899 UPDATE t1 SET f_int1 = -@max_row
29900 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29901 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29902         
29903 # check null-2 success:         1
29904 UPDATE t1 SET f_int1 = NULL
29905 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29906 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29907         
29908 # check null-3 success:         1
29909 DELETE FROM t1
29910 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29911 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29912         
29913 # check null-4 success:         1
29914 DELETE FROM t1
29915 WHERE f_int1 = 0 AND f_int2 = 0
29916 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29917 AND f_charbig = '#NULL#';
29918 SET AUTOCOMMIT= 0;
29919 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29920 SELECT f_int1, f_int1, '', '', 'was inserted'
29921 FROM t0_template source_tab
29922 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29923         
29924 # check transactions-1 success:         1
29925 COMMIT WORK;
29926         
29927 # check transactions-2 success:         1
29928 ROLLBACK WORK;
29929         
29930 # check transactions-3 success:         1
29931 DELETE FROM t1 WHERE f_charbig = 'was inserted';
29932 COMMIT WORK;
29933 ROLLBACK WORK;
29934         
29935 # check transactions-4 success:         1
29936 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29937 SELECT f_int1, f_int1, '', '', 'was inserted'
29938 FROM t0_template source_tab
29939 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29940         
29941 # check transactions-5 success:         1
29942 ROLLBACK WORK;
29943 Warnings:
29944 Warning 1196    Some non-transactional changed tables couldn't be rolled back
29945         
29946 # check transactions-6 success:         1
29947 # INFO: Storage engine used for t1 seems to be not transactional.
29948 COMMIT;
29949         
29950 # check transactions-7 success:         1
29951 DELETE FROM t1 WHERE f_charbig = 'was inserted';
29952 COMMIT WORK;
29953 SET @@session.sql_mode = 'traditional';
29954 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29955 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29956 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29957 '', '', 'was inserted' FROM t0_template
29958 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29959 ERROR 22012: Division by 0
29960 COMMIT;
29961         
29962 # check transactions-8 success:         1
29963 # INFO: Storage engine used for t1 seems to be unable to revert
29964 #       changes made by the failing statement.
29965 SET @@session.sql_mode = '';
29966 SET AUTOCOMMIT= 1;
29967 DELETE FROM t1 WHERE f_charbig = 'was inserted';
29968 COMMIT WORK;
29969 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29970         
29971 # check special-1 success:      1
29972 UPDATE t1 SET f_charbig = '';
29973         
29974 # check special-2 success:      1
29975 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29976 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29977 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29978 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29979 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29980 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29981 'just inserted' FROM t0_template
29982 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29983 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29984 BEGIN
29985 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29986 f_charbig = 'updated by trigger'
29987       WHERE f_int1 = new.f_int1;
29988 END|
29989 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29990 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29991 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29992         
29993 # check trigger-1 success:      1
29994 DROP TRIGGER trg_1;
29995 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29996 f_int2 = CAST(f_char1 AS SIGNED INT),
29997 f_charbig = 'just inserted'
29998    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29999 DELETE FROM t0_aux
30000 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30001 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30002 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30003 'just inserted' FROM t0_template
30004 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30005 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30006 BEGIN
30007 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30008 f_charbig = 'updated by trigger'
30009       WHERE f_int1 = new.f_int1;
30010 END|
30011 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30012 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30013 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30014         
30015 # check trigger-2 success:      1
30016 DROP TRIGGER trg_1;
30017 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30018 f_int2 = CAST(f_char1 AS SIGNED INT),
30019 f_charbig = 'just inserted'
30020    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30021 DELETE FROM t0_aux
30022 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30023 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30024 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30025 'just inserted' FROM t0_template
30026 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30027 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30028 BEGIN
30029 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30030 f_charbig = 'updated by trigger'
30031       WHERE f_int1 = new.f_int1;
30032 END|
30033 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
30034 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30035         
30036 # check trigger-3 success:      1
30037 DROP TRIGGER trg_1;
30038 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30039 f_int2 = CAST(f_char1 AS SIGNED INT),
30040 f_charbig = 'just inserted'
30041    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30042 DELETE FROM t0_aux
30043 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30044 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30045 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30046 'just inserted' FROM t0_template
30047 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30048 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30049 BEGIN
30050 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30051 f_charbig = 'updated by trigger'
30052       WHERE f_int1 = - old.f_int1;
30053 END|
30054 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
30055 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30056         
30057 # check trigger-4 success:      1
30058 DROP TRIGGER trg_1;
30059 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30060 f_int2 = CAST(f_char1 AS SIGNED INT),
30061 f_charbig = 'just inserted'
30062    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30063 DELETE FROM t0_aux
30064 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30065 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30066 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30067 'just inserted' FROM t0_template
30068 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30069 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30070 BEGIN
30071 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30072 f_charbig = 'updated by trigger'
30073       WHERE f_int1 = new.f_int1;
30074 END|
30075 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
30076 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30077         
30078 # check trigger-5 success:      1
30079 DROP TRIGGER trg_1;
30080 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30081 f_int2 = CAST(f_char1 AS SIGNED INT),
30082 f_charbig = 'just inserted'
30083    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30084 DELETE FROM t0_aux
30085 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30086 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30087 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30088 'just inserted' FROM t0_template
30089 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30090 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30091 BEGIN
30092 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30093 f_charbig = 'updated by trigger'
30094       WHERE f_int1 = - old.f_int1;
30095 END|
30096 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
30097 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30098         
30099 # check trigger-6 success:      1
30100 DROP TRIGGER trg_1;
30101 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30102 f_int2 = CAST(f_char1 AS SIGNED INT),
30103 f_charbig = 'just inserted'
30104    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30105 DELETE FROM t0_aux
30106 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30107 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30108 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30109 'just inserted' FROM t0_template
30110 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30111 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30112 BEGIN
30113 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30114 f_charbig = 'updated by trigger'
30115       WHERE f_int1 = - old.f_int1;
30116 END|
30117 DELETE FROM t0_aux
30118 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30119         
30120 # check trigger-7 success:      1
30121 DROP TRIGGER trg_1;
30122 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30123 f_int2 = CAST(f_char1 AS SIGNED INT),
30124 f_charbig = 'just inserted'
30125    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30126 DELETE FROM t0_aux
30127 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30128 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30129 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30130 'just inserted' FROM t0_template
30131 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30132 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30133 BEGIN
30134 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30135 f_charbig = 'updated by trigger'
30136       WHERE f_int1 = - old.f_int1;
30137 END|
30138 DELETE FROM t0_aux
30139 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30140         
30141 # check trigger-8 success:      1
30142 DROP TRIGGER trg_1;
30143 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30144 f_int2 = CAST(f_char1 AS SIGNED INT),
30145 f_charbig = 'just inserted'
30146    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30147 DELETE FROM t0_aux
30148 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30149 DELETE FROM t1
30150 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30151 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30152 BEGIN
30153 SET new.f_int1 = old.f_int1 + @max_row,
30154 new.f_int2 = old.f_int2 - @max_row,
30155 new.f_charbig = '####updated per update trigger####';
30156 END|
30157 UPDATE t1
30158 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30159 f_charbig = '####updated per update statement itself####';
30160         
30161 # check trigger-9 success:      1
30162 DROP TRIGGER trg_2;
30163 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30164 f_int2 = CAST(f_char1 AS SIGNED INT),
30165 f_charbig = CONCAT('===',f_char1,'===');
30166 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30167 BEGIN
30168 SET new.f_int1 = new.f_int1 + @max_row,
30169 new.f_int2 = new.f_int2 - @max_row,
30170 new.f_charbig = '####updated per update trigger####';
30171 END|
30172 UPDATE t1
30173 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30174 f_charbig = '####updated per update statement itself####';
30175         
30176 # check trigger-10 success:     1
30177 DROP TRIGGER trg_2;
30178 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30179 f_int2 = CAST(f_char1 AS SIGNED INT),
30180 f_charbig = CONCAT('===',f_char1,'===');
30181 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30182 BEGIN
30183 SET new.f_int1 = @my_max1 + @counter,
30184 new.f_int2 = @my_min2 - @counter,
30185 new.f_charbig = '####updated per insert trigger####';
30186 SET @counter = @counter + 1;
30187 END|
30188 SET @counter = 1;
30189 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30190 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30191 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30192 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30193 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30194 ORDER BY f_int1;
30195 DROP TRIGGER trg_3;
30196         
30197 # check trigger-11 success:     1
30198 DELETE FROM t1
30199 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30200 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30201 AND f_charbig = '####updated per insert trigger####';
30202 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30203 BEGIN
30204 SET new.f_int1 = @my_max1 + @counter,
30205 new.f_int2 = @my_min2 - @counter,
30206 new.f_charbig = '####updated per insert trigger####';
30207 SET @counter = @counter + 1;
30208 END|
30209 SET @counter = 1;
30210 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30211 INSERT INTO t1 (f_char1, f_char2, f_charbig)
30212 SELECT CAST(f_int1 AS CHAR),
30213 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30214 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30215 ORDER BY f_int1;
30216 DROP TRIGGER trg_3;
30217         
30218 # check trigger-12 success:     1
30219 DELETE FROM t1
30220 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30221 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30222 AND f_charbig = '####updated per insert trigger####';
30223 ANALYZE  TABLE t1;
30224 Table   Op      Msg_type        Msg_text
30225 test.t1 analyze status  OK
30226 CHECK    TABLE t1 EXTENDED;
30227 Table   Op      Msg_type        Msg_text
30228 test.t1 check   status  OK
30229 CHECKSUM TABLE t1 EXTENDED;
30230 Table   Checksum
30231 test.t1 <some_value>
30232 OPTIMIZE TABLE t1;
30233 Table   Op      Msg_type        Msg_text
30234 test.t1 optimize        status  OK
30235 # check layout success:    1
30236 REPAIR   TABLE t1 EXTENDED;
30237 Table   Op      Msg_type        Msg_text
30238 test.t1 repair  status  OK
30239 # check layout success:    1
30240 TRUNCATE t1;
30241         
30242 # check TRUNCATE success:       1
30243 # check layout success:    1
30244 # End usability test (inc/partition_check.inc)
30245 DROP TABLE t1;
30246 CREATE TABLE t1 (
30247 f_int1 INTEGER,
30248 f_int2 INTEGER,
30249 f_char1 CHAR(20),
30250 f_char2 CHAR(20),
30251 f_charbig VARCHAR(1000)
30254 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
30255 (PARTITION part_1 VALUES IN (0)
30256 (SUBPARTITION sp11, SUBPARTITION sp12),
30257 PARTITION part_2 VALUES IN (1)
30258 (SUBPARTITION sp21, SUBPARTITION sp22),
30259 PARTITION part_3 VALUES IN (2)
30260 (SUBPARTITION sp31, SUBPARTITION sp32),
30261 PARTITION part_4 VALUES IN (NULL)
30262 (SUBPARTITION sp41, SUBPARTITION sp42));
30263 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30264 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30265 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30266 ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
30267 Table   Op      Msg_type        Msg_text
30268 test.t1 check   error   Error in list of partitions to test.t1
30269 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30270 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30271 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30272 # Start usability test (inc/partition_check.inc)
30273 create_command
30274 SHOW CREATE TABLE t1;
30275 Table   Create Table
30276 t1      CREATE TABLE `t1` (
30277   `f_int1` int(11) DEFAULT NULL,
30278   `f_int2` int(11) DEFAULT NULL,
30279   `f_char1` char(20) DEFAULT NULL,
30280   `f_char2` char(20) DEFAULT NULL,
30281   `f_charbig` varchar(1000) DEFAULT NULL
30282 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
30283 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
30284 SUBPARTITION BY HASH (f_int1 + 1)
30285 (PARTITION part_1 VALUES IN (0)
30286  (SUBPARTITION sp11 ENGINE = MyISAM,
30287   SUBPARTITION sp12 ENGINE = MyISAM),
30288  PARTITION part_2 VALUES IN (1)
30289  (SUBPARTITION sp21 ENGINE = MyISAM,
30290   SUBPARTITION sp22 ENGINE = MyISAM),
30291  PARTITION part_3 VALUES IN (2)
30292  (SUBPARTITION sp31 ENGINE = MyISAM,
30293   SUBPARTITION sp32 ENGINE = MyISAM),
30294  PARTITION part_4 VALUES IN (NULL)
30295  (SUBPARTITION sp41 ENGINE = MyISAM,
30296   SUBPARTITION sp42 ENGINE = MyISAM)) */
30298 unified filelist
30299 t1#P#part_1#SP#sp11.MYD
30300 t1#P#part_1#SP#sp11.MYI
30301 t1#P#part_1#SP#sp12.MYD
30302 t1#P#part_1#SP#sp12.MYI
30303 t1#P#part_2#SP#sp21.MYD
30304 t1#P#part_2#SP#sp21.MYI
30305 t1#P#part_2#SP#sp22.MYD
30306 t1#P#part_2#SP#sp22.MYI
30307 t1#P#part_3#SP#sp31.MYD
30308 t1#P#part_3#SP#sp31.MYI
30309 t1#P#part_3#SP#sp32.MYD
30310 t1#P#part_3#SP#sp32.MYI
30311 t1#P#part_4#SP#sp41.MYD
30312 t1#P#part_4#SP#sp41.MYI
30313 t1#P#part_4#SP#sp42.MYD
30314 t1#P#part_4#SP#sp42.MYI
30315 t1.frm
30316 t1.par
30318 # check prerequisites-1 success:    1
30319 # check COUNT(*) success:    1
30320 # check MIN/MAX(f_int1) success:    1
30321 # check MIN/MAX(f_int2) success:    1
30322 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30323 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30324 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30325 WHERE f_int1 IN (2,3);
30326 # check prerequisites-3 success:    1
30327 DELETE FROM t1 WHERE f_charbig = 'delete me';
30328 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
30329 # check read via f_int1 success: 1
30330 # check read via f_int2 success: 1
30331         
30332 # check multiple-1 success:     1
30333 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30334         
30335 # check multiple-2 success:     1
30336 INSERT INTO t1 SELECT * FROM t0_template
30337 WHERE MOD(f_int1,3) = 0;
30338         
30339 # check multiple-3 success:     1
30340 UPDATE t1 SET f_int1 = f_int1 + @max_row
30341 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30342 AND @max_row_div2 + @max_row_div4;
30343         
30344 # check multiple-4 success:     1
30345 DELETE FROM t1
30346 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30347 AND @max_row_div2 + @max_row_div4 + @max_row;
30348         
30349 # check multiple-5 success:     1
30350 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30351 INSERT INTO t1
30352 SET f_int1 = @cur_value , f_int2 = @cur_value,
30353 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30354 f_charbig = '#SINGLE#';
30355         
30356 # check single-1 success:       1
30357 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30358 INSERT INTO t1
30359 SET f_int1 = @cur_value , f_int2 = @cur_value,
30360 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30361 f_charbig = '#SINGLE#';
30362         
30363 # check single-2 success:       1
30364 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30365 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30366 UPDATE t1 SET f_int1 = @cur_value2
30367 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30368         
30369 # check single-3 success:       1
30370 SET @cur_value1= -1;
30371 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30372 UPDATE t1 SET f_int1 = @cur_value1
30373 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30374         
30375 # check single-4 success:       1
30376 SELECT MAX(f_int1) INTO @cur_value FROM t1;
30377 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30378         
30379 # check single-5 success:       1
30380 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30381         
30382 # check single-6 success:       1
30383 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30384         
30385 # check single-7 success:       1
30386 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
30387 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30388 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30389 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30390 f_charbig = '#NULL#';
30391 INSERT INTO t1
30392 SET f_int1 = NULL , f_int2 = -@max_row,
30393 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30394 f_charbig = '#NULL#';
30395 # check null success:    1
30396         
30397 # check null-1 success:         1
30398 UPDATE t1 SET f_int1 = -@max_row
30399 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30400 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30401         
30402 # check null-2 success:         1
30403 UPDATE t1 SET f_int1 = NULL
30404 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30405 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30406         
30407 # check null-3 success:         1
30408 DELETE FROM t1
30409 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30410 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30411         
30412 # check null-4 success:         1
30413 DELETE FROM t1
30414 WHERE f_int1 = 0 AND f_int2 = 0
30415 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30416 AND f_charbig = '#NULL#';
30417 SET AUTOCOMMIT= 0;
30418 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30419 SELECT f_int1, f_int1, '', '', 'was inserted'
30420 FROM t0_template source_tab
30421 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30422         
30423 # check transactions-1 success:         1
30424 COMMIT WORK;
30425         
30426 # check transactions-2 success:         1
30427 ROLLBACK WORK;
30428         
30429 # check transactions-3 success:         1
30430 DELETE FROM t1 WHERE f_charbig = 'was inserted';
30431 COMMIT WORK;
30432 ROLLBACK WORK;
30433         
30434 # check transactions-4 success:         1
30435 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30436 SELECT f_int1, f_int1, '', '', 'was inserted'
30437 FROM t0_template source_tab
30438 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30439         
30440 # check transactions-5 success:         1
30441 ROLLBACK WORK;
30442 Warnings:
30443 Warning 1196    Some non-transactional changed tables couldn't be rolled back
30444         
30445 # check transactions-6 success:         1
30446 # INFO: Storage engine used for t1 seems to be not transactional.
30447 COMMIT;
30448         
30449 # check transactions-7 success:         1
30450 DELETE FROM t1 WHERE f_charbig = 'was inserted';
30451 COMMIT WORK;
30452 SET @@session.sql_mode = 'traditional';
30453 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30454 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30455 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30456 '', '', 'was inserted' FROM t0_template
30457 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30458 ERROR 22012: Division by 0
30459 COMMIT;
30460         
30461 # check transactions-8 success:         1
30462 # INFO: Storage engine used for t1 seems to be unable to revert
30463 #       changes made by the failing statement.
30464 SET @@session.sql_mode = '';
30465 SET AUTOCOMMIT= 1;
30466 DELETE FROM t1 WHERE f_charbig = 'was inserted';
30467 COMMIT WORK;
30468 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30469         
30470 # check special-1 success:      1
30471 UPDATE t1 SET f_charbig = '';
30472         
30473 # check special-2 success:      1
30474 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30475 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30476 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30477 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30478 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30479 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30480 'just inserted' FROM t0_template
30481 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30482 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30483 BEGIN
30484 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30485 f_charbig = 'updated by trigger'
30486       WHERE f_int1 = new.f_int1;
30487 END|
30488 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30489 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30490 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30491         
30492 # check trigger-1 success:      1
30493 DROP TRIGGER trg_1;
30494 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30495 f_int2 = CAST(f_char1 AS SIGNED INT),
30496 f_charbig = 'just inserted'
30497    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30498 DELETE FROM t0_aux
30499 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30500 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30501 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30502 'just inserted' FROM t0_template
30503 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30504 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30505 BEGIN
30506 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30507 f_charbig = 'updated by trigger'
30508       WHERE f_int1 = new.f_int1;
30509 END|
30510 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30511 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30512 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30513         
30514 # check trigger-2 success:      1
30515 DROP TRIGGER trg_1;
30516 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30517 f_int2 = CAST(f_char1 AS SIGNED INT),
30518 f_charbig = 'just inserted'
30519    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30520 DELETE FROM t0_aux
30521 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30522 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30523 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30524 'just inserted' FROM t0_template
30525 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30526 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30527 BEGIN
30528 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30529 f_charbig = 'updated by trigger'
30530       WHERE f_int1 = new.f_int1;
30531 END|
30532 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
30533 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30534         
30535 # check trigger-3 success:      1
30536 DROP TRIGGER trg_1;
30537 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30538 f_int2 = CAST(f_char1 AS SIGNED INT),
30539 f_charbig = 'just inserted'
30540    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30541 DELETE FROM t0_aux
30542 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30543 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30544 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30545 'just inserted' FROM t0_template
30546 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30547 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30548 BEGIN
30549 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30550 f_charbig = 'updated by trigger'
30551       WHERE f_int1 = - old.f_int1;
30552 END|
30553 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
30554 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30555         
30556 # check trigger-4 success:      1
30557 DROP TRIGGER trg_1;
30558 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30559 f_int2 = CAST(f_char1 AS SIGNED INT),
30560 f_charbig = 'just inserted'
30561    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30562 DELETE FROM t0_aux
30563 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30564 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30565 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30566 'just inserted' FROM t0_template
30567 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30568 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30569 BEGIN
30570 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30571 f_charbig = 'updated by trigger'
30572       WHERE f_int1 = new.f_int1;
30573 END|
30574 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
30575 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30576         
30577 # check trigger-5 success:      1
30578 DROP TRIGGER trg_1;
30579 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30580 f_int2 = CAST(f_char1 AS SIGNED INT),
30581 f_charbig = 'just inserted'
30582    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30583 DELETE FROM t0_aux
30584 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30585 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30586 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30587 'just inserted' FROM t0_template
30588 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30589 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30590 BEGIN
30591 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30592 f_charbig = 'updated by trigger'
30593       WHERE f_int1 = - old.f_int1;
30594 END|
30595 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
30596 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30597         
30598 # check trigger-6 success:      1
30599 DROP TRIGGER trg_1;
30600 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30601 f_int2 = CAST(f_char1 AS SIGNED INT),
30602 f_charbig = 'just inserted'
30603    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30604 DELETE FROM t0_aux
30605 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30606 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30607 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30608 'just inserted' FROM t0_template
30609 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30610 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30611 BEGIN
30612 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30613 f_charbig = 'updated by trigger'
30614       WHERE f_int1 = - old.f_int1;
30615 END|
30616 DELETE FROM t0_aux
30617 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30618         
30619 # check trigger-7 success:      1
30620 DROP TRIGGER trg_1;
30621 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30622 f_int2 = CAST(f_char1 AS SIGNED INT),
30623 f_charbig = 'just inserted'
30624    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30625 DELETE FROM t0_aux
30626 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30627 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30628 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30629 'just inserted' FROM t0_template
30630 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30631 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30632 BEGIN
30633 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30634 f_charbig = 'updated by trigger'
30635       WHERE f_int1 = - old.f_int1;
30636 END|
30637 DELETE FROM t0_aux
30638 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30639         
30640 # check trigger-8 success:      1
30641 DROP TRIGGER trg_1;
30642 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30643 f_int2 = CAST(f_char1 AS SIGNED INT),
30644 f_charbig = 'just inserted'
30645    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30646 DELETE FROM t0_aux
30647 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30648 DELETE FROM t1
30649 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30650 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30651 BEGIN
30652 SET new.f_int1 = old.f_int1 + @max_row,
30653 new.f_int2 = old.f_int2 - @max_row,
30654 new.f_charbig = '####updated per update trigger####';
30655 END|
30656 UPDATE t1
30657 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30658 f_charbig = '####updated per update statement itself####';
30659         
30660 # check trigger-9 success:      1
30661 DROP TRIGGER trg_2;
30662 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30663 f_int2 = CAST(f_char1 AS SIGNED INT),
30664 f_charbig = CONCAT('===',f_char1,'===');
30665 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30666 BEGIN
30667 SET new.f_int1 = new.f_int1 + @max_row,
30668 new.f_int2 = new.f_int2 - @max_row,
30669 new.f_charbig = '####updated per update trigger####';
30670 END|
30671 UPDATE t1
30672 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30673 f_charbig = '####updated per update statement itself####';
30674         
30675 # check trigger-10 success:     1
30676 DROP TRIGGER trg_2;
30677 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30678 f_int2 = CAST(f_char1 AS SIGNED INT),
30679 f_charbig = CONCAT('===',f_char1,'===');
30680 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30681 BEGIN
30682 SET new.f_int1 = @my_max1 + @counter,
30683 new.f_int2 = @my_min2 - @counter,
30684 new.f_charbig = '####updated per insert trigger####';
30685 SET @counter = @counter + 1;
30686 END|
30687 SET @counter = 1;
30688 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30689 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30690 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30691 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30692 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30693 ORDER BY f_int1;
30694 DROP TRIGGER trg_3;
30695         
30696 # check trigger-11 success:     1
30697 DELETE FROM t1
30698 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30699 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30700 AND f_charbig = '####updated per insert trigger####';
30701 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30702 BEGIN
30703 SET new.f_int1 = @my_max1 + @counter,
30704 new.f_int2 = @my_min2 - @counter,
30705 new.f_charbig = '####updated per insert trigger####';
30706 SET @counter = @counter + 1;
30707 END|
30708 SET @counter = 1;
30709 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30710 INSERT INTO t1 (f_char1, f_char2, f_charbig)
30711 SELECT CAST(f_int1 AS CHAR),
30712 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30713 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30714 ORDER BY f_int1;
30715 DROP TRIGGER trg_3;
30716         
30717 # check trigger-12 success:     1
30718 DELETE FROM t1
30719 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30720 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30721 AND f_charbig = '####updated per insert trigger####';
30722 ANALYZE  TABLE t1;
30723 Table   Op      Msg_type        Msg_text
30724 test.t1 analyze status  OK
30725 CHECK    TABLE t1 EXTENDED;
30726 Table   Op      Msg_type        Msg_text
30727 test.t1 check   status  OK
30728 CHECKSUM TABLE t1 EXTENDED;
30729 Table   Checksum
30730 test.t1 <some_value>
30731 OPTIMIZE TABLE t1;
30732 Table   Op      Msg_type        Msg_text
30733 test.t1 optimize        status  OK
30734 # check layout success:    1
30735 REPAIR   TABLE t1 EXTENDED;
30736 Table   Op      Msg_type        Msg_text
30737 test.t1 repair  status  OK
30738 # check layout success:    1
30739 TRUNCATE t1;
30740         
30741 # check TRUNCATE success:       1
30742 # check layout success:    1
30743 # End usability test (inc/partition_check.inc)
30744 DROP TABLE t1;
30745 CREATE TABLE t1 (
30746 f_int1 INTEGER,
30747 f_int2 INTEGER,
30748 f_char1 CHAR(20),
30749 f_char2 CHAR(20),
30750 f_charbig VARCHAR(1000)
30753 PARTITION BY LIST(ABS(MOD(f_int1,2)))
30754 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
30755 (PARTITION part_1 VALUES IN (0),
30756  PARTITION part_2 VALUES IN (1),
30757  PARTITION part_3 VALUES IN (NULL));
30758 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30759 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30760 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30761 ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
30762 Table   Op      Msg_type        Msg_text
30763 test.t1 check   error   Error in list of partitions to test.t1
30764 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30765 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30766 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30767 # Start usability test (inc/partition_check.inc)
30768 create_command
30769 SHOW CREATE TABLE t1;
30770 Table   Create Table
30771 t1      CREATE TABLE `t1` (
30772   `f_int1` int(11) DEFAULT NULL,
30773   `f_int2` int(11) DEFAULT NULL,
30774   `f_char1` char(20) DEFAULT NULL,
30775   `f_char2` char(20) DEFAULT NULL,
30776   `f_charbig` varchar(1000) DEFAULT NULL
30777 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
30778 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
30779 SUBPARTITION BY KEY (f_int1)
30780 SUBPARTITIONS 3
30781 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
30782  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
30783  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
30785 unified filelist
30786 t1#P#part_1#SP#part_1sp0.MYD
30787 t1#P#part_1#SP#part_1sp0.MYI
30788 t1#P#part_1#SP#part_1sp1.MYD
30789 t1#P#part_1#SP#part_1sp1.MYI
30790 t1#P#part_1#SP#part_1sp2.MYD
30791 t1#P#part_1#SP#part_1sp2.MYI
30792 t1#P#part_2#SP#part_2sp0.MYD
30793 t1#P#part_2#SP#part_2sp0.MYI
30794 t1#P#part_2#SP#part_2sp1.MYD
30795 t1#P#part_2#SP#part_2sp1.MYI
30796 t1#P#part_2#SP#part_2sp2.MYD
30797 t1#P#part_2#SP#part_2sp2.MYI
30798 t1#P#part_3#SP#part_3sp0.MYD
30799 t1#P#part_3#SP#part_3sp0.MYI
30800 t1#P#part_3#SP#part_3sp1.MYD
30801 t1#P#part_3#SP#part_3sp1.MYI
30802 t1#P#part_3#SP#part_3sp2.MYD
30803 t1#P#part_3#SP#part_3sp2.MYI
30804 t1.frm
30805 t1.par
30807 # check prerequisites-1 success:    1
30808 # check COUNT(*) success:    1
30809 # check MIN/MAX(f_int1) success:    1
30810 # check MIN/MAX(f_int2) success:    1
30811 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30812 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30813 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30814 WHERE f_int1 IN (2,3);
30815 # check prerequisites-3 success:    1
30816 DELETE FROM t1 WHERE f_charbig = 'delete me';
30817 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
30818 # check read via f_int1 success: 1
30819 # check read via f_int2 success: 1
30820         
30821 # check multiple-1 success:     1
30822 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30823         
30824 # check multiple-2 success:     1
30825 INSERT INTO t1 SELECT * FROM t0_template
30826 WHERE MOD(f_int1,3) = 0;
30827         
30828 # check multiple-3 success:     1
30829 UPDATE t1 SET f_int1 = f_int1 + @max_row
30830 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30831 AND @max_row_div2 + @max_row_div4;
30832         
30833 # check multiple-4 success:     1
30834 DELETE FROM t1
30835 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30836 AND @max_row_div2 + @max_row_div4 + @max_row;
30837         
30838 # check multiple-5 success:     1
30839 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30840 INSERT INTO t1
30841 SET f_int1 = @cur_value , f_int2 = @cur_value,
30842 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30843 f_charbig = '#SINGLE#';
30844         
30845 # check single-1 success:       1
30846 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30847 INSERT INTO t1
30848 SET f_int1 = @cur_value , f_int2 = @cur_value,
30849 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30850 f_charbig = '#SINGLE#';
30851         
30852 # check single-2 success:       1
30853 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30854 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30855 UPDATE t1 SET f_int1 = @cur_value2
30856 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30857         
30858 # check single-3 success:       1
30859 SET @cur_value1= -1;
30860 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30861 UPDATE t1 SET f_int1 = @cur_value1
30862 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30863         
30864 # check single-4 success:       1
30865 SELECT MAX(f_int1) INTO @cur_value FROM t1;
30866 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30867         
30868 # check single-5 success:       1
30869 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30870         
30871 # check single-6 success:       1
30872 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30873         
30874 # check single-7 success:       1
30875 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
30876 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30877 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30878 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30879 f_charbig = '#NULL#';
30880 INSERT INTO t1
30881 SET f_int1 = NULL , f_int2 = -@max_row,
30882 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30883 f_charbig = '#NULL#';
30884 # check null success:    1
30885         
30886 # check null-1 success:         1
30887 UPDATE t1 SET f_int1 = -@max_row
30888 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30889 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30890         
30891 # check null-2 success:         1
30892 UPDATE t1 SET f_int1 = NULL
30893 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30894 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30895         
30896 # check null-3 success:         1
30897 DELETE FROM t1
30898 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30899 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30900         
30901 # check null-4 success:         1
30902 DELETE FROM t1
30903 WHERE f_int1 = 0 AND f_int2 = 0
30904 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30905 AND f_charbig = '#NULL#';
30906 SET AUTOCOMMIT= 0;
30907 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30908 SELECT f_int1, f_int1, '', '', 'was inserted'
30909 FROM t0_template source_tab
30910 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30911         
30912 # check transactions-1 success:         1
30913 COMMIT WORK;
30914         
30915 # check transactions-2 success:         1
30916 ROLLBACK WORK;
30917         
30918 # check transactions-3 success:         1
30919 DELETE FROM t1 WHERE f_charbig = 'was inserted';
30920 COMMIT WORK;
30921 ROLLBACK WORK;
30922         
30923 # check transactions-4 success:         1
30924 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30925 SELECT f_int1, f_int1, '', '', 'was inserted'
30926 FROM t0_template source_tab
30927 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30928         
30929 # check transactions-5 success:         1
30930 ROLLBACK WORK;
30931 Warnings:
30932 Warning 1196    Some non-transactional changed tables couldn't be rolled back
30933         
30934 # check transactions-6 success:         1
30935 # INFO: Storage engine used for t1 seems to be not transactional.
30936 COMMIT;
30937         
30938 # check transactions-7 success:         1
30939 DELETE FROM t1 WHERE f_charbig = 'was inserted';
30940 COMMIT WORK;
30941 SET @@session.sql_mode = 'traditional';
30942 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30943 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30944 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30945 '', '', 'was inserted' FROM t0_template
30946 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30947 ERROR 22012: Division by 0
30948 COMMIT;
30949         
30950 # check transactions-8 success:         1
30951 # INFO: Storage engine used for t1 seems to be unable to revert
30952 #       changes made by the failing statement.
30953 SET @@session.sql_mode = '';
30954 SET AUTOCOMMIT= 1;
30955 DELETE FROM t1 WHERE f_charbig = 'was inserted';
30956 COMMIT WORK;
30957 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30958         
30959 # check special-1 success:      1
30960 UPDATE t1 SET f_charbig = '';
30961         
30962 # check special-2 success:      1
30963 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30964 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30965 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30966 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30967 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30968 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30969 'just inserted' FROM t0_template
30970 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30971 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30972 BEGIN
30973 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30974 f_charbig = 'updated by trigger'
30975       WHERE f_int1 = new.f_int1;
30976 END|
30977 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30978 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30979 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30980         
30981 # check trigger-1 success:      1
30982 DROP TRIGGER trg_1;
30983 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30984 f_int2 = CAST(f_char1 AS SIGNED INT),
30985 f_charbig = 'just inserted'
30986    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30987 DELETE FROM t0_aux
30988 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30989 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30990 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30991 'just inserted' FROM t0_template
30992 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30993 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30994 BEGIN
30995 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30996 f_charbig = 'updated by trigger'
30997       WHERE f_int1 = new.f_int1;
30998 END|
30999 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31000 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31001 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31002         
31003 # check trigger-2 success:      1
31004 DROP TRIGGER trg_1;
31005 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31006 f_int2 = CAST(f_char1 AS SIGNED INT),
31007 f_charbig = 'just inserted'
31008    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31009 DELETE FROM t0_aux
31010 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31011 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31012 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31013 'just inserted' FROM t0_template
31014 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31015 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31016 BEGIN
31017 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31018 f_charbig = 'updated by trigger'
31019       WHERE f_int1 = new.f_int1;
31020 END|
31021 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
31022 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31023         
31024 # check trigger-3 success:      1
31025 DROP TRIGGER trg_1;
31026 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31027 f_int2 = CAST(f_char1 AS SIGNED INT),
31028 f_charbig = 'just inserted'
31029    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31030 DELETE FROM t0_aux
31031 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31032 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31033 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31034 'just inserted' FROM t0_template
31035 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31036 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31037 BEGIN
31038 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31039 f_charbig = 'updated by trigger'
31040       WHERE f_int1 = - old.f_int1;
31041 END|
31042 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
31043 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31044         
31045 # check trigger-4 success:      1
31046 DROP TRIGGER trg_1;
31047 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31048 f_int2 = CAST(f_char1 AS SIGNED INT),
31049 f_charbig = 'just inserted'
31050    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31051 DELETE FROM t0_aux
31052 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31053 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31054 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31055 'just inserted' FROM t0_template
31056 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31057 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31058 BEGIN
31059 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31060 f_charbig = 'updated by trigger'
31061       WHERE f_int1 = new.f_int1;
31062 END|
31063 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
31064 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31065         
31066 # check trigger-5 success:      1
31067 DROP TRIGGER trg_1;
31068 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31069 f_int2 = CAST(f_char1 AS SIGNED INT),
31070 f_charbig = 'just inserted'
31071    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31072 DELETE FROM t0_aux
31073 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31074 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31075 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31076 'just inserted' FROM t0_template
31077 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31078 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31079 BEGIN
31080 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31081 f_charbig = 'updated by trigger'
31082       WHERE f_int1 = - old.f_int1;
31083 END|
31084 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
31085 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31086         
31087 # check trigger-6 success:      1
31088 DROP TRIGGER trg_1;
31089 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31090 f_int2 = CAST(f_char1 AS SIGNED INT),
31091 f_charbig = 'just inserted'
31092    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31093 DELETE FROM t0_aux
31094 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31095 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31096 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31097 'just inserted' FROM t0_template
31098 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31099 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
31100 BEGIN
31101 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31102 f_charbig = 'updated by trigger'
31103       WHERE f_int1 = - old.f_int1;
31104 END|
31105 DELETE FROM t0_aux
31106 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31107         
31108 # check trigger-7 success:      1
31109 DROP TRIGGER trg_1;
31110 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31111 f_int2 = CAST(f_char1 AS SIGNED INT),
31112 f_charbig = 'just inserted'
31113    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31114 DELETE FROM t0_aux
31115 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31116 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31117 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31118 'just inserted' FROM t0_template
31119 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31120 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
31121 BEGIN
31122 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31123 f_charbig = 'updated by trigger'
31124       WHERE f_int1 = - old.f_int1;
31125 END|
31126 DELETE FROM t0_aux
31127 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31128         
31129 # check trigger-8 success:      1
31130 DROP TRIGGER trg_1;
31131 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31132 f_int2 = CAST(f_char1 AS SIGNED INT),
31133 f_charbig = 'just inserted'
31134    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31135 DELETE FROM t0_aux
31136 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31137 DELETE FROM t1
31138 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31139 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31140 BEGIN
31141 SET new.f_int1 = old.f_int1 + @max_row,
31142 new.f_int2 = old.f_int2 - @max_row,
31143 new.f_charbig = '####updated per update trigger####';
31144 END|
31145 UPDATE t1
31146 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31147 f_charbig = '####updated per update statement itself####';
31148         
31149 # check trigger-9 success:      1
31150 DROP TRIGGER trg_2;
31151 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31152 f_int2 = CAST(f_char1 AS SIGNED INT),
31153 f_charbig = CONCAT('===',f_char1,'===');
31154 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31155 BEGIN
31156 SET new.f_int1 = new.f_int1 + @max_row,
31157 new.f_int2 = new.f_int2 - @max_row,
31158 new.f_charbig = '####updated per update trigger####';
31159 END|
31160 UPDATE t1
31161 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31162 f_charbig = '####updated per update statement itself####';
31163         
31164 # check trigger-10 success:     1
31165 DROP TRIGGER trg_2;
31166 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31167 f_int2 = CAST(f_char1 AS SIGNED INT),
31168 f_charbig = CONCAT('===',f_char1,'===');
31169 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31170 BEGIN
31171 SET new.f_int1 = @my_max1 + @counter,
31172 new.f_int2 = @my_min2 - @counter,
31173 new.f_charbig = '####updated per insert trigger####';
31174 SET @counter = @counter + 1;
31175 END|
31176 SET @counter = 1;
31177 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31178 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31179 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31180 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31181 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31182 ORDER BY f_int1;
31183 DROP TRIGGER trg_3;
31184         
31185 # check trigger-11 success:     1
31186 DELETE FROM t1
31187 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31188 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31189 AND f_charbig = '####updated per insert trigger####';
31190 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31191 BEGIN
31192 SET new.f_int1 = @my_max1 + @counter,
31193 new.f_int2 = @my_min2 - @counter,
31194 new.f_charbig = '####updated per insert trigger####';
31195 SET @counter = @counter + 1;
31196 END|
31197 SET @counter = 1;
31198 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31199 INSERT INTO t1 (f_char1, f_char2, f_charbig)
31200 SELECT CAST(f_int1 AS CHAR),
31201 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31202 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31203 ORDER BY f_int1;
31204 DROP TRIGGER trg_3;
31205         
31206 # check trigger-12 success:     1
31207 DELETE FROM t1
31208 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31209 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31210 AND f_charbig = '####updated per insert trigger####';
31211 ANALYZE  TABLE t1;
31212 Table   Op      Msg_type        Msg_text
31213 test.t1 analyze status  OK
31214 CHECK    TABLE t1 EXTENDED;
31215 Table   Op      Msg_type        Msg_text
31216 test.t1 check   status  OK
31217 CHECKSUM TABLE t1 EXTENDED;
31218 Table   Checksum
31219 test.t1 <some_value>
31220 OPTIMIZE TABLE t1;
31221 Table   Op      Msg_type        Msg_text
31222 test.t1 optimize        status  OK
31223 # check layout success:    1
31224 REPAIR   TABLE t1 EXTENDED;
31225 Table   Op      Msg_type        Msg_text
31226 test.t1 repair  status  OK
31227 # check layout success:    1
31228 TRUNCATE t1;
31229         
31230 # check TRUNCATE success:       1
31231 # check layout success:    1
31232 # End usability test (inc/partition_check.inc)
31233 DROP TABLE t1;
31234 #  2.4 ALTER ... CHECK PARTITION part_1,part_1,part_1;
31235 DROP TABLE IF EXISTS t1;
31236 CREATE TABLE t1 (
31237 f_int1 INTEGER,
31238 f_int2 INTEGER,
31239 f_char1 CHAR(20),
31240 f_char2 CHAR(20),
31241 f_charbig VARCHAR(1000)
31244 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
31245 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31246 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31247 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31248 ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
31249 Table   Op      Msg_type        Msg_text
31250 test.t1 check   error   Error in list of partitions to test.t1
31251 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31252 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31253 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
31254 # Start usability test (inc/partition_check.inc)
31255 create_command
31256 SHOW CREATE TABLE t1;
31257 Table   Create Table
31258 t1      CREATE TABLE `t1` (
31259   `f_int1` int(11) DEFAULT NULL,
31260   `f_int2` int(11) DEFAULT NULL,
31261   `f_char1` char(20) DEFAULT NULL,
31262   `f_char2` char(20) DEFAULT NULL,
31263   `f_charbig` varchar(1000) DEFAULT NULL
31264 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
31265 /*!50100 PARTITION BY HASH (f_int1)
31266 (PARTITION part_1 ENGINE = MyISAM,
31267  PARTITION part_2 ENGINE = MyISAM) */
31269 unified filelist
31270 t1#P#part_1.MYD
31271 t1#P#part_1.MYI
31272 t1#P#part_2.MYD
31273 t1#P#part_2.MYI
31274 t1.frm
31275 t1.par
31277 # check prerequisites-1 success:    1
31278 # check COUNT(*) success:    1
31279 # check MIN/MAX(f_int1) success:    1
31280 # check MIN/MAX(f_int2) success:    1
31281 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31282 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31283 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31284 WHERE f_int1 IN (2,3);
31285 # check prerequisites-3 success:    1
31286 DELETE FROM t1 WHERE f_charbig = 'delete me';
31287 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
31288 # check read via f_int1 success: 1
31289 # check read via f_int2 success: 1
31290         
31291 # check multiple-1 success:     1
31292 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31293         
31294 # check multiple-2 success:     1
31295 INSERT INTO t1 SELECT * FROM t0_template
31296 WHERE MOD(f_int1,3) = 0;
31297         
31298 # check multiple-3 success:     1
31299 UPDATE t1 SET f_int1 = f_int1 + @max_row
31300 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31301 AND @max_row_div2 + @max_row_div4;
31302         
31303 # check multiple-4 success:     1
31304 DELETE FROM t1
31305 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31306 AND @max_row_div2 + @max_row_div4 + @max_row;
31307         
31308 # check multiple-5 success:     1
31309 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
31310 INSERT INTO t1
31311 SET f_int1 = @cur_value , f_int2 = @cur_value,
31312 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31313 f_charbig = '#SINGLE#';
31314         
31315 # check single-1 success:       1
31316 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
31317 INSERT INTO t1
31318 SET f_int1 = @cur_value , f_int2 = @cur_value,
31319 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31320 f_charbig = '#SINGLE#';
31321         
31322 # check single-2 success:       1
31323 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
31324 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
31325 UPDATE t1 SET f_int1 = @cur_value2
31326 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
31327         
31328 # check single-3 success:       1
31329 SET @cur_value1= -1;
31330 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
31331 UPDATE t1 SET f_int1 = @cur_value1
31332 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
31333         
31334 # check single-4 success:       1
31335 SELECT MAX(f_int1) INTO @cur_value FROM t1;
31336 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
31337         
31338 # check single-5 success:       1
31339 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
31340         
31341 # check single-6 success:       1
31342 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
31343         
31344 # check single-7 success:       1
31345 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
31346 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
31347 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
31348 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
31349 f_charbig = '#NULL#';
31350 INSERT INTO t1
31351 SET f_int1 = NULL , f_int2 = -@max_row,
31352 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
31353 f_charbig = '#NULL#';
31354 # check null success:    1
31355         
31356 # check null-1 success:         1
31357 UPDATE t1 SET f_int1 = -@max_row
31358 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31359 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31360         
31361 # check null-2 success:         1
31362 UPDATE t1 SET f_int1 = NULL
31363 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31364 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31365         
31366 # check null-3 success:         1
31367 DELETE FROM t1
31368 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31369 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31370         
31371 # check null-4 success:         1
31372 DELETE FROM t1
31373 WHERE f_int1 = 0 AND f_int2 = 0
31374 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
31375 AND f_charbig = '#NULL#';
31376 SET AUTOCOMMIT= 0;
31377 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31378 SELECT f_int1, f_int1, '', '', 'was inserted'
31379 FROM t0_template source_tab
31380 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31381         
31382 # check transactions-1 success:         1
31383 COMMIT WORK;
31384         
31385 # check transactions-2 success:         1
31386 ROLLBACK WORK;
31387         
31388 # check transactions-3 success:         1
31389 DELETE FROM t1 WHERE f_charbig = 'was inserted';
31390 COMMIT WORK;
31391 ROLLBACK WORK;
31392         
31393 # check transactions-4 success:         1
31394 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31395 SELECT f_int1, f_int1, '', '', 'was inserted'
31396 FROM t0_template source_tab
31397 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31398         
31399 # check transactions-5 success:         1
31400 ROLLBACK WORK;
31401 Warnings:
31402 Warning 1196    Some non-transactional changed tables couldn't be rolled back
31403         
31404 # check transactions-6 success:         1
31405 # INFO: Storage engine used for t1 seems to be not transactional.
31406 COMMIT;
31407         
31408 # check transactions-7 success:         1
31409 DELETE FROM t1 WHERE f_charbig = 'was inserted';
31410 COMMIT WORK;
31411 SET @@session.sql_mode = 'traditional';
31412 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31413 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31414 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31415 '', '', 'was inserted' FROM t0_template
31416 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31417 ERROR 22012: Division by 0
31418 COMMIT;
31419         
31420 # check transactions-8 success:         1
31421 # INFO: Storage engine used for t1 seems to be unable to revert
31422 #       changes made by the failing statement.
31423 SET @@session.sql_mode = '';
31424 SET AUTOCOMMIT= 1;
31425 DELETE FROM t1 WHERE f_charbig = 'was inserted';
31426 COMMIT WORK;
31427 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31428         
31429 # check special-1 success:      1
31430 UPDATE t1 SET f_charbig = '';
31431         
31432 # check special-2 success:      1
31433 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31434 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31435 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31436 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31437 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31438 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31439 'just inserted' FROM t0_template
31440 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31441 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31442 BEGIN
31443 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31444 f_charbig = 'updated by trigger'
31445       WHERE f_int1 = new.f_int1;
31446 END|
31447 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31448 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31449 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31450         
31451 # check trigger-1 success:      1
31452 DROP TRIGGER trg_1;
31453 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31454 f_int2 = CAST(f_char1 AS SIGNED INT),
31455 f_charbig = 'just inserted'
31456    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31457 DELETE FROM t0_aux
31458 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31459 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31460 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31461 'just inserted' FROM t0_template
31462 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31463 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31464 BEGIN
31465 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31466 f_charbig = 'updated by trigger'
31467       WHERE f_int1 = new.f_int1;
31468 END|
31469 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31470 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31471 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31472         
31473 # check trigger-2 success:      1
31474 DROP TRIGGER trg_1;
31475 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31476 f_int2 = CAST(f_char1 AS SIGNED INT),
31477 f_charbig = 'just inserted'
31478    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31479 DELETE FROM t0_aux
31480 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31481 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31482 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31483 'just inserted' FROM t0_template
31484 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31485 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31486 BEGIN
31487 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31488 f_charbig = 'updated by trigger'
31489       WHERE f_int1 = new.f_int1;
31490 END|
31491 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
31492 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31493         
31494 # check trigger-3 success:      1
31495 DROP TRIGGER trg_1;
31496 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31497 f_int2 = CAST(f_char1 AS SIGNED INT),
31498 f_charbig = 'just inserted'
31499    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31500 DELETE FROM t0_aux
31501 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31502 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31503 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31504 'just inserted' FROM t0_template
31505 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31506 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31507 BEGIN
31508 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31509 f_charbig = 'updated by trigger'
31510       WHERE f_int1 = - old.f_int1;
31511 END|
31512 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
31513 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31514         
31515 # check trigger-4 success:      1
31516 DROP TRIGGER trg_1;
31517 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31518 f_int2 = CAST(f_char1 AS SIGNED INT),
31519 f_charbig = 'just inserted'
31520    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31521 DELETE FROM t0_aux
31522 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31523 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31524 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31525 'just inserted' FROM t0_template
31526 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31527 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31528 BEGIN
31529 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31530 f_charbig = 'updated by trigger'
31531       WHERE f_int1 = new.f_int1;
31532 END|
31533 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
31534 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31535         
31536 # check trigger-5 success:      1
31537 DROP TRIGGER trg_1;
31538 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31539 f_int2 = CAST(f_char1 AS SIGNED INT),
31540 f_charbig = 'just inserted'
31541    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31542 DELETE FROM t0_aux
31543 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31544 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31545 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31546 'just inserted' FROM t0_template
31547 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31548 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31549 BEGIN
31550 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31551 f_charbig = 'updated by trigger'
31552       WHERE f_int1 = - old.f_int1;
31553 END|
31554 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
31555 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31556         
31557 # check trigger-6 success:      1
31558 DROP TRIGGER trg_1;
31559 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31560 f_int2 = CAST(f_char1 AS SIGNED INT),
31561 f_charbig = 'just inserted'
31562    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31563 DELETE FROM t0_aux
31564 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31565 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31566 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31567 'just inserted' FROM t0_template
31568 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31569 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
31570 BEGIN
31571 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31572 f_charbig = 'updated by trigger'
31573       WHERE f_int1 = - old.f_int1;
31574 END|
31575 DELETE FROM t0_aux
31576 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31577         
31578 # check trigger-7 success:      1
31579 DROP TRIGGER trg_1;
31580 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31581 f_int2 = CAST(f_char1 AS SIGNED INT),
31582 f_charbig = 'just inserted'
31583    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31584 DELETE FROM t0_aux
31585 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31586 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31587 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31588 'just inserted' FROM t0_template
31589 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31590 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
31591 BEGIN
31592 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31593 f_charbig = 'updated by trigger'
31594       WHERE f_int1 = - old.f_int1;
31595 END|
31596 DELETE FROM t0_aux
31597 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31598         
31599 # check trigger-8 success:      1
31600 DROP TRIGGER trg_1;
31601 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31602 f_int2 = CAST(f_char1 AS SIGNED INT),
31603 f_charbig = 'just inserted'
31604    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31605 DELETE FROM t0_aux
31606 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31607 DELETE FROM t1
31608 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31609 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31610 BEGIN
31611 SET new.f_int1 = old.f_int1 + @max_row,
31612 new.f_int2 = old.f_int2 - @max_row,
31613 new.f_charbig = '####updated per update trigger####';
31614 END|
31615 UPDATE t1
31616 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31617 f_charbig = '####updated per update statement itself####';
31618         
31619 # check trigger-9 success:      1
31620 DROP TRIGGER trg_2;
31621 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31622 f_int2 = CAST(f_char1 AS SIGNED INT),
31623 f_charbig = CONCAT('===',f_char1,'===');
31624 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31625 BEGIN
31626 SET new.f_int1 = new.f_int1 + @max_row,
31627 new.f_int2 = new.f_int2 - @max_row,
31628 new.f_charbig = '####updated per update trigger####';
31629 END|
31630 UPDATE t1
31631 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31632 f_charbig = '####updated per update statement itself####';
31633         
31634 # check trigger-10 success:     1
31635 DROP TRIGGER trg_2;
31636 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31637 f_int2 = CAST(f_char1 AS SIGNED INT),
31638 f_charbig = CONCAT('===',f_char1,'===');
31639 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31640 BEGIN
31641 SET new.f_int1 = @my_max1 + @counter,
31642 new.f_int2 = @my_min2 - @counter,
31643 new.f_charbig = '####updated per insert trigger####';
31644 SET @counter = @counter + 1;
31645 END|
31646 SET @counter = 1;
31647 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31648 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31649 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31650 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31651 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31652 ORDER BY f_int1;
31653 DROP TRIGGER trg_3;
31654         
31655 # check trigger-11 success:     1
31656 DELETE FROM t1
31657 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31658 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31659 AND f_charbig = '####updated per insert trigger####';
31660 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31661 BEGIN
31662 SET new.f_int1 = @my_max1 + @counter,
31663 new.f_int2 = @my_min2 - @counter,
31664 new.f_charbig = '####updated per insert trigger####';
31665 SET @counter = @counter + 1;
31666 END|
31667 SET @counter = 1;
31668 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31669 INSERT INTO t1 (f_char1, f_char2, f_charbig)
31670 SELECT CAST(f_int1 AS CHAR),
31671 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31672 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31673 ORDER BY f_int1;
31674 DROP TRIGGER trg_3;
31675         
31676 # check trigger-12 success:     1
31677 DELETE FROM t1
31678 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31679 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31680 AND f_charbig = '####updated per insert trigger####';
31681 ANALYZE  TABLE t1;
31682 Table   Op      Msg_type        Msg_text
31683 test.t1 analyze status  OK
31684 CHECK    TABLE t1 EXTENDED;
31685 Table   Op      Msg_type        Msg_text
31686 test.t1 check   status  OK
31687 CHECKSUM TABLE t1 EXTENDED;
31688 Table   Checksum
31689 test.t1 <some_value>
31690 OPTIMIZE TABLE t1;
31691 Table   Op      Msg_type        Msg_text
31692 test.t1 optimize        status  OK
31693 # check layout success:    1
31694 REPAIR   TABLE t1 EXTENDED;
31695 Table   Op      Msg_type        Msg_text
31696 test.t1 repair  status  OK
31697 # check layout success:    1
31698 TRUNCATE t1;
31699         
31700 # check TRUNCATE success:       1
31701 # check layout success:    1
31702 # End usability test (inc/partition_check.inc)
31703 DROP TABLE t1;
31704 CREATE TABLE t1 (
31705 f_int1 INTEGER,
31706 f_int2 INTEGER,
31707 f_char1 CHAR(20),
31708 f_char2 CHAR(20),
31709 f_charbig VARCHAR(1000)
31712 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
31713 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31714 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31715 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31716 ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
31717 Table   Op      Msg_type        Msg_text
31718 test.t1 check   error   Error in list of partitions to test.t1
31719 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31720 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31721 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
31722 # Start usability test (inc/partition_check.inc)
31723 create_command
31724 SHOW CREATE TABLE t1;
31725 Table   Create Table
31726 t1      CREATE TABLE `t1` (
31727   `f_int1` int(11) DEFAULT NULL,
31728   `f_int2` int(11) DEFAULT NULL,
31729   `f_char1` char(20) DEFAULT NULL,
31730   `f_char2` char(20) DEFAULT NULL,
31731   `f_charbig` varchar(1000) DEFAULT NULL
31732 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
31733 /*!50100 PARTITION BY KEY (f_int1)
31734 (PARTITION part_1 ENGINE = MyISAM,
31735  PARTITION part_2 ENGINE = MyISAM,
31736  PARTITION part_3 ENGINE = MyISAM,
31737  PARTITION part_4 ENGINE = MyISAM,
31738  PARTITION part_5 ENGINE = MyISAM) */
31740 unified filelist
31741 t1#P#part_1.MYD
31742 t1#P#part_1.MYI
31743 t1#P#part_2.MYD
31744 t1#P#part_2.MYI
31745 t1#P#part_3.MYD
31746 t1#P#part_3.MYI
31747 t1#P#part_4.MYD
31748 t1#P#part_4.MYI
31749 t1#P#part_5.MYD
31750 t1#P#part_5.MYI
31751 t1.frm
31752 t1.par
31754 # check prerequisites-1 success:    1
31755 # check COUNT(*) success:    1
31756 # check MIN/MAX(f_int1) success:    1
31757 # check MIN/MAX(f_int2) success:    1
31758 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31759 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31760 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31761 WHERE f_int1 IN (2,3);
31762 # check prerequisites-3 success:    1
31763 DELETE FROM t1 WHERE f_charbig = 'delete me';
31764 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
31765 # check read via f_int1 success: 1
31766 # check read via f_int2 success: 1
31767         
31768 # check multiple-1 success:     1
31769 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31770         
31771 # check multiple-2 success:     1
31772 INSERT INTO t1 SELECT * FROM t0_template
31773 WHERE MOD(f_int1,3) = 0;
31774         
31775 # check multiple-3 success:     1
31776 UPDATE t1 SET f_int1 = f_int1 + @max_row
31777 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31778 AND @max_row_div2 + @max_row_div4;
31779         
31780 # check multiple-4 success:     1
31781 DELETE FROM t1
31782 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31783 AND @max_row_div2 + @max_row_div4 + @max_row;
31784         
31785 # check multiple-5 success:     1
31786 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
31787 INSERT INTO t1
31788 SET f_int1 = @cur_value , f_int2 = @cur_value,
31789 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31790 f_charbig = '#SINGLE#';
31791         
31792 # check single-1 success:       1
31793 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
31794 INSERT INTO t1
31795 SET f_int1 = @cur_value , f_int2 = @cur_value,
31796 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31797 f_charbig = '#SINGLE#';
31798         
31799 # check single-2 success:       1
31800 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
31801 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
31802 UPDATE t1 SET f_int1 = @cur_value2
31803 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
31804         
31805 # check single-3 success:       1
31806 SET @cur_value1= -1;
31807 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
31808 UPDATE t1 SET f_int1 = @cur_value1
31809 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
31810         
31811 # check single-4 success:       1
31812 SELECT MAX(f_int1) INTO @cur_value FROM t1;
31813 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
31814         
31815 # check single-5 success:       1
31816 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
31817         
31818 # check single-6 success:       1
31819 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
31820         
31821 # check single-7 success:       1
31822 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
31823 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
31824 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
31825 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
31826 f_charbig = '#NULL#';
31827 INSERT INTO t1
31828 SET f_int1 = NULL , f_int2 = -@max_row,
31829 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
31830 f_charbig = '#NULL#';
31831 # check null success:    1
31832         
31833 # check null-1 success:         1
31834 UPDATE t1 SET f_int1 = -@max_row
31835 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31836 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31837         
31838 # check null-2 success:         1
31839 UPDATE t1 SET f_int1 = NULL
31840 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31841 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31842         
31843 # check null-3 success:         1
31844 DELETE FROM t1
31845 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31846 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31847         
31848 # check null-4 success:         1
31849 DELETE FROM t1
31850 WHERE f_int1 = 0 AND f_int2 = 0
31851 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
31852 AND f_charbig = '#NULL#';
31853 SET AUTOCOMMIT= 0;
31854 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31855 SELECT f_int1, f_int1, '', '', 'was inserted'
31856 FROM t0_template source_tab
31857 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31858         
31859 # check transactions-1 success:         1
31860 COMMIT WORK;
31861         
31862 # check transactions-2 success:         1
31863 ROLLBACK WORK;
31864         
31865 # check transactions-3 success:         1
31866 DELETE FROM t1 WHERE f_charbig = 'was inserted';
31867 COMMIT WORK;
31868 ROLLBACK WORK;
31869         
31870 # check transactions-4 success:         1
31871 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31872 SELECT f_int1, f_int1, '', '', 'was inserted'
31873 FROM t0_template source_tab
31874 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31875         
31876 # check transactions-5 success:         1
31877 ROLLBACK WORK;
31878 Warnings:
31879 Warning 1196    Some non-transactional changed tables couldn't be rolled back
31880         
31881 # check transactions-6 success:         1
31882 # INFO: Storage engine used for t1 seems to be not transactional.
31883 COMMIT;
31884         
31885 # check transactions-7 success:         1
31886 DELETE FROM t1 WHERE f_charbig = 'was inserted';
31887 COMMIT WORK;
31888 SET @@session.sql_mode = 'traditional';
31889 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31890 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31891 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31892 '', '', 'was inserted' FROM t0_template
31893 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31894 ERROR 22012: Division by 0
31895 COMMIT;
31896         
31897 # check transactions-8 success:         1
31898 # INFO: Storage engine used for t1 seems to be unable to revert
31899 #       changes made by the failing statement.
31900 SET @@session.sql_mode = '';
31901 SET AUTOCOMMIT= 1;
31902 DELETE FROM t1 WHERE f_charbig = 'was inserted';
31903 COMMIT WORK;
31904 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31905         
31906 # check special-1 success:      1
31907 UPDATE t1 SET f_charbig = '';
31908         
31909 # check special-2 success:      1
31910 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31911 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31912 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31913 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31914 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31915 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31916 'just inserted' FROM t0_template
31917 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31918 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31919 BEGIN
31920 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31921 f_charbig = 'updated by trigger'
31922       WHERE f_int1 = new.f_int1;
31923 END|
31924 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31925 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31926 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31927         
31928 # check trigger-1 success:      1
31929 DROP TRIGGER trg_1;
31930 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31931 f_int2 = CAST(f_char1 AS SIGNED INT),
31932 f_charbig = 'just inserted'
31933    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31934 DELETE FROM t0_aux
31935 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31936 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31937 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31938 'just inserted' FROM t0_template
31939 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31940 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31941 BEGIN
31942 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31943 f_charbig = 'updated by trigger'
31944       WHERE f_int1 = new.f_int1;
31945 END|
31946 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31947 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31948 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31949         
31950 # check trigger-2 success:      1
31951 DROP TRIGGER trg_1;
31952 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31953 f_int2 = CAST(f_char1 AS SIGNED INT),
31954 f_charbig = 'just inserted'
31955    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31956 DELETE FROM t0_aux
31957 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31958 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31959 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31960 'just inserted' FROM t0_template
31961 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31962 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31963 BEGIN
31964 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31965 f_charbig = 'updated by trigger'
31966       WHERE f_int1 = new.f_int1;
31967 END|
31968 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
31969 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31970         
31971 # check trigger-3 success:      1
31972 DROP TRIGGER trg_1;
31973 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31974 f_int2 = CAST(f_char1 AS SIGNED INT),
31975 f_charbig = 'just inserted'
31976    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31977 DELETE FROM t0_aux
31978 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31979 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31980 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31981 'just inserted' FROM t0_template
31982 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31983 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31984 BEGIN
31985 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31986 f_charbig = 'updated by trigger'
31987       WHERE f_int1 = - old.f_int1;
31988 END|
31989 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
31990 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31991         
31992 # check trigger-4 success:      1
31993 DROP TRIGGER trg_1;
31994 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31995 f_int2 = CAST(f_char1 AS SIGNED INT),
31996 f_charbig = 'just inserted'
31997    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31998 DELETE FROM t0_aux
31999 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32000 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32001 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32002 'just inserted' FROM t0_template
32003 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32004 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32005 BEGIN
32006 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32007 f_charbig = 'updated by trigger'
32008       WHERE f_int1 = new.f_int1;
32009 END|
32010 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
32011 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32012         
32013 # check trigger-5 success:      1
32014 DROP TRIGGER trg_1;
32015 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32016 f_int2 = CAST(f_char1 AS SIGNED INT),
32017 f_charbig = 'just inserted'
32018    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32019 DELETE FROM t0_aux
32020 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32021 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32022 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32023 'just inserted' FROM t0_template
32024 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32025 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32026 BEGIN
32027 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32028 f_charbig = 'updated by trigger'
32029       WHERE f_int1 = - old.f_int1;
32030 END|
32031 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
32032 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32033         
32034 # check trigger-6 success:      1
32035 DROP TRIGGER trg_1;
32036 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32037 f_int2 = CAST(f_char1 AS SIGNED INT),
32038 f_charbig = 'just inserted'
32039    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32040 DELETE FROM t0_aux
32041 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32042 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32043 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32044 'just inserted' FROM t0_template
32045 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32046 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
32047 BEGIN
32048 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32049 f_charbig = 'updated by trigger'
32050       WHERE f_int1 = - old.f_int1;
32051 END|
32052 DELETE FROM t0_aux
32053 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32054         
32055 # check trigger-7 success:      1
32056 DROP TRIGGER trg_1;
32057 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32058 f_int2 = CAST(f_char1 AS SIGNED INT),
32059 f_charbig = 'just inserted'
32060    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32061 DELETE FROM t0_aux
32062 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32063 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32064 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32065 'just inserted' FROM t0_template
32066 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32067 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
32068 BEGIN
32069 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32070 f_charbig = 'updated by trigger'
32071       WHERE f_int1 = - old.f_int1;
32072 END|
32073 DELETE FROM t0_aux
32074 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32075         
32076 # check trigger-8 success:      1
32077 DROP TRIGGER trg_1;
32078 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32079 f_int2 = CAST(f_char1 AS SIGNED INT),
32080 f_charbig = 'just inserted'
32081    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32082 DELETE FROM t0_aux
32083 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32084 DELETE FROM t1
32085 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32086 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32087 BEGIN
32088 SET new.f_int1 = old.f_int1 + @max_row,
32089 new.f_int2 = old.f_int2 - @max_row,
32090 new.f_charbig = '####updated per update trigger####';
32091 END|
32092 UPDATE t1
32093 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32094 f_charbig = '####updated per update statement itself####';
32095         
32096 # check trigger-9 success:      1
32097 DROP TRIGGER trg_2;
32098 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32099 f_int2 = CAST(f_char1 AS SIGNED INT),
32100 f_charbig = CONCAT('===',f_char1,'===');
32101 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32102 BEGIN
32103 SET new.f_int1 = new.f_int1 + @max_row,
32104 new.f_int2 = new.f_int2 - @max_row,
32105 new.f_charbig = '####updated per update trigger####';
32106 END|
32107 UPDATE t1
32108 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32109 f_charbig = '####updated per update statement itself####';
32110         
32111 # check trigger-10 success:     1
32112 DROP TRIGGER trg_2;
32113 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32114 f_int2 = CAST(f_char1 AS SIGNED INT),
32115 f_charbig = CONCAT('===',f_char1,'===');
32116 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32117 BEGIN
32118 SET new.f_int1 = @my_max1 + @counter,
32119 new.f_int2 = @my_min2 - @counter,
32120 new.f_charbig = '####updated per insert trigger####';
32121 SET @counter = @counter + 1;
32122 END|
32123 SET @counter = 1;
32124 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32125 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32126 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32127 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32128 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32129 ORDER BY f_int1;
32130 DROP TRIGGER trg_3;
32131         
32132 # check trigger-11 success:     1
32133 DELETE FROM t1
32134 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32135 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32136 AND f_charbig = '####updated per insert trigger####';
32137 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32138 BEGIN
32139 SET new.f_int1 = @my_max1 + @counter,
32140 new.f_int2 = @my_min2 - @counter,
32141 new.f_charbig = '####updated per insert trigger####';
32142 SET @counter = @counter + 1;
32143 END|
32144 SET @counter = 1;
32145 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32146 INSERT INTO t1 (f_char1, f_char2, f_charbig)
32147 SELECT CAST(f_int1 AS CHAR),
32148 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32149 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32150 ORDER BY f_int1;
32151 DROP TRIGGER trg_3;
32152         
32153 # check trigger-12 success:     1
32154 DELETE FROM t1
32155 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32156 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32157 AND f_charbig = '####updated per insert trigger####';
32158 ANALYZE  TABLE t1;
32159 Table   Op      Msg_type        Msg_text
32160 test.t1 analyze status  OK
32161 CHECK    TABLE t1 EXTENDED;
32162 Table   Op      Msg_type        Msg_text
32163 test.t1 check   status  OK
32164 CHECKSUM TABLE t1 EXTENDED;
32165 Table   Checksum
32166 test.t1 <some_value>
32167 OPTIMIZE TABLE t1;
32168 Table   Op      Msg_type        Msg_text
32169 test.t1 optimize        status  OK
32170 # check layout success:    1
32171 REPAIR   TABLE t1 EXTENDED;
32172 Table   Op      Msg_type        Msg_text
32173 test.t1 repair  status  OK
32174 # check layout success:    1
32175 TRUNCATE t1;
32176         
32177 # check TRUNCATE success:       1
32178 # check layout success:    1
32179 # End usability test (inc/partition_check.inc)
32180 DROP TABLE t1;
32181 CREATE TABLE t1 (
32182 f_int1 INTEGER,
32183 f_int2 INTEGER,
32184 f_char1 CHAR(20),
32185 f_char2 CHAR(20),
32186 f_charbig VARCHAR(1000)
32189 PARTITION BY LIST(MOD(f_int1,4))
32190 (PARTITION part_3 VALUES IN (-3),
32191 PARTITION part_2 VALUES IN (-2),
32192 PARTITION part_1 VALUES IN (-1),
32193 PARTITION part_N VALUES IN (NULL),
32194 PARTITION part0 VALUES IN (0),
32195 PARTITION part1 VALUES IN (1),
32196 PARTITION part2 VALUES IN (2),
32197 PARTITION part3 VALUES IN (3));
32198 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32199 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32200 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
32201 ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
32202 Table   Op      Msg_type        Msg_text
32203 test.t1 check   error   Error in list of partitions to test.t1
32204 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32205 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32206 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
32207 # Start usability test (inc/partition_check.inc)
32208 create_command
32209 SHOW CREATE TABLE t1;
32210 Table   Create Table
32211 t1      CREATE TABLE `t1` (
32212   `f_int1` int(11) DEFAULT NULL,
32213   `f_int2` int(11) DEFAULT NULL,
32214   `f_char1` char(20) DEFAULT NULL,
32215   `f_char2` char(20) DEFAULT NULL,
32216   `f_charbig` varchar(1000) DEFAULT NULL
32217 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
32218 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
32219 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
32220  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
32221  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
32222  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
32223  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
32224  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
32225  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
32226  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
32228 unified filelist
32229 t1#P#part0.MYD
32230 t1#P#part0.MYI
32231 t1#P#part1.MYD
32232 t1#P#part1.MYI
32233 t1#P#part2.MYD
32234 t1#P#part2.MYI
32235 t1#P#part3.MYD
32236 t1#P#part3.MYI
32237 t1#P#part_1.MYD
32238 t1#P#part_1.MYI
32239 t1#P#part_2.MYD
32240 t1#P#part_2.MYI
32241 t1#P#part_3.MYD
32242 t1#P#part_3.MYI
32243 t1#P#part_N.MYD
32244 t1#P#part_N.MYI
32245 t1.frm
32246 t1.par
32248 # check prerequisites-1 success:    1
32249 # check COUNT(*) success:    1
32250 # check MIN/MAX(f_int1) success:    1
32251 # check MIN/MAX(f_int2) success:    1
32252 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32253 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32254 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
32255 WHERE f_int1 IN (2,3);
32256 # check prerequisites-3 success:    1
32257 DELETE FROM t1 WHERE f_charbig = 'delete me';
32258 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
32259 # check read via f_int1 success: 1
32260 # check read via f_int2 success: 1
32261         
32262 # check multiple-1 success:     1
32263 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
32264         
32265 # check multiple-2 success:     1
32266 INSERT INTO t1 SELECT * FROM t0_template
32267 WHERE MOD(f_int1,3) = 0;
32268         
32269 # check multiple-3 success:     1
32270 UPDATE t1 SET f_int1 = f_int1 + @max_row
32271 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
32272 AND @max_row_div2 + @max_row_div4;
32273         
32274 # check multiple-4 success:     1
32275 DELETE FROM t1
32276 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
32277 AND @max_row_div2 + @max_row_div4 + @max_row;
32278         
32279 # check multiple-5 success:     1
32280 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
32281 INSERT INTO t1
32282 SET f_int1 = @cur_value , f_int2 = @cur_value,
32283 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32284 f_charbig = '#SINGLE#';
32285         
32286 # check single-1 success:       1
32287 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
32288 INSERT INTO t1
32289 SET f_int1 = @cur_value , f_int2 = @cur_value,
32290 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32291 f_charbig = '#SINGLE#';
32292         
32293 # check single-2 success:       1
32294 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
32295 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
32296 UPDATE t1 SET f_int1 = @cur_value2
32297 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
32298         
32299 # check single-3 success:       1
32300 SET @cur_value1= -1;
32301 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
32302 UPDATE t1 SET f_int1 = @cur_value1
32303 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
32304         
32305 # check single-4 success:       1
32306 SELECT MAX(f_int1) INTO @cur_value FROM t1;
32307 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
32308         
32309 # check single-5 success:       1
32310 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
32311         
32312 # check single-6 success:       1
32313 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
32314         
32315 # check single-7 success:       1
32316 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
32317 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
32318 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
32319 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
32320 f_charbig = '#NULL#';
32321 INSERT INTO t1
32322 SET f_int1 = NULL , f_int2 = -@max_row,
32323 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
32324 f_charbig = '#NULL#';
32325 # check null success:    1
32326         
32327 # check null-1 success:         1
32328 UPDATE t1 SET f_int1 = -@max_row
32329 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32330 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32331         
32332 # check null-2 success:         1
32333 UPDATE t1 SET f_int1 = NULL
32334 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32335 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32336         
32337 # check null-3 success:         1
32338 DELETE FROM t1
32339 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32340 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32341         
32342 # check null-4 success:         1
32343 DELETE FROM t1
32344 WHERE f_int1 = 0 AND f_int2 = 0
32345 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
32346 AND f_charbig = '#NULL#';
32347 SET AUTOCOMMIT= 0;
32348 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32349 SELECT f_int1, f_int1, '', '', 'was inserted'
32350 FROM t0_template source_tab
32351 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32352         
32353 # check transactions-1 success:         1
32354 COMMIT WORK;
32355         
32356 # check transactions-2 success:         1
32357 ROLLBACK WORK;
32358         
32359 # check transactions-3 success:         1
32360 DELETE FROM t1 WHERE f_charbig = 'was inserted';
32361 COMMIT WORK;
32362 ROLLBACK WORK;
32363         
32364 # check transactions-4 success:         1
32365 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32366 SELECT f_int1, f_int1, '', '', 'was inserted'
32367 FROM t0_template source_tab
32368 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32369         
32370 # check transactions-5 success:         1
32371 ROLLBACK WORK;
32372 Warnings:
32373 Warning 1196    Some non-transactional changed tables couldn't be rolled back
32374         
32375 # check transactions-6 success:         1
32376 # INFO: Storage engine used for t1 seems to be not transactional.
32377 COMMIT;
32378         
32379 # check transactions-7 success:         1
32380 DELETE FROM t1 WHERE f_charbig = 'was inserted';
32381 COMMIT WORK;
32382 SET @@session.sql_mode = 'traditional';
32383 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
32384 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32385 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
32386 '', '', 'was inserted' FROM t0_template
32387 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32388 ERROR 22012: Division by 0
32389 COMMIT;
32390         
32391 # check transactions-8 success:         1
32392 # INFO: Storage engine used for t1 seems to be unable to revert
32393 #       changes made by the failing statement.
32394 SET @@session.sql_mode = '';
32395 SET AUTOCOMMIT= 1;
32396 DELETE FROM t1 WHERE f_charbig = 'was inserted';
32397 COMMIT WORK;
32398 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
32399         
32400 # check special-1 success:      1
32401 UPDATE t1 SET f_charbig = '';
32402         
32403 # check special-2 success:      1
32404 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
32405 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32406 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
32407 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32408 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32409 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32410 'just inserted' FROM t0_template
32411 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32412 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
32413 BEGIN
32414 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32415 f_charbig = 'updated by trigger'
32416       WHERE f_int1 = new.f_int1;
32417 END|
32418 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32419 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32420 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32421         
32422 # check trigger-1 success:      1
32423 DROP TRIGGER trg_1;
32424 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32425 f_int2 = CAST(f_char1 AS SIGNED INT),
32426 f_charbig = 'just inserted'
32427    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32428 DELETE FROM t0_aux
32429 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32430 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32431 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32432 'just inserted' FROM t0_template
32433 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32434 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
32435 BEGIN
32436 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32437 f_charbig = 'updated by trigger'
32438       WHERE f_int1 = new.f_int1;
32439 END|
32440 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32441 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32442 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32443         
32444 # check trigger-2 success:      1
32445 DROP TRIGGER trg_1;
32446 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32447 f_int2 = CAST(f_char1 AS SIGNED INT),
32448 f_charbig = 'just inserted'
32449    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32450 DELETE FROM t0_aux
32451 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32452 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32453 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32454 'just inserted' FROM t0_template
32455 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32456 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32457 BEGIN
32458 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32459 f_charbig = 'updated by trigger'
32460       WHERE f_int1 = new.f_int1;
32461 END|
32462 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
32463 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32464         
32465 # check trigger-3 success:      1
32466 DROP TRIGGER trg_1;
32467 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32468 f_int2 = CAST(f_char1 AS SIGNED INT),
32469 f_charbig = 'just inserted'
32470    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32471 DELETE FROM t0_aux
32472 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32473 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32474 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32475 'just inserted' FROM t0_template
32476 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32477 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32478 BEGIN
32479 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32480 f_charbig = 'updated by trigger'
32481       WHERE f_int1 = - old.f_int1;
32482 END|
32483 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
32484 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32485         
32486 # check trigger-4 success:      1
32487 DROP TRIGGER trg_1;
32488 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32489 f_int2 = CAST(f_char1 AS SIGNED INT),
32490 f_charbig = 'just inserted'
32491    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32492 DELETE FROM t0_aux
32493 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32494 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32495 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32496 'just inserted' FROM t0_template
32497 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32498 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32499 BEGIN
32500 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32501 f_charbig = 'updated by trigger'
32502       WHERE f_int1 = new.f_int1;
32503 END|
32504 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
32505 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32506         
32507 # check trigger-5 success:      1
32508 DROP TRIGGER trg_1;
32509 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32510 f_int2 = CAST(f_char1 AS SIGNED INT),
32511 f_charbig = 'just inserted'
32512    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32513 DELETE FROM t0_aux
32514 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32515 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32516 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32517 'just inserted' FROM t0_template
32518 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32519 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32520 BEGIN
32521 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32522 f_charbig = 'updated by trigger'
32523       WHERE f_int1 = - old.f_int1;
32524 END|
32525 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
32526 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32527         
32528 # check trigger-6 success:      1
32529 DROP TRIGGER trg_1;
32530 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32531 f_int2 = CAST(f_char1 AS SIGNED INT),
32532 f_charbig = 'just inserted'
32533    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32534 DELETE FROM t0_aux
32535 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32536 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32537 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32538 'just inserted' FROM t0_template
32539 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32540 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
32541 BEGIN
32542 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32543 f_charbig = 'updated by trigger'
32544       WHERE f_int1 = - old.f_int1;
32545 END|
32546 DELETE FROM t0_aux
32547 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32548         
32549 # check trigger-7 success:      1
32550 DROP TRIGGER trg_1;
32551 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32552 f_int2 = CAST(f_char1 AS SIGNED INT),
32553 f_charbig = 'just inserted'
32554    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32555 DELETE FROM t0_aux
32556 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32557 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32558 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32559 'just inserted' FROM t0_template
32560 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32561 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
32562 BEGIN
32563 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32564 f_charbig = 'updated by trigger'
32565       WHERE f_int1 = - old.f_int1;
32566 END|
32567 DELETE FROM t0_aux
32568 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32569         
32570 # check trigger-8 success:      1
32571 DROP TRIGGER trg_1;
32572 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32573 f_int2 = CAST(f_char1 AS SIGNED INT),
32574 f_charbig = 'just inserted'
32575    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32576 DELETE FROM t0_aux
32577 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32578 DELETE FROM t1
32579 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32580 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32581 BEGIN
32582 SET new.f_int1 = old.f_int1 + @max_row,
32583 new.f_int2 = old.f_int2 - @max_row,
32584 new.f_charbig = '####updated per update trigger####';
32585 END|
32586 UPDATE t1
32587 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32588 f_charbig = '####updated per update statement itself####';
32589         
32590 # check trigger-9 success:      1
32591 DROP TRIGGER trg_2;
32592 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32593 f_int2 = CAST(f_char1 AS SIGNED INT),
32594 f_charbig = CONCAT('===',f_char1,'===');
32595 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32596 BEGIN
32597 SET new.f_int1 = new.f_int1 + @max_row,
32598 new.f_int2 = new.f_int2 - @max_row,
32599 new.f_charbig = '####updated per update trigger####';
32600 END|
32601 UPDATE t1
32602 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32603 f_charbig = '####updated per update statement itself####';
32604         
32605 # check trigger-10 success:     1
32606 DROP TRIGGER trg_2;
32607 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32608 f_int2 = CAST(f_char1 AS SIGNED INT),
32609 f_charbig = CONCAT('===',f_char1,'===');
32610 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32611 BEGIN
32612 SET new.f_int1 = @my_max1 + @counter,
32613 new.f_int2 = @my_min2 - @counter,
32614 new.f_charbig = '####updated per insert trigger####';
32615 SET @counter = @counter + 1;
32616 END|
32617 SET @counter = 1;
32618 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32619 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32620 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32621 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32622 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32623 ORDER BY f_int1;
32624 DROP TRIGGER trg_3;
32625         
32626 # check trigger-11 success:     1
32627 DELETE FROM t1
32628 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32629 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32630 AND f_charbig = '####updated per insert trigger####';
32631 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32632 BEGIN
32633 SET new.f_int1 = @my_max1 + @counter,
32634 new.f_int2 = @my_min2 - @counter,
32635 new.f_charbig = '####updated per insert trigger####';
32636 SET @counter = @counter + 1;
32637 END|
32638 SET @counter = 1;
32639 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32640 INSERT INTO t1 (f_char1, f_char2, f_charbig)
32641 SELECT CAST(f_int1 AS CHAR),
32642 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32643 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32644 ORDER BY f_int1;
32645 DROP TRIGGER trg_3;
32646         
32647 # check trigger-12 success:     1
32648 DELETE FROM t1
32649 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32650 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32651 AND f_charbig = '####updated per insert trigger####';
32652 ANALYZE  TABLE t1;
32653 Table   Op      Msg_type        Msg_text
32654 test.t1 analyze status  OK
32655 CHECK    TABLE t1 EXTENDED;
32656 Table   Op      Msg_type        Msg_text
32657 test.t1 check   status  OK
32658 CHECKSUM TABLE t1 EXTENDED;
32659 Table   Checksum
32660 test.t1 <some_value>
32661 OPTIMIZE TABLE t1;
32662 Table   Op      Msg_type        Msg_text
32663 test.t1 optimize        status  OK
32664 # check layout success:    1
32665 REPAIR   TABLE t1 EXTENDED;
32666 Table   Op      Msg_type        Msg_text
32667 test.t1 repair  status  OK
32668 # check layout success:    1
32669 TRUNCATE t1;
32670         
32671 # check TRUNCATE success:       1
32672 # check layout success:    1
32673 # End usability test (inc/partition_check.inc)
32674 DROP TABLE t1;
32675 CREATE TABLE t1 (
32676 f_int1 INTEGER,
32677 f_int2 INTEGER,
32678 f_char1 CHAR(20),
32679 f_char2 CHAR(20),
32680 f_charbig VARCHAR(1000)
32683 PARTITION BY RANGE(f_int1)
32684 (PARTITION parta VALUES LESS THAN (0),
32685 PARTITION part_1 VALUES LESS THAN (5),
32686 PARTITION part_2 VALUES LESS THAN (10),
32687 PARTITION part_3 VALUES LESS THAN (10 + 5),
32688 PARTITION part_4 VALUES LESS THAN (20),
32689 PARTITION part_5 VALUES LESS THAN (2147483646));
32690 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32691 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32692 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
32693 ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
32694 Table   Op      Msg_type        Msg_text
32695 test.t1 check   error   Error in list of partitions to test.t1
32696 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32697 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32698 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
32699 # Start usability test (inc/partition_check.inc)
32700 create_command
32701 SHOW CREATE TABLE t1;
32702 Table   Create Table
32703 t1      CREATE TABLE `t1` (
32704   `f_int1` int(11) DEFAULT NULL,
32705   `f_int2` int(11) DEFAULT NULL,
32706   `f_char1` char(20) DEFAULT NULL,
32707   `f_char2` char(20) DEFAULT NULL,
32708   `f_charbig` varchar(1000) DEFAULT NULL
32709 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
32710 /*!50100 PARTITION BY RANGE (f_int1)
32711 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
32712  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
32713  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
32714  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
32715  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
32716  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
32718 unified filelist
32719 t1#P#part_1.MYD
32720 t1#P#part_1.MYI
32721 t1#P#part_2.MYD
32722 t1#P#part_2.MYI
32723 t1#P#part_3.MYD
32724 t1#P#part_3.MYI
32725 t1#P#part_4.MYD
32726 t1#P#part_4.MYI
32727 t1#P#part_5.MYD
32728 t1#P#part_5.MYI
32729 t1#P#parta.MYD
32730 t1#P#parta.MYI
32731 t1.frm
32732 t1.par
32734 # check prerequisites-1 success:    1
32735 # check COUNT(*) success:    1
32736 # check MIN/MAX(f_int1) success:    1
32737 # check MIN/MAX(f_int2) success:    1
32738 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32739 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32740 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
32741 WHERE f_int1 IN (2,3);
32742 # check prerequisites-3 success:    1
32743 DELETE FROM t1 WHERE f_charbig = 'delete me';
32744 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
32745 # check read via f_int1 success: 1
32746 # check read via f_int2 success: 1
32747         
32748 # check multiple-1 success:     1
32749 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
32750         
32751 # check multiple-2 success:     1
32752 INSERT INTO t1 SELECT * FROM t0_template
32753 WHERE MOD(f_int1,3) = 0;
32754         
32755 # check multiple-3 success:     1
32756 UPDATE t1 SET f_int1 = f_int1 + @max_row
32757 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
32758 AND @max_row_div2 + @max_row_div4;
32759         
32760 # check multiple-4 success:     1
32761 DELETE FROM t1
32762 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
32763 AND @max_row_div2 + @max_row_div4 + @max_row;
32764         
32765 # check multiple-5 success:     1
32766 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
32767 INSERT INTO t1
32768 SET f_int1 = @cur_value , f_int2 = @cur_value,
32769 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32770 f_charbig = '#SINGLE#';
32771         
32772 # check single-1 success:       1
32773 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
32774 INSERT INTO t1
32775 SET f_int1 = @cur_value , f_int2 = @cur_value,
32776 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32777 f_charbig = '#SINGLE#';
32778         
32779 # check single-2 success:       1
32780 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
32781 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
32782 UPDATE t1 SET f_int1 = @cur_value2
32783 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
32784         
32785 # check single-3 success:       1
32786 SET @cur_value1= -1;
32787 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
32788 UPDATE t1 SET f_int1 = @cur_value1
32789 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
32790         
32791 # check single-4 success:       1
32792 SELECT MAX(f_int1) INTO @cur_value FROM t1;
32793 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
32794         
32795 # check single-5 success:       1
32796 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
32797         
32798 # check single-6 success:       1
32799 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
32800 ERROR HY000: Table has no partition for value 2147483647
32801 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
32802 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
32803 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
32804 f_charbig = '#NULL#';
32805 INSERT INTO t1
32806 SET f_int1 = NULL , f_int2 = -@max_row,
32807 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
32808 f_charbig = '#NULL#';
32809 # check null success:    1
32810         
32811 # check null-1 success:         1
32812 UPDATE t1 SET f_int1 = -@max_row
32813 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32814 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32815         
32816 # check null-2 success:         1
32817 UPDATE t1 SET f_int1 = NULL
32818 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32819 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32820         
32821 # check null-3 success:         1
32822 DELETE FROM t1
32823 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32824 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32825         
32826 # check null-4 success:         1
32827 DELETE FROM t1
32828 WHERE f_int1 = 0 AND f_int2 = 0
32829 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
32830 AND f_charbig = '#NULL#';
32831 SET AUTOCOMMIT= 0;
32832 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32833 SELECT f_int1, f_int1, '', '', 'was inserted'
32834 FROM t0_template source_tab
32835 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32836         
32837 # check transactions-1 success:         1
32838 COMMIT WORK;
32839         
32840 # check transactions-2 success:         1
32841 ROLLBACK WORK;
32842         
32843 # check transactions-3 success:         1
32844 DELETE FROM t1 WHERE f_charbig = 'was inserted';
32845 COMMIT WORK;
32846 ROLLBACK WORK;
32847         
32848 # check transactions-4 success:         1
32849 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32850 SELECT f_int1, f_int1, '', '', 'was inserted'
32851 FROM t0_template source_tab
32852 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32853         
32854 # check transactions-5 success:         1
32855 ROLLBACK WORK;
32856 Warnings:
32857 Warning 1196    Some non-transactional changed tables couldn't be rolled back
32858         
32859 # check transactions-6 success:         1
32860 # INFO: Storage engine used for t1 seems to be not transactional.
32861 COMMIT;
32862         
32863 # check transactions-7 success:         1
32864 DELETE FROM t1 WHERE f_charbig = 'was inserted';
32865 COMMIT WORK;
32866 SET @@session.sql_mode = 'traditional';
32867 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
32868 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32869 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
32870 '', '', 'was inserted' FROM t0_template
32871 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32872 ERROR 22012: Division by 0
32873 COMMIT;
32874         
32875 # check transactions-8 success:         1
32876 # INFO: Storage engine used for t1 seems to be unable to revert
32877 #       changes made by the failing statement.
32878 SET @@session.sql_mode = '';
32879 SET AUTOCOMMIT= 1;
32880 DELETE FROM t1 WHERE f_charbig = 'was inserted';
32881 COMMIT WORK;
32882 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
32883         
32884 # check special-1 success:      1
32885 UPDATE t1 SET f_charbig = '';
32886         
32887 # check special-2 success:      1
32888 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
32889 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32890 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
32891 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32892 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32893 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32894 'just inserted' FROM t0_template
32895 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32896 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
32897 BEGIN
32898 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32899 f_charbig = 'updated by trigger'
32900       WHERE f_int1 = new.f_int1;
32901 END|
32902 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32903 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32904 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32905         
32906 # check trigger-1 success:      1
32907 DROP TRIGGER trg_1;
32908 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32909 f_int2 = CAST(f_char1 AS SIGNED INT),
32910 f_charbig = 'just inserted'
32911    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32912 DELETE FROM t0_aux
32913 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32914 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32915 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32916 'just inserted' FROM t0_template
32917 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32918 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
32919 BEGIN
32920 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32921 f_charbig = 'updated by trigger'
32922       WHERE f_int1 = new.f_int1;
32923 END|
32924 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32925 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32926 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32927         
32928 # check trigger-2 success:      1
32929 DROP TRIGGER trg_1;
32930 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32931 f_int2 = CAST(f_char1 AS SIGNED INT),
32932 f_charbig = 'just inserted'
32933    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32934 DELETE FROM t0_aux
32935 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32936 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32937 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32938 'just inserted' FROM t0_template
32939 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32940 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32941 BEGIN
32942 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32943 f_charbig = 'updated by trigger'
32944       WHERE f_int1 = new.f_int1;
32945 END|
32946 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
32947 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32948         
32949 # check trigger-3 success:      1
32950 DROP TRIGGER trg_1;
32951 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32952 f_int2 = CAST(f_char1 AS SIGNED INT),
32953 f_charbig = 'just inserted'
32954    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32955 DELETE FROM t0_aux
32956 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32957 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32958 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32959 'just inserted' FROM t0_template
32960 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32961 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32962 BEGIN
32963 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32964 f_charbig = 'updated by trigger'
32965       WHERE f_int1 = - old.f_int1;
32966 END|
32967 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
32968 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32969         
32970 # check trigger-4 success:      1
32971 DROP TRIGGER trg_1;
32972 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32973 f_int2 = CAST(f_char1 AS SIGNED INT),
32974 f_charbig = 'just inserted'
32975    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32976 DELETE FROM t0_aux
32977 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32978 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32979 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32980 'just inserted' FROM t0_template
32981 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32982 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32983 BEGIN
32984 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32985 f_charbig = 'updated by trigger'
32986       WHERE f_int1 = new.f_int1;
32987 END|
32988 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
32989 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32990         
32991 # check trigger-5 success:      1
32992 DROP TRIGGER trg_1;
32993 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32994 f_int2 = CAST(f_char1 AS SIGNED INT),
32995 f_charbig = 'just inserted'
32996    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32997 DELETE FROM t0_aux
32998 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32999 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33000 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33001 'just inserted' FROM t0_template
33002 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33003 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33004 BEGIN
33005 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33006 f_charbig = 'updated by trigger'
33007       WHERE f_int1 = - old.f_int1;
33008 END|
33009 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
33010 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33011         
33012 # check trigger-6 success:      1
33013 DROP TRIGGER trg_1;
33014 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33015 f_int2 = CAST(f_char1 AS SIGNED INT),
33016 f_charbig = 'just inserted'
33017    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33018 DELETE FROM t0_aux
33019 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33020 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33021 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33022 'just inserted' FROM t0_template
33023 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33024 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
33025 BEGIN
33026 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33027 f_charbig = 'updated by trigger'
33028       WHERE f_int1 = - old.f_int1;
33029 END|
33030 DELETE FROM t0_aux
33031 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33032         
33033 # check trigger-7 success:      1
33034 DROP TRIGGER trg_1;
33035 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33036 f_int2 = CAST(f_char1 AS SIGNED INT),
33037 f_charbig = 'just inserted'
33038    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33039 DELETE FROM t0_aux
33040 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33041 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33042 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33043 'just inserted' FROM t0_template
33044 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33045 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
33046 BEGIN
33047 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33048 f_charbig = 'updated by trigger'
33049       WHERE f_int1 = - old.f_int1;
33050 END|
33051 DELETE FROM t0_aux
33052 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33053         
33054 # check trigger-8 success:      1
33055 DROP TRIGGER trg_1;
33056 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33057 f_int2 = CAST(f_char1 AS SIGNED INT),
33058 f_charbig = 'just inserted'
33059    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33060 DELETE FROM t0_aux
33061 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33062 DELETE FROM t1
33063 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33064 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33065 BEGIN
33066 SET new.f_int1 = old.f_int1 + @max_row,
33067 new.f_int2 = old.f_int2 - @max_row,
33068 new.f_charbig = '####updated per update trigger####';
33069 END|
33070 UPDATE t1
33071 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33072 f_charbig = '####updated per update statement itself####';
33073         
33074 # check trigger-9 success:      1
33075 DROP TRIGGER trg_2;
33076 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33077 f_int2 = CAST(f_char1 AS SIGNED INT),
33078 f_charbig = CONCAT('===',f_char1,'===');
33079 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33080 BEGIN
33081 SET new.f_int1 = new.f_int1 + @max_row,
33082 new.f_int2 = new.f_int2 - @max_row,
33083 new.f_charbig = '####updated per update trigger####';
33084 END|
33085 UPDATE t1
33086 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33087 f_charbig = '####updated per update statement itself####';
33088         
33089 # check trigger-10 success:     1
33090 DROP TRIGGER trg_2;
33091 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33092 f_int2 = CAST(f_char1 AS SIGNED INT),
33093 f_charbig = CONCAT('===',f_char1,'===');
33094 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33095 BEGIN
33096 SET new.f_int1 = @my_max1 + @counter,
33097 new.f_int2 = @my_min2 - @counter,
33098 new.f_charbig = '####updated per insert trigger####';
33099 SET @counter = @counter + 1;
33100 END|
33101 SET @counter = 1;
33102 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33103 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33104 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33105 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33106 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33107 ORDER BY f_int1;
33108 DROP TRIGGER trg_3;
33109         
33110 # check trigger-11 success:     1
33111 DELETE FROM t1
33112 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33113 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33114 AND f_charbig = '####updated per insert trigger####';
33115 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33116 BEGIN
33117 SET new.f_int1 = @my_max1 + @counter,
33118 new.f_int2 = @my_min2 - @counter,
33119 new.f_charbig = '####updated per insert trigger####';
33120 SET @counter = @counter + 1;
33121 END|
33122 SET @counter = 1;
33123 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33124 INSERT INTO t1 (f_char1, f_char2, f_charbig)
33125 SELECT CAST(f_int1 AS CHAR),
33126 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33127 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33128 ORDER BY f_int1;
33129 DROP TRIGGER trg_3;
33130         
33131 # check trigger-12 success:     1
33132 DELETE FROM t1
33133 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33134 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33135 AND f_charbig = '####updated per insert trigger####';
33136 ANALYZE  TABLE t1;
33137 Table   Op      Msg_type        Msg_text
33138 test.t1 analyze status  OK
33139 CHECK    TABLE t1 EXTENDED;
33140 Table   Op      Msg_type        Msg_text
33141 test.t1 check   status  OK
33142 CHECKSUM TABLE t1 EXTENDED;
33143 Table   Checksum
33144 test.t1 <some_value>
33145 OPTIMIZE TABLE t1;
33146 Table   Op      Msg_type        Msg_text
33147 test.t1 optimize        status  OK
33148 # check layout success:    1
33149 REPAIR   TABLE t1 EXTENDED;
33150 Table   Op      Msg_type        Msg_text
33151 test.t1 repair  status  OK
33152 # check layout success:    1
33153 TRUNCATE t1;
33154         
33155 # check TRUNCATE success:       1
33156 # check layout success:    1
33157 # End usability test (inc/partition_check.inc)
33158 DROP TABLE t1;
33159 CREATE TABLE t1 (
33160 f_int1 INTEGER,
33161 f_int2 INTEGER,
33162 f_char1 CHAR(20),
33163 f_char2 CHAR(20),
33164 f_charbig VARCHAR(1000)
33167 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
33168 (PARTITION part_1 VALUES LESS THAN (0),
33169 PARTITION part_2 VALUES LESS THAN (5),
33170 PARTITION part_3 VALUES LESS THAN (10),
33171 PARTITION part_4 VALUES LESS THAN (2147483646));
33172 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33173 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33174 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
33175 ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
33176 Table   Op      Msg_type        Msg_text
33177 test.t1 check   error   Error in list of partitions to test.t1
33178 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33179 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33180 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
33181 # Start usability test (inc/partition_check.inc)
33182 create_command
33183 SHOW CREATE TABLE t1;
33184 Table   Create Table
33185 t1      CREATE TABLE `t1` (
33186   `f_int1` int(11) DEFAULT NULL,
33187   `f_int2` int(11) DEFAULT NULL,
33188   `f_char1` char(20) DEFAULT NULL,
33189   `f_char2` char(20) DEFAULT NULL,
33190   `f_charbig` varchar(1000) DEFAULT NULL
33191 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
33192 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
33193 SUBPARTITION BY HASH (f_int1)
33194 SUBPARTITIONS 2
33195 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
33196  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
33197  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
33198  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
33200 unified filelist
33201 t1#P#part_1#SP#part_1sp0.MYD
33202 t1#P#part_1#SP#part_1sp0.MYI
33203 t1#P#part_1#SP#part_1sp1.MYD
33204 t1#P#part_1#SP#part_1sp1.MYI
33205 t1#P#part_2#SP#part_2sp0.MYD
33206 t1#P#part_2#SP#part_2sp0.MYI
33207 t1#P#part_2#SP#part_2sp1.MYD
33208 t1#P#part_2#SP#part_2sp1.MYI
33209 t1#P#part_3#SP#part_3sp0.MYD
33210 t1#P#part_3#SP#part_3sp0.MYI
33211 t1#P#part_3#SP#part_3sp1.MYD
33212 t1#P#part_3#SP#part_3sp1.MYI
33213 t1#P#part_4#SP#part_4sp0.MYD
33214 t1#P#part_4#SP#part_4sp0.MYI
33215 t1#P#part_4#SP#part_4sp1.MYD
33216 t1#P#part_4#SP#part_4sp1.MYI
33217 t1.frm
33218 t1.par
33220 # check prerequisites-1 success:    1
33221 # check COUNT(*) success:    1
33222 # check MIN/MAX(f_int1) success:    1
33223 # check MIN/MAX(f_int2) success:    1
33224 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33225 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33226 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
33227 WHERE f_int1 IN (2,3);
33228 # check prerequisites-3 success:    1
33229 DELETE FROM t1 WHERE f_charbig = 'delete me';
33230 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
33231 # check read via f_int1 success: 1
33232 # check read via f_int2 success: 1
33233         
33234 # check multiple-1 success:     1
33235 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
33236         
33237 # check multiple-2 success:     1
33238 INSERT INTO t1 SELECT * FROM t0_template
33239 WHERE MOD(f_int1,3) = 0;
33240         
33241 # check multiple-3 success:     1
33242 UPDATE t1 SET f_int1 = f_int1 + @max_row
33243 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
33244 AND @max_row_div2 + @max_row_div4;
33245         
33246 # check multiple-4 success:     1
33247 DELETE FROM t1
33248 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
33249 AND @max_row_div2 + @max_row_div4 + @max_row;
33250         
33251 # check multiple-5 success:     1
33252 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
33253 INSERT INTO t1
33254 SET f_int1 = @cur_value , f_int2 = @cur_value,
33255 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33256 f_charbig = '#SINGLE#';
33257         
33258 # check single-1 success:       1
33259 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
33260 INSERT INTO t1
33261 SET f_int1 = @cur_value , f_int2 = @cur_value,
33262 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33263 f_charbig = '#SINGLE#';
33264         
33265 # check single-2 success:       1
33266 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
33267 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
33268 UPDATE t1 SET f_int1 = @cur_value2
33269 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
33270         
33271 # check single-3 success:       1
33272 SET @cur_value1= -1;
33273 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
33274 UPDATE t1 SET f_int1 = @cur_value1
33275 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
33276         
33277 # check single-4 success:       1
33278 SELECT MAX(f_int1) INTO @cur_value FROM t1;
33279 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
33280         
33281 # check single-5 success:       1
33282 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
33283         
33284 # check single-6 success:       1
33285 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
33286         
33287 # check single-7 success:       1
33288 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
33289 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
33290 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
33291 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
33292 f_charbig = '#NULL#';
33293 INSERT INTO t1
33294 SET f_int1 = NULL , f_int2 = -@max_row,
33295 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
33296 f_charbig = '#NULL#';
33297 # check null success:    1
33298         
33299 # check null-1 success:         1
33300 UPDATE t1 SET f_int1 = -@max_row
33301 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33302 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33303         
33304 # check null-2 success:         1
33305 UPDATE t1 SET f_int1 = NULL
33306 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33307 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33308         
33309 # check null-3 success:         1
33310 DELETE FROM t1
33311 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33312 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33313         
33314 # check null-4 success:         1
33315 DELETE FROM t1
33316 WHERE f_int1 = 0 AND f_int2 = 0
33317 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
33318 AND f_charbig = '#NULL#';
33319 SET AUTOCOMMIT= 0;
33320 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33321 SELECT f_int1, f_int1, '', '', 'was inserted'
33322 FROM t0_template source_tab
33323 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33324         
33325 # check transactions-1 success:         1
33326 COMMIT WORK;
33327         
33328 # check transactions-2 success:         1
33329 ROLLBACK WORK;
33330         
33331 # check transactions-3 success:         1
33332 DELETE FROM t1 WHERE f_charbig = 'was inserted';
33333 COMMIT WORK;
33334 ROLLBACK WORK;
33335         
33336 # check transactions-4 success:         1
33337 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33338 SELECT f_int1, f_int1, '', '', 'was inserted'
33339 FROM t0_template source_tab
33340 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33341         
33342 # check transactions-5 success:         1
33343 ROLLBACK WORK;
33344 Warnings:
33345 Warning 1196    Some non-transactional changed tables couldn't be rolled back
33346         
33347 # check transactions-6 success:         1
33348 # INFO: Storage engine used for t1 seems to be not transactional.
33349 COMMIT;
33350         
33351 # check transactions-7 success:         1
33352 DELETE FROM t1 WHERE f_charbig = 'was inserted';
33353 COMMIT WORK;
33354 SET @@session.sql_mode = 'traditional';
33355 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
33356 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33357 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
33358 '', '', 'was inserted' FROM t0_template
33359 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33360 ERROR 22012: Division by 0
33361 COMMIT;
33362         
33363 # check transactions-8 success:         1
33364 # INFO: Storage engine used for t1 seems to be unable to revert
33365 #       changes made by the failing statement.
33366 SET @@session.sql_mode = '';
33367 SET AUTOCOMMIT= 1;
33368 DELETE FROM t1 WHERE f_charbig = 'was inserted';
33369 COMMIT WORK;
33370 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
33371         
33372 # check special-1 success:      1
33373 UPDATE t1 SET f_charbig = '';
33374         
33375 # check special-2 success:      1
33376 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
33377 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33378 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
33379 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33380 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33381 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33382 'just inserted' FROM t0_template
33383 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33384 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
33385 BEGIN
33386 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33387 f_charbig = 'updated by trigger'
33388       WHERE f_int1 = new.f_int1;
33389 END|
33390 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33391 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33392 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33393         
33394 # check trigger-1 success:      1
33395 DROP TRIGGER trg_1;
33396 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33397 f_int2 = CAST(f_char1 AS SIGNED INT),
33398 f_charbig = 'just inserted'
33399    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33400 DELETE FROM t0_aux
33401 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33402 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33403 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33404 'just inserted' FROM t0_template
33405 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33406 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
33407 BEGIN
33408 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33409 f_charbig = 'updated by trigger'
33410       WHERE f_int1 = new.f_int1;
33411 END|
33412 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33413 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33414 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33415         
33416 # check trigger-2 success:      1
33417 DROP TRIGGER trg_1;
33418 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33419 f_int2 = CAST(f_char1 AS SIGNED INT),
33420 f_charbig = 'just inserted'
33421    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33422 DELETE FROM t0_aux
33423 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33424 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33425 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33426 'just inserted' FROM t0_template
33427 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33428 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33429 BEGIN
33430 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33431 f_charbig = 'updated by trigger'
33432       WHERE f_int1 = new.f_int1;
33433 END|
33434 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
33435 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33436         
33437 # check trigger-3 success:      1
33438 DROP TRIGGER trg_1;
33439 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33440 f_int2 = CAST(f_char1 AS SIGNED INT),
33441 f_charbig = 'just inserted'
33442    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33443 DELETE FROM t0_aux
33444 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33445 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33446 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33447 'just inserted' FROM t0_template
33448 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33449 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33450 BEGIN
33451 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33452 f_charbig = 'updated by trigger'
33453       WHERE f_int1 = - old.f_int1;
33454 END|
33455 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
33456 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33457         
33458 # check trigger-4 success:      1
33459 DROP TRIGGER trg_1;
33460 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33461 f_int2 = CAST(f_char1 AS SIGNED INT),
33462 f_charbig = 'just inserted'
33463    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33464 DELETE FROM t0_aux
33465 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33466 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33467 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33468 'just inserted' FROM t0_template
33469 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33470 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33471 BEGIN
33472 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33473 f_charbig = 'updated by trigger'
33474       WHERE f_int1 = new.f_int1;
33475 END|
33476 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
33477 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33478         
33479 # check trigger-5 success:      1
33480 DROP TRIGGER trg_1;
33481 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33482 f_int2 = CAST(f_char1 AS SIGNED INT),
33483 f_charbig = 'just inserted'
33484    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33485 DELETE FROM t0_aux
33486 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33487 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33488 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33489 'just inserted' FROM t0_template
33490 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33491 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33492 BEGIN
33493 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33494 f_charbig = 'updated by trigger'
33495       WHERE f_int1 = - old.f_int1;
33496 END|
33497 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
33498 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33499         
33500 # check trigger-6 success:      1
33501 DROP TRIGGER trg_1;
33502 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33503 f_int2 = CAST(f_char1 AS SIGNED INT),
33504 f_charbig = 'just inserted'
33505    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33506 DELETE FROM t0_aux
33507 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33508 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33509 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33510 'just inserted' FROM t0_template
33511 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33512 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
33513 BEGIN
33514 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33515 f_charbig = 'updated by trigger'
33516       WHERE f_int1 = - old.f_int1;
33517 END|
33518 DELETE FROM t0_aux
33519 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33520         
33521 # check trigger-7 success:      1
33522 DROP TRIGGER trg_1;
33523 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33524 f_int2 = CAST(f_char1 AS SIGNED INT),
33525 f_charbig = 'just inserted'
33526    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33527 DELETE FROM t0_aux
33528 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33529 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33530 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33531 'just inserted' FROM t0_template
33532 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33533 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
33534 BEGIN
33535 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33536 f_charbig = 'updated by trigger'
33537       WHERE f_int1 = - old.f_int1;
33538 END|
33539 DELETE FROM t0_aux
33540 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33541         
33542 # check trigger-8 success:      1
33543 DROP TRIGGER trg_1;
33544 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33545 f_int2 = CAST(f_char1 AS SIGNED INT),
33546 f_charbig = 'just inserted'
33547    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33548 DELETE FROM t0_aux
33549 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33550 DELETE FROM t1
33551 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33552 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33553 BEGIN
33554 SET new.f_int1 = old.f_int1 + @max_row,
33555 new.f_int2 = old.f_int2 - @max_row,
33556 new.f_charbig = '####updated per update trigger####';
33557 END|
33558 UPDATE t1
33559 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33560 f_charbig = '####updated per update statement itself####';
33561         
33562 # check trigger-9 success:      1
33563 DROP TRIGGER trg_2;
33564 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33565 f_int2 = CAST(f_char1 AS SIGNED INT),
33566 f_charbig = CONCAT('===',f_char1,'===');
33567 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33568 BEGIN
33569 SET new.f_int1 = new.f_int1 + @max_row,
33570 new.f_int2 = new.f_int2 - @max_row,
33571 new.f_charbig = '####updated per update trigger####';
33572 END|
33573 UPDATE t1
33574 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33575 f_charbig = '####updated per update statement itself####';
33576         
33577 # check trigger-10 success:     1
33578 DROP TRIGGER trg_2;
33579 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33580 f_int2 = CAST(f_char1 AS SIGNED INT),
33581 f_charbig = CONCAT('===',f_char1,'===');
33582 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33583 BEGIN
33584 SET new.f_int1 = @my_max1 + @counter,
33585 new.f_int2 = @my_min2 - @counter,
33586 new.f_charbig = '####updated per insert trigger####';
33587 SET @counter = @counter + 1;
33588 END|
33589 SET @counter = 1;
33590 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33591 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33592 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33593 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33594 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33595 ORDER BY f_int1;
33596 DROP TRIGGER trg_3;
33597         
33598 # check trigger-11 success:     1
33599 DELETE FROM t1
33600 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33601 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33602 AND f_charbig = '####updated per insert trigger####';
33603 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33604 BEGIN
33605 SET new.f_int1 = @my_max1 + @counter,
33606 new.f_int2 = @my_min2 - @counter,
33607 new.f_charbig = '####updated per insert trigger####';
33608 SET @counter = @counter + 1;
33609 END|
33610 SET @counter = 1;
33611 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33612 INSERT INTO t1 (f_char1, f_char2, f_charbig)
33613 SELECT CAST(f_int1 AS CHAR),
33614 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33615 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33616 ORDER BY f_int1;
33617 DROP TRIGGER trg_3;
33618         
33619 # check trigger-12 success:     1
33620 DELETE FROM t1
33621 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33622 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33623 AND f_charbig = '####updated per insert trigger####';
33624 ANALYZE  TABLE t1;
33625 Table   Op      Msg_type        Msg_text
33626 test.t1 analyze status  OK
33627 CHECK    TABLE t1 EXTENDED;
33628 Table   Op      Msg_type        Msg_text
33629 test.t1 check   status  OK
33630 CHECKSUM TABLE t1 EXTENDED;
33631 Table   Checksum
33632 test.t1 <some_value>
33633 OPTIMIZE TABLE t1;
33634 Table   Op      Msg_type        Msg_text
33635 test.t1 optimize        status  OK
33636 # check layout success:    1
33637 REPAIR   TABLE t1 EXTENDED;
33638 Table   Op      Msg_type        Msg_text
33639 test.t1 repair  status  OK
33640 # check layout success:    1
33641 TRUNCATE t1;
33642         
33643 # check TRUNCATE success:       1
33644 # check layout success:    1
33645 # End usability test (inc/partition_check.inc)
33646 DROP TABLE t1;
33647 CREATE TABLE t1 (
33648 f_int1 INTEGER,
33649 f_int2 INTEGER,
33650 f_char1 CHAR(20),
33651 f_char2 CHAR(20),
33652 f_charbig VARCHAR(1000)
33655 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
33656 (PARTITION part_1 VALUES LESS THAN (0)
33657 (SUBPARTITION subpart11, SUBPARTITION subpart12),
33658 PARTITION part_2 VALUES LESS THAN (5)
33659 (SUBPARTITION subpart21, SUBPARTITION subpart22),
33660 PARTITION part_3 VALUES LESS THAN (10)
33661 (SUBPARTITION subpart31, SUBPARTITION subpart32),
33662 PARTITION part_4 VALUES LESS THAN (2147483646)
33663 (SUBPARTITION subpart41, SUBPARTITION subpart42));
33664 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33665 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33666 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
33667 ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
33668 Table   Op      Msg_type        Msg_text
33669 test.t1 check   error   Error in list of partitions to test.t1
33670 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33671 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33672 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
33673 # Start usability test (inc/partition_check.inc)
33674 create_command
33675 SHOW CREATE TABLE t1;
33676 Table   Create Table
33677 t1      CREATE TABLE `t1` (
33678   `f_int1` int(11) DEFAULT NULL,
33679   `f_int2` int(11) DEFAULT NULL,
33680   `f_char1` char(20) DEFAULT NULL,
33681   `f_char2` char(20) DEFAULT NULL,
33682   `f_charbig` varchar(1000) DEFAULT NULL
33683 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
33684 /*!50100 PARTITION BY RANGE (f_int1)
33685 SUBPARTITION BY KEY (f_int1)
33686 (PARTITION part_1 VALUES LESS THAN (0)
33687  (SUBPARTITION subpart11 ENGINE = MyISAM,
33688   SUBPARTITION subpart12 ENGINE = MyISAM),
33689  PARTITION part_2 VALUES LESS THAN (5)
33690  (SUBPARTITION subpart21 ENGINE = MyISAM,
33691   SUBPARTITION subpart22 ENGINE = MyISAM),
33692  PARTITION part_3 VALUES LESS THAN (10)
33693  (SUBPARTITION subpart31 ENGINE = MyISAM,
33694   SUBPARTITION subpart32 ENGINE = MyISAM),
33695  PARTITION part_4 VALUES LESS THAN (2147483646)
33696  (SUBPARTITION subpart41 ENGINE = MyISAM,
33697   SUBPARTITION subpart42 ENGINE = MyISAM)) */
33699 unified filelist
33700 t1#P#part_1#SP#subpart11.MYD
33701 t1#P#part_1#SP#subpart11.MYI
33702 t1#P#part_1#SP#subpart12.MYD
33703 t1#P#part_1#SP#subpart12.MYI
33704 t1#P#part_2#SP#subpart21.MYD
33705 t1#P#part_2#SP#subpart21.MYI
33706 t1#P#part_2#SP#subpart22.MYD
33707 t1#P#part_2#SP#subpart22.MYI
33708 t1#P#part_3#SP#subpart31.MYD
33709 t1#P#part_3#SP#subpart31.MYI
33710 t1#P#part_3#SP#subpart32.MYD
33711 t1#P#part_3#SP#subpart32.MYI
33712 t1#P#part_4#SP#subpart41.MYD
33713 t1#P#part_4#SP#subpart41.MYI
33714 t1#P#part_4#SP#subpart42.MYD
33715 t1#P#part_4#SP#subpart42.MYI
33716 t1.frm
33717 t1.par
33719 # check prerequisites-1 success:    1
33720 # check COUNT(*) success:    1
33721 # check MIN/MAX(f_int1) success:    1
33722 # check MIN/MAX(f_int2) success:    1
33723 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33724 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33725 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
33726 WHERE f_int1 IN (2,3);
33727 # check prerequisites-3 success:    1
33728 DELETE FROM t1 WHERE f_charbig = 'delete me';
33729 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
33730 # check read via f_int1 success: 1
33731 # check read via f_int2 success: 1
33732         
33733 # check multiple-1 success:     1
33734 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
33735         
33736 # check multiple-2 success:     1
33737 INSERT INTO t1 SELECT * FROM t0_template
33738 WHERE MOD(f_int1,3) = 0;
33739         
33740 # check multiple-3 success:     1
33741 UPDATE t1 SET f_int1 = f_int1 + @max_row
33742 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
33743 AND @max_row_div2 + @max_row_div4;
33744         
33745 # check multiple-4 success:     1
33746 DELETE FROM t1
33747 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
33748 AND @max_row_div2 + @max_row_div4 + @max_row;
33749         
33750 # check multiple-5 success:     1
33751 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
33752 INSERT INTO t1
33753 SET f_int1 = @cur_value , f_int2 = @cur_value,
33754 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33755 f_charbig = '#SINGLE#';
33756         
33757 # check single-1 success:       1
33758 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
33759 INSERT INTO t1
33760 SET f_int1 = @cur_value , f_int2 = @cur_value,
33761 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33762 f_charbig = '#SINGLE#';
33763         
33764 # check single-2 success:       1
33765 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
33766 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
33767 UPDATE t1 SET f_int1 = @cur_value2
33768 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
33769         
33770 # check single-3 success:       1
33771 SET @cur_value1= -1;
33772 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
33773 UPDATE t1 SET f_int1 = @cur_value1
33774 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
33775         
33776 # check single-4 success:       1
33777 SELECT MAX(f_int1) INTO @cur_value FROM t1;
33778 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
33779         
33780 # check single-5 success:       1
33781 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
33782         
33783 # check single-6 success:       1
33784 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
33785 ERROR HY000: Table has no partition for value 2147483647
33786 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
33787 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
33788 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
33789 f_charbig = '#NULL#';
33790 INSERT INTO t1
33791 SET f_int1 = NULL , f_int2 = -@max_row,
33792 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
33793 f_charbig = '#NULL#';
33794 # check null success:    1
33795         
33796 # check null-1 success:         1
33797 UPDATE t1 SET f_int1 = -@max_row
33798 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33799 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33800         
33801 # check null-2 success:         1
33802 UPDATE t1 SET f_int1 = NULL
33803 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33804 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33805         
33806 # check null-3 success:         1
33807 DELETE FROM t1
33808 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33809 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33810         
33811 # check null-4 success:         1
33812 DELETE FROM t1
33813 WHERE f_int1 = 0 AND f_int2 = 0
33814 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
33815 AND f_charbig = '#NULL#';
33816 SET AUTOCOMMIT= 0;
33817 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33818 SELECT f_int1, f_int1, '', '', 'was inserted'
33819 FROM t0_template source_tab
33820 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33821         
33822 # check transactions-1 success:         1
33823 COMMIT WORK;
33824         
33825 # check transactions-2 success:         1
33826 ROLLBACK WORK;
33827         
33828 # check transactions-3 success:         1
33829 DELETE FROM t1 WHERE f_charbig = 'was inserted';
33830 COMMIT WORK;
33831 ROLLBACK WORK;
33832         
33833 # check transactions-4 success:         1
33834 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33835 SELECT f_int1, f_int1, '', '', 'was inserted'
33836 FROM t0_template source_tab
33837 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33838         
33839 # check transactions-5 success:         1
33840 ROLLBACK WORK;
33841 Warnings:
33842 Warning 1196    Some non-transactional changed tables couldn't be rolled back
33843         
33844 # check transactions-6 success:         1
33845 # INFO: Storage engine used for t1 seems to be not transactional.
33846 COMMIT;
33847         
33848 # check transactions-7 success:         1
33849 DELETE FROM t1 WHERE f_charbig = 'was inserted';
33850 COMMIT WORK;
33851 SET @@session.sql_mode = 'traditional';
33852 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
33853 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33854 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
33855 '', '', 'was inserted' FROM t0_template
33856 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33857 ERROR 22012: Division by 0
33858 COMMIT;
33859         
33860 # check transactions-8 success:         1
33861 # INFO: Storage engine used for t1 seems to be unable to revert
33862 #       changes made by the failing statement.
33863 SET @@session.sql_mode = '';
33864 SET AUTOCOMMIT= 1;
33865 DELETE FROM t1 WHERE f_charbig = 'was inserted';
33866 COMMIT WORK;
33867 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
33868         
33869 # check special-1 success:      1
33870 UPDATE t1 SET f_charbig = '';
33871         
33872 # check special-2 success:      1
33873 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
33874 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33875 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
33876 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33877 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33878 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33879 'just inserted' FROM t0_template
33880 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33881 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
33882 BEGIN
33883 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33884 f_charbig = 'updated by trigger'
33885       WHERE f_int1 = new.f_int1;
33886 END|
33887 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33888 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33889 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33890         
33891 # check trigger-1 success:      1
33892 DROP TRIGGER trg_1;
33893 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33894 f_int2 = CAST(f_char1 AS SIGNED INT),
33895 f_charbig = 'just inserted'
33896    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33897 DELETE FROM t0_aux
33898 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33899 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33900 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33901 'just inserted' FROM t0_template
33902 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33903 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
33904 BEGIN
33905 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33906 f_charbig = 'updated by trigger'
33907       WHERE f_int1 = new.f_int1;
33908 END|
33909 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33910 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33911 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33912         
33913 # check trigger-2 success:      1
33914 DROP TRIGGER trg_1;
33915 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33916 f_int2 = CAST(f_char1 AS SIGNED INT),
33917 f_charbig = 'just inserted'
33918    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33919 DELETE FROM t0_aux
33920 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33921 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33922 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33923 'just inserted' FROM t0_template
33924 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33925 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33926 BEGIN
33927 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33928 f_charbig = 'updated by trigger'
33929       WHERE f_int1 = new.f_int1;
33930 END|
33931 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
33932 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33933         
33934 # check trigger-3 success:      1
33935 DROP TRIGGER trg_1;
33936 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33937 f_int2 = CAST(f_char1 AS SIGNED INT),
33938 f_charbig = 'just inserted'
33939    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33940 DELETE FROM t0_aux
33941 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33942 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33943 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33944 'just inserted' FROM t0_template
33945 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33946 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33947 BEGIN
33948 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33949 f_charbig = 'updated by trigger'
33950       WHERE f_int1 = - old.f_int1;
33951 END|
33952 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
33953 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33954         
33955 # check trigger-4 success:      1
33956 DROP TRIGGER trg_1;
33957 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33958 f_int2 = CAST(f_char1 AS SIGNED INT),
33959 f_charbig = 'just inserted'
33960    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33961 DELETE FROM t0_aux
33962 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33963 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33964 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33965 'just inserted' FROM t0_template
33966 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33967 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33968 BEGIN
33969 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33970 f_charbig = 'updated by trigger'
33971       WHERE f_int1 = new.f_int1;
33972 END|
33973 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
33974 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33975         
33976 # check trigger-5 success:      1
33977 DROP TRIGGER trg_1;
33978 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33979 f_int2 = CAST(f_char1 AS SIGNED INT),
33980 f_charbig = 'just inserted'
33981    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33982 DELETE FROM t0_aux
33983 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33984 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33985 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33986 'just inserted' FROM t0_template
33987 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33988 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33989 BEGIN
33990 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33991 f_charbig = 'updated by trigger'
33992       WHERE f_int1 = - old.f_int1;
33993 END|
33994 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
33995 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33996         
33997 # check trigger-6 success:      1
33998 DROP TRIGGER trg_1;
33999 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34000 f_int2 = CAST(f_char1 AS SIGNED INT),
34001 f_charbig = 'just inserted'
34002    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34003 DELETE FROM t0_aux
34004 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34005 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34006 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34007 'just inserted' FROM t0_template
34008 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34009 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
34010 BEGIN
34011 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34012 f_charbig = 'updated by trigger'
34013       WHERE f_int1 = - old.f_int1;
34014 END|
34015 DELETE FROM t0_aux
34016 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34017         
34018 # check trigger-7 success:      1
34019 DROP TRIGGER trg_1;
34020 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34021 f_int2 = CAST(f_char1 AS SIGNED INT),
34022 f_charbig = 'just inserted'
34023    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34024 DELETE FROM t0_aux
34025 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34026 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34027 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34028 'just inserted' FROM t0_template
34029 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34030 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
34031 BEGIN
34032 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34033 f_charbig = 'updated by trigger'
34034       WHERE f_int1 = - old.f_int1;
34035 END|
34036 DELETE FROM t0_aux
34037 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34038         
34039 # check trigger-8 success:      1
34040 DROP TRIGGER trg_1;
34041 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34042 f_int2 = CAST(f_char1 AS SIGNED INT),
34043 f_charbig = 'just inserted'
34044    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34045 DELETE FROM t0_aux
34046 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34047 DELETE FROM t1
34048 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34049 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34050 BEGIN
34051 SET new.f_int1 = old.f_int1 + @max_row,
34052 new.f_int2 = old.f_int2 - @max_row,
34053 new.f_charbig = '####updated per update trigger####';
34054 END|
34055 UPDATE t1
34056 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34057 f_charbig = '####updated per update statement itself####';
34058         
34059 # check trigger-9 success:      1
34060 DROP TRIGGER trg_2;
34061 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34062 f_int2 = CAST(f_char1 AS SIGNED INT),
34063 f_charbig = CONCAT('===',f_char1,'===');
34064 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34065 BEGIN
34066 SET new.f_int1 = new.f_int1 + @max_row,
34067 new.f_int2 = new.f_int2 - @max_row,
34068 new.f_charbig = '####updated per update trigger####';
34069 END|
34070 UPDATE t1
34071 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34072 f_charbig = '####updated per update statement itself####';
34073         
34074 # check trigger-10 success:     1
34075 DROP TRIGGER trg_2;
34076 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34077 f_int2 = CAST(f_char1 AS SIGNED INT),
34078 f_charbig = CONCAT('===',f_char1,'===');
34079 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34080 BEGIN
34081 SET new.f_int1 = @my_max1 + @counter,
34082 new.f_int2 = @my_min2 - @counter,
34083 new.f_charbig = '####updated per insert trigger####';
34084 SET @counter = @counter + 1;
34085 END|
34086 SET @counter = 1;
34087 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34088 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34089 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34090 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34091 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34092 ORDER BY f_int1;
34093 DROP TRIGGER trg_3;
34094         
34095 # check trigger-11 success:     1
34096 DELETE FROM t1
34097 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34098 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34099 AND f_charbig = '####updated per insert trigger####';
34100 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34101 BEGIN
34102 SET new.f_int1 = @my_max1 + @counter,
34103 new.f_int2 = @my_min2 - @counter,
34104 new.f_charbig = '####updated per insert trigger####';
34105 SET @counter = @counter + 1;
34106 END|
34107 SET @counter = 1;
34108 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34109 INSERT INTO t1 (f_char1, f_char2, f_charbig)
34110 SELECT CAST(f_int1 AS CHAR),
34111 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34112 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34113 ORDER BY f_int1;
34114 DROP TRIGGER trg_3;
34115         
34116 # check trigger-12 success:     1
34117 DELETE FROM t1
34118 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34119 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34120 AND f_charbig = '####updated per insert trigger####';
34121 ANALYZE  TABLE t1;
34122 Table   Op      Msg_type        Msg_text
34123 test.t1 analyze status  OK
34124 CHECK    TABLE t1 EXTENDED;
34125 Table   Op      Msg_type        Msg_text
34126 test.t1 check   status  OK
34127 CHECKSUM TABLE t1 EXTENDED;
34128 Table   Checksum
34129 test.t1 <some_value>
34130 OPTIMIZE TABLE t1;
34131 Table   Op      Msg_type        Msg_text
34132 test.t1 optimize        status  OK
34133 # check layout success:    1
34134 REPAIR   TABLE t1 EXTENDED;
34135 Table   Op      Msg_type        Msg_text
34136 test.t1 repair  status  OK
34137 # check layout success:    1
34138 TRUNCATE t1;
34139         
34140 # check TRUNCATE success:       1
34141 # check layout success:    1
34142 # End usability test (inc/partition_check.inc)
34143 DROP TABLE t1;
34144 CREATE TABLE t1 (
34145 f_int1 INTEGER,
34146 f_int2 INTEGER,
34147 f_char1 CHAR(20),
34148 f_char2 CHAR(20),
34149 f_charbig VARCHAR(1000)
34152 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
34153 (PARTITION part_1 VALUES IN (0)
34154 (SUBPARTITION sp11, SUBPARTITION sp12),
34155 PARTITION part_2 VALUES IN (1)
34156 (SUBPARTITION sp21, SUBPARTITION sp22),
34157 PARTITION part_3 VALUES IN (2)
34158 (SUBPARTITION sp31, SUBPARTITION sp32),
34159 PARTITION part_4 VALUES IN (NULL)
34160 (SUBPARTITION sp41, SUBPARTITION sp42));
34161 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34162 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34163 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
34164 ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
34165 Table   Op      Msg_type        Msg_text
34166 test.t1 check   error   Error in list of partitions to test.t1
34167 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34168 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34169 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
34170 # Start usability test (inc/partition_check.inc)
34171 create_command
34172 SHOW CREATE TABLE t1;
34173 Table   Create Table
34174 t1      CREATE TABLE `t1` (
34175   `f_int1` int(11) DEFAULT NULL,
34176   `f_int2` int(11) DEFAULT NULL,
34177   `f_char1` char(20) DEFAULT NULL,
34178   `f_char2` char(20) DEFAULT NULL,
34179   `f_charbig` varchar(1000) DEFAULT NULL
34180 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
34181 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
34182 SUBPARTITION BY HASH (f_int1 + 1)
34183 (PARTITION part_1 VALUES IN (0)
34184  (SUBPARTITION sp11 ENGINE = MyISAM,
34185   SUBPARTITION sp12 ENGINE = MyISAM),
34186  PARTITION part_2 VALUES IN (1)
34187  (SUBPARTITION sp21 ENGINE = MyISAM,
34188   SUBPARTITION sp22 ENGINE = MyISAM),
34189  PARTITION part_3 VALUES IN (2)
34190  (SUBPARTITION sp31 ENGINE = MyISAM,
34191   SUBPARTITION sp32 ENGINE = MyISAM),
34192  PARTITION part_4 VALUES IN (NULL)
34193  (SUBPARTITION sp41 ENGINE = MyISAM,
34194   SUBPARTITION sp42 ENGINE = MyISAM)) */
34196 unified filelist
34197 t1#P#part_1#SP#sp11.MYD
34198 t1#P#part_1#SP#sp11.MYI
34199 t1#P#part_1#SP#sp12.MYD
34200 t1#P#part_1#SP#sp12.MYI
34201 t1#P#part_2#SP#sp21.MYD
34202 t1#P#part_2#SP#sp21.MYI
34203 t1#P#part_2#SP#sp22.MYD
34204 t1#P#part_2#SP#sp22.MYI
34205 t1#P#part_3#SP#sp31.MYD
34206 t1#P#part_3#SP#sp31.MYI
34207 t1#P#part_3#SP#sp32.MYD
34208 t1#P#part_3#SP#sp32.MYI
34209 t1#P#part_4#SP#sp41.MYD
34210 t1#P#part_4#SP#sp41.MYI
34211 t1#P#part_4#SP#sp42.MYD
34212 t1#P#part_4#SP#sp42.MYI
34213 t1.frm
34214 t1.par
34216 # check prerequisites-1 success:    1
34217 # check COUNT(*) success:    1
34218 # check MIN/MAX(f_int1) success:    1
34219 # check MIN/MAX(f_int2) success:    1
34220 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34221 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34222 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
34223 WHERE f_int1 IN (2,3);
34224 # check prerequisites-3 success:    1
34225 DELETE FROM t1 WHERE f_charbig = 'delete me';
34226 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
34227 # check read via f_int1 success: 1
34228 # check read via f_int2 success: 1
34229         
34230 # check multiple-1 success:     1
34231 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
34232         
34233 # check multiple-2 success:     1
34234 INSERT INTO t1 SELECT * FROM t0_template
34235 WHERE MOD(f_int1,3) = 0;
34236         
34237 # check multiple-3 success:     1
34238 UPDATE t1 SET f_int1 = f_int1 + @max_row
34239 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
34240 AND @max_row_div2 + @max_row_div4;
34241         
34242 # check multiple-4 success:     1
34243 DELETE FROM t1
34244 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
34245 AND @max_row_div2 + @max_row_div4 + @max_row;
34246         
34247 # check multiple-5 success:     1
34248 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
34249 INSERT INTO t1
34250 SET f_int1 = @cur_value , f_int2 = @cur_value,
34251 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34252 f_charbig = '#SINGLE#';
34253         
34254 # check single-1 success:       1
34255 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
34256 INSERT INTO t1
34257 SET f_int1 = @cur_value , f_int2 = @cur_value,
34258 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34259 f_charbig = '#SINGLE#';
34260         
34261 # check single-2 success:       1
34262 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
34263 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
34264 UPDATE t1 SET f_int1 = @cur_value2
34265 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
34266         
34267 # check single-3 success:       1
34268 SET @cur_value1= -1;
34269 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
34270 UPDATE t1 SET f_int1 = @cur_value1
34271 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
34272         
34273 # check single-4 success:       1
34274 SELECT MAX(f_int1) INTO @cur_value FROM t1;
34275 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
34276         
34277 # check single-5 success:       1
34278 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
34279         
34280 # check single-6 success:       1
34281 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
34282         
34283 # check single-7 success:       1
34284 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
34285 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
34286 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
34287 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
34288 f_charbig = '#NULL#';
34289 INSERT INTO t1
34290 SET f_int1 = NULL , f_int2 = -@max_row,
34291 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
34292 f_charbig = '#NULL#';
34293 # check null success:    1
34294         
34295 # check null-1 success:         1
34296 UPDATE t1 SET f_int1 = -@max_row
34297 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34298 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34299         
34300 # check null-2 success:         1
34301 UPDATE t1 SET f_int1 = NULL
34302 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34303 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34304         
34305 # check null-3 success:         1
34306 DELETE FROM t1
34307 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34308 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34309         
34310 # check null-4 success:         1
34311 DELETE FROM t1
34312 WHERE f_int1 = 0 AND f_int2 = 0
34313 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
34314 AND f_charbig = '#NULL#';
34315 SET AUTOCOMMIT= 0;
34316 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34317 SELECT f_int1, f_int1, '', '', 'was inserted'
34318 FROM t0_template source_tab
34319 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34320         
34321 # check transactions-1 success:         1
34322 COMMIT WORK;
34323         
34324 # check transactions-2 success:         1
34325 ROLLBACK WORK;
34326         
34327 # check transactions-3 success:         1
34328 DELETE FROM t1 WHERE f_charbig = 'was inserted';
34329 COMMIT WORK;
34330 ROLLBACK WORK;
34331         
34332 # check transactions-4 success:         1
34333 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34334 SELECT f_int1, f_int1, '', '', 'was inserted'
34335 FROM t0_template source_tab
34336 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34337         
34338 # check transactions-5 success:         1
34339 ROLLBACK WORK;
34340 Warnings:
34341 Warning 1196    Some non-transactional changed tables couldn't be rolled back
34342         
34343 # check transactions-6 success:         1
34344 # INFO: Storage engine used for t1 seems to be not transactional.
34345 COMMIT;
34346         
34347 # check transactions-7 success:         1
34348 DELETE FROM t1 WHERE f_charbig = 'was inserted';
34349 COMMIT WORK;
34350 SET @@session.sql_mode = 'traditional';
34351 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
34352 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34353 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
34354 '', '', 'was inserted' FROM t0_template
34355 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34356 ERROR 22012: Division by 0
34357 COMMIT;
34358         
34359 # check transactions-8 success:         1
34360 # INFO: Storage engine used for t1 seems to be unable to revert
34361 #       changes made by the failing statement.
34362 SET @@session.sql_mode = '';
34363 SET AUTOCOMMIT= 1;
34364 DELETE FROM t1 WHERE f_charbig = 'was inserted';
34365 COMMIT WORK;
34366 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
34367         
34368 # check special-1 success:      1
34369 UPDATE t1 SET f_charbig = '';
34370         
34371 # check special-2 success:      1
34372 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
34373 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34374 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
34375 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34376 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34377 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34378 'just inserted' FROM t0_template
34379 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34380 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
34381 BEGIN
34382 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34383 f_charbig = 'updated by trigger'
34384       WHERE f_int1 = new.f_int1;
34385 END|
34386 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34387 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34388 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34389         
34390 # check trigger-1 success:      1
34391 DROP TRIGGER trg_1;
34392 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34393 f_int2 = CAST(f_char1 AS SIGNED INT),
34394 f_charbig = 'just inserted'
34395    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34396 DELETE FROM t0_aux
34397 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34398 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34399 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34400 'just inserted' FROM t0_template
34401 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34402 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
34403 BEGIN
34404 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34405 f_charbig = 'updated by trigger'
34406       WHERE f_int1 = new.f_int1;
34407 END|
34408 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34409 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34410 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34411         
34412 # check trigger-2 success:      1
34413 DROP TRIGGER trg_1;
34414 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34415 f_int2 = CAST(f_char1 AS SIGNED INT),
34416 f_charbig = 'just inserted'
34417    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34418 DELETE FROM t0_aux
34419 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34420 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34421 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34422 'just inserted' FROM t0_template
34423 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34424 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34425 BEGIN
34426 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34427 f_charbig = 'updated by trigger'
34428       WHERE f_int1 = new.f_int1;
34429 END|
34430 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
34431 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34432         
34433 # check trigger-3 success:      1
34434 DROP TRIGGER trg_1;
34435 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34436 f_int2 = CAST(f_char1 AS SIGNED INT),
34437 f_charbig = 'just inserted'
34438    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34439 DELETE FROM t0_aux
34440 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34441 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34442 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34443 'just inserted' FROM t0_template
34444 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34445 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34446 BEGIN
34447 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34448 f_charbig = 'updated by trigger'
34449       WHERE f_int1 = - old.f_int1;
34450 END|
34451 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
34452 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34453         
34454 # check trigger-4 success:      1
34455 DROP TRIGGER trg_1;
34456 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34457 f_int2 = CAST(f_char1 AS SIGNED INT),
34458 f_charbig = 'just inserted'
34459    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34460 DELETE FROM t0_aux
34461 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34462 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34463 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34464 'just inserted' FROM t0_template
34465 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34466 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34467 BEGIN
34468 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34469 f_charbig = 'updated by trigger'
34470       WHERE f_int1 = new.f_int1;
34471 END|
34472 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
34473 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34474         
34475 # check trigger-5 success:      1
34476 DROP TRIGGER trg_1;
34477 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34478 f_int2 = CAST(f_char1 AS SIGNED INT),
34479 f_charbig = 'just inserted'
34480    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34481 DELETE FROM t0_aux
34482 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34483 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34484 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34485 'just inserted' FROM t0_template
34486 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34487 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34488 BEGIN
34489 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34490 f_charbig = 'updated by trigger'
34491       WHERE f_int1 = - old.f_int1;
34492 END|
34493 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
34494 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34495         
34496 # check trigger-6 success:      1
34497 DROP TRIGGER trg_1;
34498 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34499 f_int2 = CAST(f_char1 AS SIGNED INT),
34500 f_charbig = 'just inserted'
34501    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34502 DELETE FROM t0_aux
34503 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34504 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34505 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34506 'just inserted' FROM t0_template
34507 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34508 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
34509 BEGIN
34510 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34511 f_charbig = 'updated by trigger'
34512       WHERE f_int1 = - old.f_int1;
34513 END|
34514 DELETE FROM t0_aux
34515 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34516         
34517 # check trigger-7 success:      1
34518 DROP TRIGGER trg_1;
34519 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34520 f_int2 = CAST(f_char1 AS SIGNED INT),
34521 f_charbig = 'just inserted'
34522    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34523 DELETE FROM t0_aux
34524 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34525 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34526 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34527 'just inserted' FROM t0_template
34528 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34529 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
34530 BEGIN
34531 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34532 f_charbig = 'updated by trigger'
34533       WHERE f_int1 = - old.f_int1;
34534 END|
34535 DELETE FROM t0_aux
34536 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34537         
34538 # check trigger-8 success:      1
34539 DROP TRIGGER trg_1;
34540 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34541 f_int2 = CAST(f_char1 AS SIGNED INT),
34542 f_charbig = 'just inserted'
34543    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34544 DELETE FROM t0_aux
34545 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34546 DELETE FROM t1
34547 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34548 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34549 BEGIN
34550 SET new.f_int1 = old.f_int1 + @max_row,
34551 new.f_int2 = old.f_int2 - @max_row,
34552 new.f_charbig = '####updated per update trigger####';
34553 END|
34554 UPDATE t1
34555 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34556 f_charbig = '####updated per update statement itself####';
34557         
34558 # check trigger-9 success:      1
34559 DROP TRIGGER trg_2;
34560 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34561 f_int2 = CAST(f_char1 AS SIGNED INT),
34562 f_charbig = CONCAT('===',f_char1,'===');
34563 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34564 BEGIN
34565 SET new.f_int1 = new.f_int1 + @max_row,
34566 new.f_int2 = new.f_int2 - @max_row,
34567 new.f_charbig = '####updated per update trigger####';
34568 END|
34569 UPDATE t1
34570 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34571 f_charbig = '####updated per update statement itself####';
34572         
34573 # check trigger-10 success:     1
34574 DROP TRIGGER trg_2;
34575 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34576 f_int2 = CAST(f_char1 AS SIGNED INT),
34577 f_charbig = CONCAT('===',f_char1,'===');
34578 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34579 BEGIN
34580 SET new.f_int1 = @my_max1 + @counter,
34581 new.f_int2 = @my_min2 - @counter,
34582 new.f_charbig = '####updated per insert trigger####';
34583 SET @counter = @counter + 1;
34584 END|
34585 SET @counter = 1;
34586 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34587 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34588 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34589 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34590 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34591 ORDER BY f_int1;
34592 DROP TRIGGER trg_3;
34593         
34594 # check trigger-11 success:     1
34595 DELETE FROM t1
34596 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34597 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34598 AND f_charbig = '####updated per insert trigger####';
34599 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34600 BEGIN
34601 SET new.f_int1 = @my_max1 + @counter,
34602 new.f_int2 = @my_min2 - @counter,
34603 new.f_charbig = '####updated per insert trigger####';
34604 SET @counter = @counter + 1;
34605 END|
34606 SET @counter = 1;
34607 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34608 INSERT INTO t1 (f_char1, f_char2, f_charbig)
34609 SELECT CAST(f_int1 AS CHAR),
34610 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34611 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34612 ORDER BY f_int1;
34613 DROP TRIGGER trg_3;
34614         
34615 # check trigger-12 success:     1
34616 DELETE FROM t1
34617 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34618 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34619 AND f_charbig = '####updated per insert trigger####';
34620 ANALYZE  TABLE t1;
34621 Table   Op      Msg_type        Msg_text
34622 test.t1 analyze status  OK
34623 CHECK    TABLE t1 EXTENDED;
34624 Table   Op      Msg_type        Msg_text
34625 test.t1 check   status  OK
34626 CHECKSUM TABLE t1 EXTENDED;
34627 Table   Checksum
34628 test.t1 <some_value>
34629 OPTIMIZE TABLE t1;
34630 Table   Op      Msg_type        Msg_text
34631 test.t1 optimize        status  OK
34632 # check layout success:    1
34633 REPAIR   TABLE t1 EXTENDED;
34634 Table   Op      Msg_type        Msg_text
34635 test.t1 repair  status  OK
34636 # check layout success:    1
34637 TRUNCATE t1;
34638         
34639 # check TRUNCATE success:       1
34640 # check layout success:    1
34641 # End usability test (inc/partition_check.inc)
34642 DROP TABLE t1;
34643 CREATE TABLE t1 (
34644 f_int1 INTEGER,
34645 f_int2 INTEGER,
34646 f_char1 CHAR(20),
34647 f_char2 CHAR(20),
34648 f_charbig VARCHAR(1000)
34651 PARTITION BY LIST(ABS(MOD(f_int1,2)))
34652 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
34653 (PARTITION part_1 VALUES IN (0),
34654  PARTITION part_2 VALUES IN (1),
34655  PARTITION part_3 VALUES IN (NULL));
34656 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34657 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34658 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
34659 ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
34660 Table   Op      Msg_type        Msg_text
34661 test.t1 check   error   Error in list of partitions to test.t1
34662 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34663 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34664 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
34665 # Start usability test (inc/partition_check.inc)
34666 create_command
34667 SHOW CREATE TABLE t1;
34668 Table   Create Table
34669 t1      CREATE TABLE `t1` (
34670   `f_int1` int(11) DEFAULT NULL,
34671   `f_int2` int(11) DEFAULT NULL,
34672   `f_char1` char(20) DEFAULT NULL,
34673   `f_char2` char(20) DEFAULT NULL,
34674   `f_charbig` varchar(1000) DEFAULT NULL
34675 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
34676 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
34677 SUBPARTITION BY KEY (f_int1)
34678 SUBPARTITIONS 3
34679 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
34680  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
34681  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
34683 unified filelist
34684 t1#P#part_1#SP#part_1sp0.MYD
34685 t1#P#part_1#SP#part_1sp0.MYI
34686 t1#P#part_1#SP#part_1sp1.MYD
34687 t1#P#part_1#SP#part_1sp1.MYI
34688 t1#P#part_1#SP#part_1sp2.MYD
34689 t1#P#part_1#SP#part_1sp2.MYI
34690 t1#P#part_2#SP#part_2sp0.MYD
34691 t1#P#part_2#SP#part_2sp0.MYI
34692 t1#P#part_2#SP#part_2sp1.MYD
34693 t1#P#part_2#SP#part_2sp1.MYI
34694 t1#P#part_2#SP#part_2sp2.MYD
34695 t1#P#part_2#SP#part_2sp2.MYI
34696 t1#P#part_3#SP#part_3sp0.MYD
34697 t1#P#part_3#SP#part_3sp0.MYI
34698 t1#P#part_3#SP#part_3sp1.MYD
34699 t1#P#part_3#SP#part_3sp1.MYI
34700 t1#P#part_3#SP#part_3sp2.MYD
34701 t1#P#part_3#SP#part_3sp2.MYI
34702 t1.frm
34703 t1.par
34705 # check prerequisites-1 success:    1
34706 # check COUNT(*) success:    1
34707 # check MIN/MAX(f_int1) success:    1
34708 # check MIN/MAX(f_int2) success:    1
34709 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34710 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34711 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
34712 WHERE f_int1 IN (2,3);
34713 # check prerequisites-3 success:    1
34714 DELETE FROM t1 WHERE f_charbig = 'delete me';
34715 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
34716 # check read via f_int1 success: 1
34717 # check read via f_int2 success: 1
34718         
34719 # check multiple-1 success:     1
34720 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
34721         
34722 # check multiple-2 success:     1
34723 INSERT INTO t1 SELECT * FROM t0_template
34724 WHERE MOD(f_int1,3) = 0;
34725         
34726 # check multiple-3 success:     1
34727 UPDATE t1 SET f_int1 = f_int1 + @max_row
34728 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
34729 AND @max_row_div2 + @max_row_div4;
34730         
34731 # check multiple-4 success:     1
34732 DELETE FROM t1
34733 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
34734 AND @max_row_div2 + @max_row_div4 + @max_row;
34735         
34736 # check multiple-5 success:     1
34737 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
34738 INSERT INTO t1
34739 SET f_int1 = @cur_value , f_int2 = @cur_value,
34740 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34741 f_charbig = '#SINGLE#';
34742         
34743 # check single-1 success:       1
34744 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
34745 INSERT INTO t1
34746 SET f_int1 = @cur_value , f_int2 = @cur_value,
34747 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34748 f_charbig = '#SINGLE#';
34749         
34750 # check single-2 success:       1
34751 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
34752 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
34753 UPDATE t1 SET f_int1 = @cur_value2
34754 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
34755         
34756 # check single-3 success:       1
34757 SET @cur_value1= -1;
34758 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
34759 UPDATE t1 SET f_int1 = @cur_value1
34760 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
34761         
34762 # check single-4 success:       1
34763 SELECT MAX(f_int1) INTO @cur_value FROM t1;
34764 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
34765         
34766 # check single-5 success:       1
34767 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
34768         
34769 # check single-6 success:       1
34770 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
34771         
34772 # check single-7 success:       1
34773 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
34774 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
34775 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
34776 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
34777 f_charbig = '#NULL#';
34778 INSERT INTO t1
34779 SET f_int1 = NULL , f_int2 = -@max_row,
34780 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
34781 f_charbig = '#NULL#';
34782 # check null success:    1
34783         
34784 # check null-1 success:         1
34785 UPDATE t1 SET f_int1 = -@max_row
34786 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34787 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34788         
34789 # check null-2 success:         1
34790 UPDATE t1 SET f_int1 = NULL
34791 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34792 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34793         
34794 # check null-3 success:         1
34795 DELETE FROM t1
34796 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34797 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34798         
34799 # check null-4 success:         1
34800 DELETE FROM t1
34801 WHERE f_int1 = 0 AND f_int2 = 0
34802 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
34803 AND f_charbig = '#NULL#';
34804 SET AUTOCOMMIT= 0;
34805 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34806 SELECT f_int1, f_int1, '', '', 'was inserted'
34807 FROM t0_template source_tab
34808 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34809         
34810 # check transactions-1 success:         1
34811 COMMIT WORK;
34812         
34813 # check transactions-2 success:         1
34814 ROLLBACK WORK;
34815         
34816 # check transactions-3 success:         1
34817 DELETE FROM t1 WHERE f_charbig = 'was inserted';
34818 COMMIT WORK;
34819 ROLLBACK WORK;
34820         
34821 # check transactions-4 success:         1
34822 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34823 SELECT f_int1, f_int1, '', '', 'was inserted'
34824 FROM t0_template source_tab
34825 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34826         
34827 # check transactions-5 success:         1
34828 ROLLBACK WORK;
34829 Warnings:
34830 Warning 1196    Some non-transactional changed tables couldn't be rolled back
34831         
34832 # check transactions-6 success:         1
34833 # INFO: Storage engine used for t1 seems to be not transactional.
34834 COMMIT;
34835         
34836 # check transactions-7 success:         1
34837 DELETE FROM t1 WHERE f_charbig = 'was inserted';
34838 COMMIT WORK;
34839 SET @@session.sql_mode = 'traditional';
34840 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
34841 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34842 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
34843 '', '', 'was inserted' FROM t0_template
34844 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34845 ERROR 22012: Division by 0
34846 COMMIT;
34847         
34848 # check transactions-8 success:         1
34849 # INFO: Storage engine used for t1 seems to be unable to revert
34850 #       changes made by the failing statement.
34851 SET @@session.sql_mode = '';
34852 SET AUTOCOMMIT= 1;
34853 DELETE FROM t1 WHERE f_charbig = 'was inserted';
34854 COMMIT WORK;
34855 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
34856         
34857 # check special-1 success:      1
34858 UPDATE t1 SET f_charbig = '';
34859         
34860 # check special-2 success:      1
34861 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
34862 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34863 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
34864 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34865 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34866 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34867 'just inserted' FROM t0_template
34868 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34869 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
34870 BEGIN
34871 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34872 f_charbig = 'updated by trigger'
34873       WHERE f_int1 = new.f_int1;
34874 END|
34875 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34876 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34877 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34878         
34879 # check trigger-1 success:      1
34880 DROP TRIGGER trg_1;
34881 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34882 f_int2 = CAST(f_char1 AS SIGNED INT),
34883 f_charbig = 'just inserted'
34884    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34885 DELETE FROM t0_aux
34886 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34887 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34888 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34889 'just inserted' FROM t0_template
34890 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34891 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
34892 BEGIN
34893 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34894 f_charbig = 'updated by trigger'
34895       WHERE f_int1 = new.f_int1;
34896 END|
34897 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34898 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34899 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34900         
34901 # check trigger-2 success:      1
34902 DROP TRIGGER trg_1;
34903 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34904 f_int2 = CAST(f_char1 AS SIGNED INT),
34905 f_charbig = 'just inserted'
34906    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34907 DELETE FROM t0_aux
34908 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34909 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34910 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34911 'just inserted' FROM t0_template
34912 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34913 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34914 BEGIN
34915 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34916 f_charbig = 'updated by trigger'
34917       WHERE f_int1 = new.f_int1;
34918 END|
34919 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
34920 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34921         
34922 # check trigger-3 success:      1
34923 DROP TRIGGER trg_1;
34924 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34925 f_int2 = CAST(f_char1 AS SIGNED INT),
34926 f_charbig = 'just inserted'
34927    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34928 DELETE FROM t0_aux
34929 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34930 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34931 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34932 'just inserted' FROM t0_template
34933 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34934 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34935 BEGIN
34936 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34937 f_charbig = 'updated by trigger'
34938       WHERE f_int1 = - old.f_int1;
34939 END|
34940 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
34941 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34942         
34943 # check trigger-4 success:      1
34944 DROP TRIGGER trg_1;
34945 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34946 f_int2 = CAST(f_char1 AS SIGNED INT),
34947 f_charbig = 'just inserted'
34948    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34949 DELETE FROM t0_aux
34950 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34951 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34952 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34953 'just inserted' FROM t0_template
34954 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34955 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34956 BEGIN
34957 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34958 f_charbig = 'updated by trigger'
34959       WHERE f_int1 = new.f_int1;
34960 END|
34961 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
34962 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34963         
34964 # check trigger-5 success:      1
34965 DROP TRIGGER trg_1;
34966 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34967 f_int2 = CAST(f_char1 AS SIGNED INT),
34968 f_charbig = 'just inserted'
34969    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34970 DELETE FROM t0_aux
34971 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34972 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34973 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34974 'just inserted' FROM t0_template
34975 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34976 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34977 BEGIN
34978 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34979 f_charbig = 'updated by trigger'
34980       WHERE f_int1 = - old.f_int1;
34981 END|
34982 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
34983 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34984         
34985 # check trigger-6 success:      1
34986 DROP TRIGGER trg_1;
34987 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34988 f_int2 = CAST(f_char1 AS SIGNED INT),
34989 f_charbig = 'just inserted'
34990    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34991 DELETE FROM t0_aux
34992 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34993 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34994 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34995 'just inserted' FROM t0_template
34996 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34997 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
34998 BEGIN
34999 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35000 f_charbig = 'updated by trigger'
35001       WHERE f_int1 = - old.f_int1;
35002 END|
35003 DELETE FROM t0_aux
35004 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35005         
35006 # check trigger-7 success:      1
35007 DROP TRIGGER trg_1;
35008 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35009 f_int2 = CAST(f_char1 AS SIGNED INT),
35010 f_charbig = 'just inserted'
35011    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35012 DELETE FROM t0_aux
35013 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35014 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35015 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35016 'just inserted' FROM t0_template
35017 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35018 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
35019 BEGIN
35020 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35021 f_charbig = 'updated by trigger'
35022       WHERE f_int1 = - old.f_int1;
35023 END|
35024 DELETE FROM t0_aux
35025 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35026         
35027 # check trigger-8 success:      1
35028 DROP TRIGGER trg_1;
35029 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35030 f_int2 = CAST(f_char1 AS SIGNED INT),
35031 f_charbig = 'just inserted'
35032    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35033 DELETE FROM t0_aux
35034 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35035 DELETE FROM t1
35036 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35037 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35038 BEGIN
35039 SET new.f_int1 = old.f_int1 + @max_row,
35040 new.f_int2 = old.f_int2 - @max_row,
35041 new.f_charbig = '####updated per update trigger####';
35042 END|
35043 UPDATE t1
35044 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35045 f_charbig = '####updated per update statement itself####';
35046         
35047 # check trigger-9 success:      1
35048 DROP TRIGGER trg_2;
35049 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35050 f_int2 = CAST(f_char1 AS SIGNED INT),
35051 f_charbig = CONCAT('===',f_char1,'===');
35052 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35053 BEGIN
35054 SET new.f_int1 = new.f_int1 + @max_row,
35055 new.f_int2 = new.f_int2 - @max_row,
35056 new.f_charbig = '####updated per update trigger####';
35057 END|
35058 UPDATE t1
35059 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35060 f_charbig = '####updated per update statement itself####';
35061         
35062 # check trigger-10 success:     1
35063 DROP TRIGGER trg_2;
35064 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35065 f_int2 = CAST(f_char1 AS SIGNED INT),
35066 f_charbig = CONCAT('===',f_char1,'===');
35067 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35068 BEGIN
35069 SET new.f_int1 = @my_max1 + @counter,
35070 new.f_int2 = @my_min2 - @counter,
35071 new.f_charbig = '####updated per insert trigger####';
35072 SET @counter = @counter + 1;
35073 END|
35074 SET @counter = 1;
35075 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35076 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35077 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35078 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35079 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35080 ORDER BY f_int1;
35081 DROP TRIGGER trg_3;
35082         
35083 # check trigger-11 success:     1
35084 DELETE FROM t1
35085 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35086 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35087 AND f_charbig = '####updated per insert trigger####';
35088 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35089 BEGIN
35090 SET new.f_int1 = @my_max1 + @counter,
35091 new.f_int2 = @my_min2 - @counter,
35092 new.f_charbig = '####updated per insert trigger####';
35093 SET @counter = @counter + 1;
35094 END|
35095 SET @counter = 1;
35096 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35097 INSERT INTO t1 (f_char1, f_char2, f_charbig)
35098 SELECT CAST(f_int1 AS CHAR),
35099 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35100 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35101 ORDER BY f_int1;
35102 DROP TRIGGER trg_3;
35103         
35104 # check trigger-12 success:     1
35105 DELETE FROM t1
35106 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35107 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35108 AND f_charbig = '####updated per insert trigger####';
35109 ANALYZE  TABLE t1;
35110 Table   Op      Msg_type        Msg_text
35111 test.t1 analyze status  OK
35112 CHECK    TABLE t1 EXTENDED;
35113 Table   Op      Msg_type        Msg_text
35114 test.t1 check   status  OK
35115 CHECKSUM TABLE t1 EXTENDED;
35116 Table   Checksum
35117 test.t1 <some_value>
35118 OPTIMIZE TABLE t1;
35119 Table   Op      Msg_type        Msg_text
35120 test.t1 optimize        status  OK
35121 # check layout success:    1
35122 REPAIR   TABLE t1 EXTENDED;
35123 Table   Op      Msg_type        Msg_text
35124 test.t1 repair  status  OK
35125 # check layout success:    1
35126 TRUNCATE t1;
35127         
35128 # check TRUNCATE success:       1
35129 # check layout success:    1
35130 # End usability test (inc/partition_check.inc)
35131 DROP TABLE t1;
35132 #  2.5 ALTER ... CHECK PARTITION ALL;
35133 DROP TABLE IF EXISTS t1;
35134 CREATE TABLE t1 (
35135 f_int1 INTEGER,
35136 f_int2 INTEGER,
35137 f_char1 CHAR(20),
35138 f_char2 CHAR(20),
35139 f_charbig VARCHAR(1000)
35142 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
35143 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35144 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35145 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
35146 ALTER TABLE t1 CHECK PARTITION ALL;
35147 Table   Op      Msg_type        Msg_text
35148 test.t1 check   status  OK
35149 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35150 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35151 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
35152 # Start usability test (inc/partition_check.inc)
35153 create_command
35154 SHOW CREATE TABLE t1;
35155 Table   Create Table
35156 t1      CREATE TABLE `t1` (
35157   `f_int1` int(11) DEFAULT NULL,
35158   `f_int2` int(11) DEFAULT NULL,
35159   `f_char1` char(20) DEFAULT NULL,
35160   `f_char2` char(20) DEFAULT NULL,
35161   `f_charbig` varchar(1000) DEFAULT NULL
35162 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
35163 /*!50100 PARTITION BY HASH (f_int1)
35164 (PARTITION part_1 ENGINE = MyISAM,
35165  PARTITION part_2 ENGINE = MyISAM) */
35167 unified filelist
35168 t1#P#part_1.MYD
35169 t1#P#part_1.MYI
35170 t1#P#part_2.MYD
35171 t1#P#part_2.MYI
35172 t1.frm
35173 t1.par
35175 # check prerequisites-1 success:    1
35176 # check COUNT(*) success:    1
35177 # check MIN/MAX(f_int1) success:    1
35178 # check MIN/MAX(f_int2) success:    1
35179 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35180 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35181 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
35182 WHERE f_int1 IN (2,3);
35183 # check prerequisites-3 success:    1
35184 DELETE FROM t1 WHERE f_charbig = 'delete me';
35185 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
35186 # check read via f_int1 success: 1
35187 # check read via f_int2 success: 1
35188         
35189 # check multiple-1 success:     1
35190 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
35191         
35192 # check multiple-2 success:     1
35193 INSERT INTO t1 SELECT * FROM t0_template
35194 WHERE MOD(f_int1,3) = 0;
35195         
35196 # check multiple-3 success:     1
35197 UPDATE t1 SET f_int1 = f_int1 + @max_row
35198 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
35199 AND @max_row_div2 + @max_row_div4;
35200         
35201 # check multiple-4 success:     1
35202 DELETE FROM t1
35203 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
35204 AND @max_row_div2 + @max_row_div4 + @max_row;
35205         
35206 # check multiple-5 success:     1
35207 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
35208 INSERT INTO t1
35209 SET f_int1 = @cur_value , f_int2 = @cur_value,
35210 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35211 f_charbig = '#SINGLE#';
35212         
35213 # check single-1 success:       1
35214 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
35215 INSERT INTO t1
35216 SET f_int1 = @cur_value , f_int2 = @cur_value,
35217 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35218 f_charbig = '#SINGLE#';
35219         
35220 # check single-2 success:       1
35221 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
35222 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
35223 UPDATE t1 SET f_int1 = @cur_value2
35224 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
35225         
35226 # check single-3 success:       1
35227 SET @cur_value1= -1;
35228 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
35229 UPDATE t1 SET f_int1 = @cur_value1
35230 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
35231         
35232 # check single-4 success:       1
35233 SELECT MAX(f_int1) INTO @cur_value FROM t1;
35234 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
35235         
35236 # check single-5 success:       1
35237 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
35238         
35239 # check single-6 success:       1
35240 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
35241         
35242 # check single-7 success:       1
35243 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
35244 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
35245 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
35246 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
35247 f_charbig = '#NULL#';
35248 INSERT INTO t1
35249 SET f_int1 = NULL , f_int2 = -@max_row,
35250 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
35251 f_charbig = '#NULL#';
35252 # check null success:    1
35253         
35254 # check null-1 success:         1
35255 UPDATE t1 SET f_int1 = -@max_row
35256 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35257 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35258         
35259 # check null-2 success:         1
35260 UPDATE t1 SET f_int1 = NULL
35261 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35262 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35263         
35264 # check null-3 success:         1
35265 DELETE FROM t1
35266 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35267 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35268         
35269 # check null-4 success:         1
35270 DELETE FROM t1
35271 WHERE f_int1 = 0 AND f_int2 = 0
35272 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
35273 AND f_charbig = '#NULL#';
35274 SET AUTOCOMMIT= 0;
35275 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35276 SELECT f_int1, f_int1, '', '', 'was inserted'
35277 FROM t0_template source_tab
35278 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35279         
35280 # check transactions-1 success:         1
35281 COMMIT WORK;
35282         
35283 # check transactions-2 success:         1
35284 ROLLBACK WORK;
35285         
35286 # check transactions-3 success:         1
35287 DELETE FROM t1 WHERE f_charbig = 'was inserted';
35288 COMMIT WORK;
35289 ROLLBACK WORK;
35290         
35291 # check transactions-4 success:         1
35292 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35293 SELECT f_int1, f_int1, '', '', 'was inserted'
35294 FROM t0_template source_tab
35295 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35296         
35297 # check transactions-5 success:         1
35298 ROLLBACK WORK;
35299 Warnings:
35300 Warning 1196    Some non-transactional changed tables couldn't be rolled back
35301         
35302 # check transactions-6 success:         1
35303 # INFO: Storage engine used for t1 seems to be not transactional.
35304 COMMIT;
35305         
35306 # check transactions-7 success:         1
35307 DELETE FROM t1 WHERE f_charbig = 'was inserted';
35308 COMMIT WORK;
35309 SET @@session.sql_mode = 'traditional';
35310 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
35311 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35312 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
35313 '', '', 'was inserted' FROM t0_template
35314 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35315 ERROR 22012: Division by 0
35316 COMMIT;
35317         
35318 # check transactions-8 success:         1
35319 # INFO: Storage engine used for t1 seems to be unable to revert
35320 #       changes made by the failing statement.
35321 SET @@session.sql_mode = '';
35322 SET AUTOCOMMIT= 1;
35323 DELETE FROM t1 WHERE f_charbig = 'was inserted';
35324 COMMIT WORK;
35325 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
35326         
35327 # check special-1 success:      1
35328 UPDATE t1 SET f_charbig = '';
35329         
35330 # check special-2 success:      1
35331 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
35332 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35333 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
35334 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35335 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35336 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35337 'just inserted' FROM t0_template
35338 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35339 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
35340 BEGIN
35341 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35342 f_charbig = 'updated by trigger'
35343       WHERE f_int1 = new.f_int1;
35344 END|
35345 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35346 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35347 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35348         
35349 # check trigger-1 success:      1
35350 DROP TRIGGER trg_1;
35351 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35352 f_int2 = CAST(f_char1 AS SIGNED INT),
35353 f_charbig = 'just inserted'
35354    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35355 DELETE FROM t0_aux
35356 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35357 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35358 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35359 'just inserted' FROM t0_template
35360 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35361 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
35362 BEGIN
35363 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35364 f_charbig = 'updated by trigger'
35365       WHERE f_int1 = new.f_int1;
35366 END|
35367 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35368 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35369 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35370         
35371 # check trigger-2 success:      1
35372 DROP TRIGGER trg_1;
35373 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35374 f_int2 = CAST(f_char1 AS SIGNED INT),
35375 f_charbig = 'just inserted'
35376    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35377 DELETE FROM t0_aux
35378 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35379 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35380 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35381 'just inserted' FROM t0_template
35382 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35383 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35384 BEGIN
35385 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35386 f_charbig = 'updated by trigger'
35387       WHERE f_int1 = new.f_int1;
35388 END|
35389 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
35390 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35391         
35392 # check trigger-3 success:      1
35393 DROP TRIGGER trg_1;
35394 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35395 f_int2 = CAST(f_char1 AS SIGNED INT),
35396 f_charbig = 'just inserted'
35397    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35398 DELETE FROM t0_aux
35399 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35400 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35401 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35402 'just inserted' FROM t0_template
35403 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35404 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35405 BEGIN
35406 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35407 f_charbig = 'updated by trigger'
35408       WHERE f_int1 = - old.f_int1;
35409 END|
35410 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
35411 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35412         
35413 # check trigger-4 success:      1
35414 DROP TRIGGER trg_1;
35415 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35416 f_int2 = CAST(f_char1 AS SIGNED INT),
35417 f_charbig = 'just inserted'
35418    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35419 DELETE FROM t0_aux
35420 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35421 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35422 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35423 'just inserted' FROM t0_template
35424 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35425 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35426 BEGIN
35427 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35428 f_charbig = 'updated by trigger'
35429       WHERE f_int1 = new.f_int1;
35430 END|
35431 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
35432 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35433         
35434 # check trigger-5 success:      1
35435 DROP TRIGGER trg_1;
35436 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35437 f_int2 = CAST(f_char1 AS SIGNED INT),
35438 f_charbig = 'just inserted'
35439    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35440 DELETE FROM t0_aux
35441 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35442 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35443 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35444 'just inserted' FROM t0_template
35445 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35446 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35447 BEGIN
35448 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35449 f_charbig = 'updated by trigger'
35450       WHERE f_int1 = - old.f_int1;
35451 END|
35452 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
35453 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35454         
35455 # check trigger-6 success:      1
35456 DROP TRIGGER trg_1;
35457 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35458 f_int2 = CAST(f_char1 AS SIGNED INT),
35459 f_charbig = 'just inserted'
35460    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35461 DELETE FROM t0_aux
35462 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35463 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35464 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35465 'just inserted' FROM t0_template
35466 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35467 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
35468 BEGIN
35469 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35470 f_charbig = 'updated by trigger'
35471       WHERE f_int1 = - old.f_int1;
35472 END|
35473 DELETE FROM t0_aux
35474 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35475         
35476 # check trigger-7 success:      1
35477 DROP TRIGGER trg_1;
35478 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35479 f_int2 = CAST(f_char1 AS SIGNED INT),
35480 f_charbig = 'just inserted'
35481    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35482 DELETE FROM t0_aux
35483 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35484 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35485 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35486 'just inserted' FROM t0_template
35487 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35488 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
35489 BEGIN
35490 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35491 f_charbig = 'updated by trigger'
35492       WHERE f_int1 = - old.f_int1;
35493 END|
35494 DELETE FROM t0_aux
35495 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35496         
35497 # check trigger-8 success:      1
35498 DROP TRIGGER trg_1;
35499 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35500 f_int2 = CAST(f_char1 AS SIGNED INT),
35501 f_charbig = 'just inserted'
35502    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35503 DELETE FROM t0_aux
35504 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35505 DELETE FROM t1
35506 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35507 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35508 BEGIN
35509 SET new.f_int1 = old.f_int1 + @max_row,
35510 new.f_int2 = old.f_int2 - @max_row,
35511 new.f_charbig = '####updated per update trigger####';
35512 END|
35513 UPDATE t1
35514 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35515 f_charbig = '####updated per update statement itself####';
35516         
35517 # check trigger-9 success:      1
35518 DROP TRIGGER trg_2;
35519 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35520 f_int2 = CAST(f_char1 AS SIGNED INT),
35521 f_charbig = CONCAT('===',f_char1,'===');
35522 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35523 BEGIN
35524 SET new.f_int1 = new.f_int1 + @max_row,
35525 new.f_int2 = new.f_int2 - @max_row,
35526 new.f_charbig = '####updated per update trigger####';
35527 END|
35528 UPDATE t1
35529 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35530 f_charbig = '####updated per update statement itself####';
35531         
35532 # check trigger-10 success:     1
35533 DROP TRIGGER trg_2;
35534 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35535 f_int2 = CAST(f_char1 AS SIGNED INT),
35536 f_charbig = CONCAT('===',f_char1,'===');
35537 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35538 BEGIN
35539 SET new.f_int1 = @my_max1 + @counter,
35540 new.f_int2 = @my_min2 - @counter,
35541 new.f_charbig = '####updated per insert trigger####';
35542 SET @counter = @counter + 1;
35543 END|
35544 SET @counter = 1;
35545 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35546 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35547 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35548 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35549 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35550 ORDER BY f_int1;
35551 DROP TRIGGER trg_3;
35552         
35553 # check trigger-11 success:     1
35554 DELETE FROM t1
35555 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35556 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35557 AND f_charbig = '####updated per insert trigger####';
35558 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35559 BEGIN
35560 SET new.f_int1 = @my_max1 + @counter,
35561 new.f_int2 = @my_min2 - @counter,
35562 new.f_charbig = '####updated per insert trigger####';
35563 SET @counter = @counter + 1;
35564 END|
35565 SET @counter = 1;
35566 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35567 INSERT INTO t1 (f_char1, f_char2, f_charbig)
35568 SELECT CAST(f_int1 AS CHAR),
35569 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35570 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35571 ORDER BY f_int1;
35572 DROP TRIGGER trg_3;
35573         
35574 # check trigger-12 success:     1
35575 DELETE FROM t1
35576 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35577 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35578 AND f_charbig = '####updated per insert trigger####';
35579 ANALYZE  TABLE t1;
35580 Table   Op      Msg_type        Msg_text
35581 test.t1 analyze status  OK
35582 CHECK    TABLE t1 EXTENDED;
35583 Table   Op      Msg_type        Msg_text
35584 test.t1 check   status  OK
35585 CHECKSUM TABLE t1 EXTENDED;
35586 Table   Checksum
35587 test.t1 <some_value>
35588 OPTIMIZE TABLE t1;
35589 Table   Op      Msg_type        Msg_text
35590 test.t1 optimize        status  OK
35591 # check layout success:    1
35592 REPAIR   TABLE t1 EXTENDED;
35593 Table   Op      Msg_type        Msg_text
35594 test.t1 repair  status  OK
35595 # check layout success:    1
35596 TRUNCATE t1;
35597         
35598 # check TRUNCATE success:       1
35599 # check layout success:    1
35600 # End usability test (inc/partition_check.inc)
35601 DROP TABLE t1;
35602 CREATE TABLE t1 (
35603 f_int1 INTEGER,
35604 f_int2 INTEGER,
35605 f_char1 CHAR(20),
35606 f_char2 CHAR(20),
35607 f_charbig VARCHAR(1000)
35610 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
35611 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35612 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35613 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
35614 ALTER TABLE t1 CHECK PARTITION ALL;
35615 Table   Op      Msg_type        Msg_text
35616 test.t1 check   status  OK
35617 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35618 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35619 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
35620 # Start usability test (inc/partition_check.inc)
35621 create_command
35622 SHOW CREATE TABLE t1;
35623 Table   Create Table
35624 t1      CREATE TABLE `t1` (
35625   `f_int1` int(11) DEFAULT NULL,
35626   `f_int2` int(11) DEFAULT NULL,
35627   `f_char1` char(20) DEFAULT NULL,
35628   `f_char2` char(20) DEFAULT NULL,
35629   `f_charbig` varchar(1000) DEFAULT NULL
35630 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
35631 /*!50100 PARTITION BY KEY (f_int1)
35632 (PARTITION part_1 ENGINE = MyISAM,
35633  PARTITION part_2 ENGINE = MyISAM,
35634  PARTITION part_3 ENGINE = MyISAM,
35635  PARTITION part_4 ENGINE = MyISAM,
35636  PARTITION part_5 ENGINE = MyISAM) */
35638 unified filelist
35639 t1#P#part_1.MYD
35640 t1#P#part_1.MYI
35641 t1#P#part_2.MYD
35642 t1#P#part_2.MYI
35643 t1#P#part_3.MYD
35644 t1#P#part_3.MYI
35645 t1#P#part_4.MYD
35646 t1#P#part_4.MYI
35647 t1#P#part_5.MYD
35648 t1#P#part_5.MYI
35649 t1.frm
35650 t1.par
35652 # check prerequisites-1 success:    1
35653 # check COUNT(*) success:    1
35654 # check MIN/MAX(f_int1) success:    1
35655 # check MIN/MAX(f_int2) success:    1
35656 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35657 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35658 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
35659 WHERE f_int1 IN (2,3);
35660 # check prerequisites-3 success:    1
35661 DELETE FROM t1 WHERE f_charbig = 'delete me';
35662 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
35663 # check read via f_int1 success: 1
35664 # check read via f_int2 success: 1
35665         
35666 # check multiple-1 success:     1
35667 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
35668         
35669 # check multiple-2 success:     1
35670 INSERT INTO t1 SELECT * FROM t0_template
35671 WHERE MOD(f_int1,3) = 0;
35672         
35673 # check multiple-3 success:     1
35674 UPDATE t1 SET f_int1 = f_int1 + @max_row
35675 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
35676 AND @max_row_div2 + @max_row_div4;
35677         
35678 # check multiple-4 success:     1
35679 DELETE FROM t1
35680 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
35681 AND @max_row_div2 + @max_row_div4 + @max_row;
35682         
35683 # check multiple-5 success:     1
35684 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
35685 INSERT INTO t1
35686 SET f_int1 = @cur_value , f_int2 = @cur_value,
35687 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35688 f_charbig = '#SINGLE#';
35689         
35690 # check single-1 success:       1
35691 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
35692 INSERT INTO t1
35693 SET f_int1 = @cur_value , f_int2 = @cur_value,
35694 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35695 f_charbig = '#SINGLE#';
35696         
35697 # check single-2 success:       1
35698 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
35699 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
35700 UPDATE t1 SET f_int1 = @cur_value2
35701 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
35702         
35703 # check single-3 success:       1
35704 SET @cur_value1= -1;
35705 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
35706 UPDATE t1 SET f_int1 = @cur_value1
35707 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
35708         
35709 # check single-4 success:       1
35710 SELECT MAX(f_int1) INTO @cur_value FROM t1;
35711 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
35712         
35713 # check single-5 success:       1
35714 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
35715         
35716 # check single-6 success:       1
35717 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
35718         
35719 # check single-7 success:       1
35720 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
35721 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
35722 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
35723 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
35724 f_charbig = '#NULL#';
35725 INSERT INTO t1
35726 SET f_int1 = NULL , f_int2 = -@max_row,
35727 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
35728 f_charbig = '#NULL#';
35729 # check null success:    1
35730         
35731 # check null-1 success:         1
35732 UPDATE t1 SET f_int1 = -@max_row
35733 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35734 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35735         
35736 # check null-2 success:         1
35737 UPDATE t1 SET f_int1 = NULL
35738 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35739 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35740         
35741 # check null-3 success:         1
35742 DELETE FROM t1
35743 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35744 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35745         
35746 # check null-4 success:         1
35747 DELETE FROM t1
35748 WHERE f_int1 = 0 AND f_int2 = 0
35749 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
35750 AND f_charbig = '#NULL#';
35751 SET AUTOCOMMIT= 0;
35752 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35753 SELECT f_int1, f_int1, '', '', 'was inserted'
35754 FROM t0_template source_tab
35755 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35756         
35757 # check transactions-1 success:         1
35758 COMMIT WORK;
35759         
35760 # check transactions-2 success:         1
35761 ROLLBACK WORK;
35762         
35763 # check transactions-3 success:         1
35764 DELETE FROM t1 WHERE f_charbig = 'was inserted';
35765 COMMIT WORK;
35766 ROLLBACK WORK;
35767         
35768 # check transactions-4 success:         1
35769 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35770 SELECT f_int1, f_int1, '', '', 'was inserted'
35771 FROM t0_template source_tab
35772 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35773         
35774 # check transactions-5 success:         1
35775 ROLLBACK WORK;
35776 Warnings:
35777 Warning 1196    Some non-transactional changed tables couldn't be rolled back
35778         
35779 # check transactions-6 success:         1
35780 # INFO: Storage engine used for t1 seems to be not transactional.
35781 COMMIT;
35782         
35783 # check transactions-7 success:         1
35784 DELETE FROM t1 WHERE f_charbig = 'was inserted';
35785 COMMIT WORK;
35786 SET @@session.sql_mode = 'traditional';
35787 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
35788 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35789 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
35790 '', '', 'was inserted' FROM t0_template
35791 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35792 ERROR 22012: Division by 0
35793 COMMIT;
35794         
35795 # check transactions-8 success:         1
35796 # INFO: Storage engine used for t1 seems to be unable to revert
35797 #       changes made by the failing statement.
35798 SET @@session.sql_mode = '';
35799 SET AUTOCOMMIT= 1;
35800 DELETE FROM t1 WHERE f_charbig = 'was inserted';
35801 COMMIT WORK;
35802 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
35803         
35804 # check special-1 success:      1
35805 UPDATE t1 SET f_charbig = '';
35806         
35807 # check special-2 success:      1
35808 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
35809 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35810 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
35811 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35812 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35813 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35814 'just inserted' FROM t0_template
35815 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35816 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
35817 BEGIN
35818 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35819 f_charbig = 'updated by trigger'
35820       WHERE f_int1 = new.f_int1;
35821 END|
35822 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35823 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35824 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35825         
35826 # check trigger-1 success:      1
35827 DROP TRIGGER trg_1;
35828 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35829 f_int2 = CAST(f_char1 AS SIGNED INT),
35830 f_charbig = 'just inserted'
35831    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35832 DELETE FROM t0_aux
35833 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35834 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35835 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35836 'just inserted' FROM t0_template
35837 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35838 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
35839 BEGIN
35840 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35841 f_charbig = 'updated by trigger'
35842       WHERE f_int1 = new.f_int1;
35843 END|
35844 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35845 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35846 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35847         
35848 # check trigger-2 success:      1
35849 DROP TRIGGER trg_1;
35850 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35851 f_int2 = CAST(f_char1 AS SIGNED INT),
35852 f_charbig = 'just inserted'
35853    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35854 DELETE FROM t0_aux
35855 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35856 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35857 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35858 'just inserted' FROM t0_template
35859 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35860 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35861 BEGIN
35862 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35863 f_charbig = 'updated by trigger'
35864       WHERE f_int1 = new.f_int1;
35865 END|
35866 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
35867 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35868         
35869 # check trigger-3 success:      1
35870 DROP TRIGGER trg_1;
35871 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35872 f_int2 = CAST(f_char1 AS SIGNED INT),
35873 f_charbig = 'just inserted'
35874    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35875 DELETE FROM t0_aux
35876 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35877 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35878 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35879 'just inserted' FROM t0_template
35880 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35881 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35882 BEGIN
35883 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35884 f_charbig = 'updated by trigger'
35885       WHERE f_int1 = - old.f_int1;
35886 END|
35887 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
35888 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35889         
35890 # check trigger-4 success:      1
35891 DROP TRIGGER trg_1;
35892 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35893 f_int2 = CAST(f_char1 AS SIGNED INT),
35894 f_charbig = 'just inserted'
35895    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35896 DELETE FROM t0_aux
35897 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35898 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35899 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35900 'just inserted' FROM t0_template
35901 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35902 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35903 BEGIN
35904 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35905 f_charbig = 'updated by trigger'
35906       WHERE f_int1 = new.f_int1;
35907 END|
35908 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
35909 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35910         
35911 # check trigger-5 success:      1
35912 DROP TRIGGER trg_1;
35913 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35914 f_int2 = CAST(f_char1 AS SIGNED INT),
35915 f_charbig = 'just inserted'
35916    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35917 DELETE FROM t0_aux
35918 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35919 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35920 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35921 'just inserted' FROM t0_template
35922 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35923 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35924 BEGIN
35925 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35926 f_charbig = 'updated by trigger'
35927       WHERE f_int1 = - old.f_int1;
35928 END|
35929 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
35930 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35931         
35932 # check trigger-6 success:      1
35933 DROP TRIGGER trg_1;
35934 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35935 f_int2 = CAST(f_char1 AS SIGNED INT),
35936 f_charbig = 'just inserted'
35937    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35938 DELETE FROM t0_aux
35939 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35940 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35941 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35942 'just inserted' FROM t0_template
35943 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35944 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
35945 BEGIN
35946 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35947 f_charbig = 'updated by trigger'
35948       WHERE f_int1 = - old.f_int1;
35949 END|
35950 DELETE FROM t0_aux
35951 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35952         
35953 # check trigger-7 success:      1
35954 DROP TRIGGER trg_1;
35955 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35956 f_int2 = CAST(f_char1 AS SIGNED INT),
35957 f_charbig = 'just inserted'
35958    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35959 DELETE FROM t0_aux
35960 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35961 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35962 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35963 'just inserted' FROM t0_template
35964 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35965 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
35966 BEGIN
35967 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35968 f_charbig = 'updated by trigger'
35969       WHERE f_int1 = - old.f_int1;
35970 END|
35971 DELETE FROM t0_aux
35972 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35973         
35974 # check trigger-8 success:      1
35975 DROP TRIGGER trg_1;
35976 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35977 f_int2 = CAST(f_char1 AS SIGNED INT),
35978 f_charbig = 'just inserted'
35979    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35980 DELETE FROM t0_aux
35981 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35982 DELETE FROM t1
35983 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35984 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35985 BEGIN
35986 SET new.f_int1 = old.f_int1 + @max_row,
35987 new.f_int2 = old.f_int2 - @max_row,
35988 new.f_charbig = '####updated per update trigger####';
35989 END|
35990 UPDATE t1
35991 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35992 f_charbig = '####updated per update statement itself####';
35993         
35994 # check trigger-9 success:      1
35995 DROP TRIGGER trg_2;
35996 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35997 f_int2 = CAST(f_char1 AS SIGNED INT),
35998 f_charbig = CONCAT('===',f_char1,'===');
35999 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36000 BEGIN
36001 SET new.f_int1 = new.f_int1 + @max_row,
36002 new.f_int2 = new.f_int2 - @max_row,
36003 new.f_charbig = '####updated per update trigger####';
36004 END|
36005 UPDATE t1
36006 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36007 f_charbig = '####updated per update statement itself####';
36008         
36009 # check trigger-10 success:     1
36010 DROP TRIGGER trg_2;
36011 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36012 f_int2 = CAST(f_char1 AS SIGNED INT),
36013 f_charbig = CONCAT('===',f_char1,'===');
36014 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36015 BEGIN
36016 SET new.f_int1 = @my_max1 + @counter,
36017 new.f_int2 = @my_min2 - @counter,
36018 new.f_charbig = '####updated per insert trigger####';
36019 SET @counter = @counter + 1;
36020 END|
36021 SET @counter = 1;
36022 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36023 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36024 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36025 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36026 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36027 ORDER BY f_int1;
36028 DROP TRIGGER trg_3;
36029         
36030 # check trigger-11 success:     1
36031 DELETE FROM t1
36032 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36033 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36034 AND f_charbig = '####updated per insert trigger####';
36035 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36036 BEGIN
36037 SET new.f_int1 = @my_max1 + @counter,
36038 new.f_int2 = @my_min2 - @counter,
36039 new.f_charbig = '####updated per insert trigger####';
36040 SET @counter = @counter + 1;
36041 END|
36042 SET @counter = 1;
36043 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36044 INSERT INTO t1 (f_char1, f_char2, f_charbig)
36045 SELECT CAST(f_int1 AS CHAR),
36046 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36047 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36048 ORDER BY f_int1;
36049 DROP TRIGGER trg_3;
36050         
36051 # check trigger-12 success:     1
36052 DELETE FROM t1
36053 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36054 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36055 AND f_charbig = '####updated per insert trigger####';
36056 ANALYZE  TABLE t1;
36057 Table   Op      Msg_type        Msg_text
36058 test.t1 analyze status  OK
36059 CHECK    TABLE t1 EXTENDED;
36060 Table   Op      Msg_type        Msg_text
36061 test.t1 check   status  OK
36062 CHECKSUM TABLE t1 EXTENDED;
36063 Table   Checksum
36064 test.t1 <some_value>
36065 OPTIMIZE TABLE t1;
36066 Table   Op      Msg_type        Msg_text
36067 test.t1 optimize        status  OK
36068 # check layout success:    1
36069 REPAIR   TABLE t1 EXTENDED;
36070 Table   Op      Msg_type        Msg_text
36071 test.t1 repair  status  OK
36072 # check layout success:    1
36073 TRUNCATE t1;
36074         
36075 # check TRUNCATE success:       1
36076 # check layout success:    1
36077 # End usability test (inc/partition_check.inc)
36078 DROP TABLE t1;
36079 CREATE TABLE t1 (
36080 f_int1 INTEGER,
36081 f_int2 INTEGER,
36082 f_char1 CHAR(20),
36083 f_char2 CHAR(20),
36084 f_charbig VARCHAR(1000)
36087 PARTITION BY LIST(MOD(f_int1,4))
36088 (PARTITION part_3 VALUES IN (-3),
36089 PARTITION part_2 VALUES IN (-2),
36090 PARTITION part_1 VALUES IN (-1),
36091 PARTITION part_N VALUES IN (NULL),
36092 PARTITION part0 VALUES IN (0),
36093 PARTITION part1 VALUES IN (1),
36094 PARTITION part2 VALUES IN (2),
36095 PARTITION part3 VALUES IN (3));
36096 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36097 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
36098 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
36099 ALTER TABLE t1 CHECK PARTITION ALL;
36100 Table   Op      Msg_type        Msg_text
36101 test.t1 check   status  OK
36102 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36103 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
36104 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
36105 # Start usability test (inc/partition_check.inc)
36106 create_command
36107 SHOW CREATE TABLE t1;
36108 Table   Create Table
36109 t1      CREATE TABLE `t1` (
36110   `f_int1` int(11) DEFAULT NULL,
36111   `f_int2` int(11) DEFAULT NULL,
36112   `f_char1` char(20) DEFAULT NULL,
36113   `f_char2` char(20) DEFAULT NULL,
36114   `f_charbig` varchar(1000) DEFAULT NULL
36115 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
36116 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
36117 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
36118  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
36119  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
36120  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
36121  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
36122  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
36123  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
36124  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
36126 unified filelist
36127 t1#P#part0.MYD
36128 t1#P#part0.MYI
36129 t1#P#part1.MYD
36130 t1#P#part1.MYI
36131 t1#P#part2.MYD
36132 t1#P#part2.MYI
36133 t1#P#part3.MYD
36134 t1#P#part3.MYI
36135 t1#P#part_1.MYD
36136 t1#P#part_1.MYI
36137 t1#P#part_2.MYD
36138 t1#P#part_2.MYI
36139 t1#P#part_3.MYD
36140 t1#P#part_3.MYI
36141 t1#P#part_N.MYD
36142 t1#P#part_N.MYI
36143 t1.frm
36144 t1.par
36146 # check prerequisites-1 success:    1
36147 # check COUNT(*) success:    1
36148 # check MIN/MAX(f_int1) success:    1
36149 # check MIN/MAX(f_int2) success:    1
36150 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36151 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36152 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
36153 WHERE f_int1 IN (2,3);
36154 # check prerequisites-3 success:    1
36155 DELETE FROM t1 WHERE f_charbig = 'delete me';
36156 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
36157 # check read via f_int1 success: 1
36158 # check read via f_int2 success: 1
36159         
36160 # check multiple-1 success:     1
36161 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
36162         
36163 # check multiple-2 success:     1
36164 INSERT INTO t1 SELECT * FROM t0_template
36165 WHERE MOD(f_int1,3) = 0;
36166         
36167 # check multiple-3 success:     1
36168 UPDATE t1 SET f_int1 = f_int1 + @max_row
36169 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
36170 AND @max_row_div2 + @max_row_div4;
36171         
36172 # check multiple-4 success:     1
36173 DELETE FROM t1
36174 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
36175 AND @max_row_div2 + @max_row_div4 + @max_row;
36176         
36177 # check multiple-5 success:     1
36178 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
36179 INSERT INTO t1
36180 SET f_int1 = @cur_value , f_int2 = @cur_value,
36181 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
36182 f_charbig = '#SINGLE#';
36183         
36184 # check single-1 success:       1
36185 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
36186 INSERT INTO t1
36187 SET f_int1 = @cur_value , f_int2 = @cur_value,
36188 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
36189 f_charbig = '#SINGLE#';
36190         
36191 # check single-2 success:       1
36192 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
36193 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
36194 UPDATE t1 SET f_int1 = @cur_value2
36195 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
36196         
36197 # check single-3 success:       1
36198 SET @cur_value1= -1;
36199 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
36200 UPDATE t1 SET f_int1 = @cur_value1
36201 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
36202         
36203 # check single-4 success:       1
36204 SELECT MAX(f_int1) INTO @cur_value FROM t1;
36205 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
36206         
36207 # check single-5 success:       1
36208 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
36209         
36210 # check single-6 success:       1
36211 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
36212         
36213 # check single-7 success:       1
36214 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
36215 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
36216 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
36217 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
36218 f_charbig = '#NULL#';
36219 INSERT INTO t1
36220 SET f_int1 = NULL , f_int2 = -@max_row,
36221 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
36222 f_charbig = '#NULL#';
36223 # check null success:    1
36224         
36225 # check null-1 success:         1
36226 UPDATE t1 SET f_int1 = -@max_row
36227 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
36228 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
36229         
36230 # check null-2 success:         1
36231 UPDATE t1 SET f_int1 = NULL
36232 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
36233 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
36234         
36235 # check null-3 success:         1
36236 DELETE FROM t1
36237 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
36238 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
36239         
36240 # check null-4 success:         1
36241 DELETE FROM t1
36242 WHERE f_int1 = 0 AND f_int2 = 0
36243 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
36244 AND f_charbig = '#NULL#';
36245 SET AUTOCOMMIT= 0;
36246 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36247 SELECT f_int1, f_int1, '', '', 'was inserted'
36248 FROM t0_template source_tab
36249 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36250         
36251 # check transactions-1 success:         1
36252 COMMIT WORK;
36253         
36254 # check transactions-2 success:         1
36255 ROLLBACK WORK;
36256         
36257 # check transactions-3 success:         1
36258 DELETE FROM t1 WHERE f_charbig = 'was inserted';
36259 COMMIT WORK;
36260 ROLLBACK WORK;
36261         
36262 # check transactions-4 success:         1
36263 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36264 SELECT f_int1, f_int1, '', '', 'was inserted'
36265 FROM t0_template source_tab
36266 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36267         
36268 # check transactions-5 success:         1
36269 ROLLBACK WORK;
36270 Warnings:
36271 Warning 1196    Some non-transactional changed tables couldn't be rolled back
36272         
36273 # check transactions-6 success:         1
36274 # INFO: Storage engine used for t1 seems to be not transactional.
36275 COMMIT;
36276         
36277 # check transactions-7 success:         1
36278 DELETE FROM t1 WHERE f_charbig = 'was inserted';
36279 COMMIT WORK;
36280 SET @@session.sql_mode = 'traditional';
36281 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
36282 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36283 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
36284 '', '', 'was inserted' FROM t0_template
36285 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36286 ERROR 22012: Division by 0
36287 COMMIT;
36288         
36289 # check transactions-8 success:         1
36290 # INFO: Storage engine used for t1 seems to be unable to revert
36291 #       changes made by the failing statement.
36292 SET @@session.sql_mode = '';
36293 SET AUTOCOMMIT= 1;
36294 DELETE FROM t1 WHERE f_charbig = 'was inserted';
36295 COMMIT WORK;
36296 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
36297         
36298 # check special-1 success:      1
36299 UPDATE t1 SET f_charbig = '';
36300         
36301 # check special-2 success:      1
36302 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
36303 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36304 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
36305 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36306 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36307 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36308 'just inserted' FROM t0_template
36309 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36310 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
36311 BEGIN
36312 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36313 f_charbig = 'updated by trigger'
36314       WHERE f_int1 = new.f_int1;
36315 END|
36316 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36317 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
36318 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36319         
36320 # check trigger-1 success:      1
36321 DROP TRIGGER trg_1;
36322 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36323 f_int2 = CAST(f_char1 AS SIGNED INT),
36324 f_charbig = 'just inserted'
36325    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36326 DELETE FROM t0_aux
36327 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36328 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36329 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36330 'just inserted' FROM t0_template
36331 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36332 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
36333 BEGIN
36334 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36335 f_charbig = 'updated by trigger'
36336       WHERE f_int1 = new.f_int1;
36337 END|
36338 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36339 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
36340 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36341         
36342 # check trigger-2 success:      1
36343 DROP TRIGGER trg_1;
36344 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36345 f_int2 = CAST(f_char1 AS SIGNED INT),
36346 f_charbig = 'just inserted'
36347    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36348 DELETE FROM t0_aux
36349 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36350 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36351 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36352 'just inserted' FROM t0_template
36353 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36354 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
36355 BEGIN
36356 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36357 f_charbig = 'updated by trigger'
36358       WHERE f_int1 = new.f_int1;
36359 END|
36360 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
36361 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36362         
36363 # check trigger-3 success:      1
36364 DROP TRIGGER trg_1;
36365 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36366 f_int2 = CAST(f_char1 AS SIGNED INT),
36367 f_charbig = 'just inserted'
36368    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36369 DELETE FROM t0_aux
36370 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36371 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36372 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36373 'just inserted' FROM t0_template
36374 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36375 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
36376 BEGIN
36377 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36378 f_charbig = 'updated by trigger'
36379       WHERE f_int1 = - old.f_int1;
36380 END|
36381 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
36382 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36383         
36384 # check trigger-4 success:      1
36385 DROP TRIGGER trg_1;
36386 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36387 f_int2 = CAST(f_char1 AS SIGNED INT),
36388 f_charbig = 'just inserted'
36389    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36390 DELETE FROM t0_aux
36391 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36392 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36393 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36394 'just inserted' FROM t0_template
36395 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36396 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
36397 BEGIN
36398 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36399 f_charbig = 'updated by trigger'
36400       WHERE f_int1 = new.f_int1;
36401 END|
36402 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
36403 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36404         
36405 # check trigger-5 success:      1
36406 DROP TRIGGER trg_1;
36407 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36408 f_int2 = CAST(f_char1 AS SIGNED INT),
36409 f_charbig = 'just inserted'
36410    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36411 DELETE FROM t0_aux
36412 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36413 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36414 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36415 'just inserted' FROM t0_template
36416 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36417 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
36418 BEGIN
36419 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36420 f_charbig = 'updated by trigger'
36421       WHERE f_int1 = - old.f_int1;
36422 END|
36423 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
36424 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36425         
36426 # check trigger-6 success:      1
36427 DROP TRIGGER trg_1;
36428 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36429 f_int2 = CAST(f_char1 AS SIGNED INT),
36430 f_charbig = 'just inserted'
36431    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36432 DELETE FROM t0_aux
36433 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36434 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36435 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36436 'just inserted' FROM t0_template
36437 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36438 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
36439 BEGIN
36440 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36441 f_charbig = 'updated by trigger'
36442       WHERE f_int1 = - old.f_int1;
36443 END|
36444 DELETE FROM t0_aux
36445 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36446         
36447 # check trigger-7 success:      1
36448 DROP TRIGGER trg_1;
36449 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36450 f_int2 = CAST(f_char1 AS SIGNED INT),
36451 f_charbig = 'just inserted'
36452    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36453 DELETE FROM t0_aux
36454 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36455 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36456 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36457 'just inserted' FROM t0_template
36458 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36459 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
36460 BEGIN
36461 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36462 f_charbig = 'updated by trigger'
36463       WHERE f_int1 = - old.f_int1;
36464 END|
36465 DELETE FROM t0_aux
36466 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36467         
36468 # check trigger-8 success:      1
36469 DROP TRIGGER trg_1;
36470 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36471 f_int2 = CAST(f_char1 AS SIGNED INT),
36472 f_charbig = 'just inserted'
36473    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36474 DELETE FROM t0_aux
36475 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36476 DELETE FROM t1
36477 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36478 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36479 BEGIN
36480 SET new.f_int1 = old.f_int1 + @max_row,
36481 new.f_int2 = old.f_int2 - @max_row,
36482 new.f_charbig = '####updated per update trigger####';
36483 END|
36484 UPDATE t1
36485 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36486 f_charbig = '####updated per update statement itself####';
36487         
36488 # check trigger-9 success:      1
36489 DROP TRIGGER trg_2;
36490 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36491 f_int2 = CAST(f_char1 AS SIGNED INT),
36492 f_charbig = CONCAT('===',f_char1,'===');
36493 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36494 BEGIN
36495 SET new.f_int1 = new.f_int1 + @max_row,
36496 new.f_int2 = new.f_int2 - @max_row,
36497 new.f_charbig = '####updated per update trigger####';
36498 END|
36499 UPDATE t1
36500 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36501 f_charbig = '####updated per update statement itself####';
36502         
36503 # check trigger-10 success:     1
36504 DROP TRIGGER trg_2;
36505 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36506 f_int2 = CAST(f_char1 AS SIGNED INT),
36507 f_charbig = CONCAT('===',f_char1,'===');
36508 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36509 BEGIN
36510 SET new.f_int1 = @my_max1 + @counter,
36511 new.f_int2 = @my_min2 - @counter,
36512 new.f_charbig = '####updated per insert trigger####';
36513 SET @counter = @counter + 1;
36514 END|
36515 SET @counter = 1;
36516 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36517 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36518 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36519 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36520 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36521 ORDER BY f_int1;
36522 DROP TRIGGER trg_3;
36523         
36524 # check trigger-11 success:     1
36525 DELETE FROM t1
36526 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36527 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36528 AND f_charbig = '####updated per insert trigger####';
36529 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36530 BEGIN
36531 SET new.f_int1 = @my_max1 + @counter,
36532 new.f_int2 = @my_min2 - @counter,
36533 new.f_charbig = '####updated per insert trigger####';
36534 SET @counter = @counter + 1;
36535 END|
36536 SET @counter = 1;
36537 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36538 INSERT INTO t1 (f_char1, f_char2, f_charbig)
36539 SELECT CAST(f_int1 AS CHAR),
36540 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36541 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36542 ORDER BY f_int1;
36543 DROP TRIGGER trg_3;
36544         
36545 # check trigger-12 success:     1
36546 DELETE FROM t1
36547 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36548 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36549 AND f_charbig = '####updated per insert trigger####';
36550 ANALYZE  TABLE t1;
36551 Table   Op      Msg_type        Msg_text
36552 test.t1 analyze status  OK
36553 CHECK    TABLE t1 EXTENDED;
36554 Table   Op      Msg_type        Msg_text
36555 test.t1 check   status  OK
36556 CHECKSUM TABLE t1 EXTENDED;
36557 Table   Checksum
36558 test.t1 <some_value>
36559 OPTIMIZE TABLE t1;
36560 Table   Op      Msg_type        Msg_text
36561 test.t1 optimize        status  OK
36562 # check layout success:    1
36563 REPAIR   TABLE t1 EXTENDED;
36564 Table   Op      Msg_type        Msg_text
36565 test.t1 repair  status  OK
36566 # check layout success:    1
36567 TRUNCATE t1;
36568         
36569 # check TRUNCATE success:       1
36570 # check layout success:    1
36571 # End usability test (inc/partition_check.inc)
36572 DROP TABLE t1;
36573 CREATE TABLE t1 (
36574 f_int1 INTEGER,
36575 f_int2 INTEGER,
36576 f_char1 CHAR(20),
36577 f_char2 CHAR(20),
36578 f_charbig VARCHAR(1000)
36581 PARTITION BY RANGE(f_int1)
36582 (PARTITION parta VALUES LESS THAN (0),
36583 PARTITION part_1 VALUES LESS THAN (5),
36584 PARTITION part_2 VALUES LESS THAN (10),
36585 PARTITION part_3 VALUES LESS THAN (10 + 5),
36586 PARTITION part_4 VALUES LESS THAN (20),
36587 PARTITION part_5 VALUES LESS THAN (2147483646));
36588 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36589 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
36590 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
36591 ALTER TABLE t1 CHECK PARTITION ALL;
36592 Table   Op      Msg_type        Msg_text
36593 test.t1 check   status  OK
36594 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36595 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
36596 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
36597 # Start usability test (inc/partition_check.inc)
36598 create_command
36599 SHOW CREATE TABLE t1;
36600 Table   Create Table
36601 t1      CREATE TABLE `t1` (
36602   `f_int1` int(11) DEFAULT NULL,
36603   `f_int2` int(11) DEFAULT NULL,
36604   `f_char1` char(20) DEFAULT NULL,
36605   `f_char2` char(20) DEFAULT NULL,
36606   `f_charbig` varchar(1000) DEFAULT NULL
36607 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
36608 /*!50100 PARTITION BY RANGE (f_int1)
36609 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
36610  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
36611  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
36612  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
36613  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
36614  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
36616 unified filelist
36617 t1#P#part_1.MYD
36618 t1#P#part_1.MYI
36619 t1#P#part_2.MYD
36620 t1#P#part_2.MYI
36621 t1#P#part_3.MYD
36622 t1#P#part_3.MYI
36623 t1#P#part_4.MYD
36624 t1#P#part_4.MYI
36625 t1#P#part_5.MYD
36626 t1#P#part_5.MYI
36627 t1#P#parta.MYD
36628 t1#P#parta.MYI
36629 t1.frm
36630 t1.par
36632 # check prerequisites-1 success:    1
36633 # check COUNT(*) success:    1
36634 # check MIN/MAX(f_int1) success:    1
36635 # check MIN/MAX(f_int2) success:    1
36636 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36637 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36638 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
36639 WHERE f_int1 IN (2,3);
36640 # check prerequisites-3 success:    1
36641 DELETE FROM t1 WHERE f_charbig = 'delete me';
36642 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
36643 # check read via f_int1 success: 1
36644 # check read via f_int2 success: 1
36645         
36646 # check multiple-1 success:     1
36647 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
36648         
36649 # check multiple-2 success:     1
36650 INSERT INTO t1 SELECT * FROM t0_template
36651 WHERE MOD(f_int1,3) = 0;
36652         
36653 # check multiple-3 success:     1
36654 UPDATE t1 SET f_int1 = f_int1 + @max_row
36655 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
36656 AND @max_row_div2 + @max_row_div4;
36657         
36658 # check multiple-4 success:     1
36659 DELETE FROM t1
36660 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
36661 AND @max_row_div2 + @max_row_div4 + @max_row;
36662         
36663 # check multiple-5 success:     1
36664 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
36665 INSERT INTO t1
36666 SET f_int1 = @cur_value , f_int2 = @cur_value,
36667 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
36668 f_charbig = '#SINGLE#';
36669         
36670 # check single-1 success:       1
36671 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
36672 INSERT INTO t1
36673 SET f_int1 = @cur_value , f_int2 = @cur_value,
36674 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
36675 f_charbig = '#SINGLE#';
36676         
36677 # check single-2 success:       1
36678 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
36679 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
36680 UPDATE t1 SET f_int1 = @cur_value2
36681 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
36682         
36683 # check single-3 success:       1
36684 SET @cur_value1= -1;
36685 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
36686 UPDATE t1 SET f_int1 = @cur_value1
36687 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
36688         
36689 # check single-4 success:       1
36690 SELECT MAX(f_int1) INTO @cur_value FROM t1;
36691 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
36692         
36693 # check single-5 success:       1
36694 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
36695         
36696 # check single-6 success:       1
36697 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
36698 ERROR HY000: Table has no partition for value 2147483647
36699 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
36700 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
36701 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
36702 f_charbig = '#NULL#';
36703 INSERT INTO t1
36704 SET f_int1 = NULL , f_int2 = -@max_row,
36705 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
36706 f_charbig = '#NULL#';
36707 # check null success:    1
36708         
36709 # check null-1 success:         1
36710 UPDATE t1 SET f_int1 = -@max_row
36711 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
36712 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
36713         
36714 # check null-2 success:         1
36715 UPDATE t1 SET f_int1 = NULL
36716 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
36717 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
36718         
36719 # check null-3 success:         1
36720 DELETE FROM t1
36721 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
36722 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
36723         
36724 # check null-4 success:         1
36725 DELETE FROM t1
36726 WHERE f_int1 = 0 AND f_int2 = 0
36727 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
36728 AND f_charbig = '#NULL#';
36729 SET AUTOCOMMIT= 0;
36730 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36731 SELECT f_int1, f_int1, '', '', 'was inserted'
36732 FROM t0_template source_tab
36733 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36734         
36735 # check transactions-1 success:         1
36736 COMMIT WORK;
36737         
36738 # check transactions-2 success:         1
36739 ROLLBACK WORK;
36740         
36741 # check transactions-3 success:         1
36742 DELETE FROM t1 WHERE f_charbig = 'was inserted';
36743 COMMIT WORK;
36744 ROLLBACK WORK;
36745         
36746 # check transactions-4 success:         1
36747 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36748 SELECT f_int1, f_int1, '', '', 'was inserted'
36749 FROM t0_template source_tab
36750 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36751         
36752 # check transactions-5 success:         1
36753 ROLLBACK WORK;
36754 Warnings:
36755 Warning 1196    Some non-transactional changed tables couldn't be rolled back
36756         
36757 # check transactions-6 success:         1
36758 # INFO: Storage engine used for t1 seems to be not transactional.
36759 COMMIT;
36760         
36761 # check transactions-7 success:         1
36762 DELETE FROM t1 WHERE f_charbig = 'was inserted';
36763 COMMIT WORK;
36764 SET @@session.sql_mode = 'traditional';
36765 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
36766 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36767 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
36768 '', '', 'was inserted' FROM t0_template
36769 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36770 ERROR 22012: Division by 0
36771 COMMIT;
36772         
36773 # check transactions-8 success:         1
36774 # INFO: Storage engine used for t1 seems to be unable to revert
36775 #       changes made by the failing statement.
36776 SET @@session.sql_mode = '';
36777 SET AUTOCOMMIT= 1;
36778 DELETE FROM t1 WHERE f_charbig = 'was inserted';
36779 COMMIT WORK;
36780 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
36781         
36782 # check special-1 success:      1
36783 UPDATE t1 SET f_charbig = '';
36784         
36785 # check special-2 success:      1
36786 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
36787 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36788 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
36789 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36790 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36791 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36792 'just inserted' FROM t0_template
36793 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36794 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
36795 BEGIN
36796 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36797 f_charbig = 'updated by trigger'
36798       WHERE f_int1 = new.f_int1;
36799 END|
36800 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36801 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
36802 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36803         
36804 # check trigger-1 success:      1
36805 DROP TRIGGER trg_1;
36806 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36807 f_int2 = CAST(f_char1 AS SIGNED INT),
36808 f_charbig = 'just inserted'
36809    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36810 DELETE FROM t0_aux
36811 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36812 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36813 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36814 'just inserted' FROM t0_template
36815 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36816 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
36817 BEGIN
36818 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36819 f_charbig = 'updated by trigger'
36820       WHERE f_int1 = new.f_int1;
36821 END|
36822 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36823 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
36824 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36825         
36826 # check trigger-2 success:      1
36827 DROP TRIGGER trg_1;
36828 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36829 f_int2 = CAST(f_char1 AS SIGNED INT),
36830 f_charbig = 'just inserted'
36831    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36832 DELETE FROM t0_aux
36833 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36834 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36835 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36836 'just inserted' FROM t0_template
36837 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36838 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
36839 BEGIN
36840 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36841 f_charbig = 'updated by trigger'
36842       WHERE f_int1 = new.f_int1;
36843 END|
36844 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
36845 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36846         
36847 # check trigger-3 success:      1
36848 DROP TRIGGER trg_1;
36849 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36850 f_int2 = CAST(f_char1 AS SIGNED INT),
36851 f_charbig = 'just inserted'
36852    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36853 DELETE FROM t0_aux
36854 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36855 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36856 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36857 'just inserted' FROM t0_template
36858 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36859 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
36860 BEGIN
36861 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36862 f_charbig = 'updated by trigger'
36863       WHERE f_int1 = - old.f_int1;
36864 END|
36865 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
36866 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36867         
36868 # check trigger-4 success:      1
36869 DROP TRIGGER trg_1;
36870 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36871 f_int2 = CAST(f_char1 AS SIGNED INT),
36872 f_charbig = 'just inserted'
36873    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36874 DELETE FROM t0_aux
36875 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36876 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36877 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36878 'just inserted' FROM t0_template
36879 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36880 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
36881 BEGIN
36882 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36883 f_charbig = 'updated by trigger'
36884       WHERE f_int1 = new.f_int1;
36885 END|
36886 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
36887 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36888         
36889 # check trigger-5 success:      1
36890 DROP TRIGGER trg_1;
36891 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36892 f_int2 = CAST(f_char1 AS SIGNED INT),
36893 f_charbig = 'just inserted'
36894    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36895 DELETE FROM t0_aux
36896 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36897 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36898 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36899 'just inserted' FROM t0_template
36900 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36901 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
36902 BEGIN
36903 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36904 f_charbig = 'updated by trigger'
36905       WHERE f_int1 = - old.f_int1;
36906 END|
36907 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
36908 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36909         
36910 # check trigger-6 success:      1
36911 DROP TRIGGER trg_1;
36912 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36913 f_int2 = CAST(f_char1 AS SIGNED INT),
36914 f_charbig = 'just inserted'
36915    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36916 DELETE FROM t0_aux
36917 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36918 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36919 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36920 'just inserted' FROM t0_template
36921 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36922 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
36923 BEGIN
36924 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36925 f_charbig = 'updated by trigger'
36926       WHERE f_int1 = - old.f_int1;
36927 END|
36928 DELETE FROM t0_aux
36929 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36930         
36931 # check trigger-7 success:      1
36932 DROP TRIGGER trg_1;
36933 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36934 f_int2 = CAST(f_char1 AS SIGNED INT),
36935 f_charbig = 'just inserted'
36936    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36937 DELETE FROM t0_aux
36938 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36939 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36940 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36941 'just inserted' FROM t0_template
36942 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36943 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
36944 BEGIN
36945 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36946 f_charbig = 'updated by trigger'
36947       WHERE f_int1 = - old.f_int1;
36948 END|
36949 DELETE FROM t0_aux
36950 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36951         
36952 # check trigger-8 success:      1
36953 DROP TRIGGER trg_1;
36954 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36955 f_int2 = CAST(f_char1 AS SIGNED INT),
36956 f_charbig = 'just inserted'
36957    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36958 DELETE FROM t0_aux
36959 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36960 DELETE FROM t1
36961 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36962 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36963 BEGIN
36964 SET new.f_int1 = old.f_int1 + @max_row,
36965 new.f_int2 = old.f_int2 - @max_row,
36966 new.f_charbig = '####updated per update trigger####';
36967 END|
36968 UPDATE t1
36969 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36970 f_charbig = '####updated per update statement itself####';
36971         
36972 # check trigger-9 success:      1
36973 DROP TRIGGER trg_2;
36974 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36975 f_int2 = CAST(f_char1 AS SIGNED INT),
36976 f_charbig = CONCAT('===',f_char1,'===');
36977 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36978 BEGIN
36979 SET new.f_int1 = new.f_int1 + @max_row,
36980 new.f_int2 = new.f_int2 - @max_row,
36981 new.f_charbig = '####updated per update trigger####';
36982 END|
36983 UPDATE t1
36984 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36985 f_charbig = '####updated per update statement itself####';
36986         
36987 # check trigger-10 success:     1
36988 DROP TRIGGER trg_2;
36989 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36990 f_int2 = CAST(f_char1 AS SIGNED INT),
36991 f_charbig = CONCAT('===',f_char1,'===');
36992 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36993 BEGIN
36994 SET new.f_int1 = @my_max1 + @counter,
36995 new.f_int2 = @my_min2 - @counter,
36996 new.f_charbig = '####updated per insert trigger####';
36997 SET @counter = @counter + 1;
36998 END|
36999 SET @counter = 1;
37000 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
37001 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37002 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
37003 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
37004 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
37005 ORDER BY f_int1;
37006 DROP TRIGGER trg_3;
37007         
37008 # check trigger-11 success:     1
37009 DELETE FROM t1
37010 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
37011 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
37012 AND f_charbig = '####updated per insert trigger####';
37013 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
37014 BEGIN
37015 SET new.f_int1 = @my_max1 + @counter,
37016 new.f_int2 = @my_min2 - @counter,
37017 new.f_charbig = '####updated per insert trigger####';
37018 SET @counter = @counter + 1;
37019 END|
37020 SET @counter = 1;
37021 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
37022 INSERT INTO t1 (f_char1, f_char2, f_charbig)
37023 SELECT CAST(f_int1 AS CHAR),
37024 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
37025 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
37026 ORDER BY f_int1;
37027 DROP TRIGGER trg_3;
37028         
37029 # check trigger-12 success:     1
37030 DELETE FROM t1
37031 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
37032 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
37033 AND f_charbig = '####updated per insert trigger####';
37034 ANALYZE  TABLE t1;
37035 Table   Op      Msg_type        Msg_text
37036 test.t1 analyze status  OK
37037 CHECK    TABLE t1 EXTENDED;
37038 Table   Op      Msg_type        Msg_text
37039 test.t1 check   status  OK
37040 CHECKSUM TABLE t1 EXTENDED;
37041 Table   Checksum
37042 test.t1 <some_value>
37043 OPTIMIZE TABLE t1;
37044 Table   Op      Msg_type        Msg_text
37045 test.t1 optimize        status  OK
37046 # check layout success:    1
37047 REPAIR   TABLE t1 EXTENDED;
37048 Table   Op      Msg_type        Msg_text
37049 test.t1 repair  status  OK
37050 # check layout success:    1
37051 TRUNCATE t1;
37052         
37053 # check TRUNCATE success:       1
37054 # check layout success:    1
37055 # End usability test (inc/partition_check.inc)
37056 DROP TABLE t1;
37057 CREATE TABLE t1 (
37058 f_int1 INTEGER,
37059 f_int2 INTEGER,
37060 f_char1 CHAR(20),
37061 f_char2 CHAR(20),
37062 f_charbig VARCHAR(1000)
37065 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
37066 (PARTITION part_1 VALUES LESS THAN (0),
37067 PARTITION part_2 VALUES LESS THAN (5),
37068 PARTITION part_3 VALUES LESS THAN (10),
37069 PARTITION part_4 VALUES LESS THAN (2147483646));
37070 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
37071 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
37072 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
37073 ALTER TABLE t1 CHECK PARTITION ALL;
37074 Table   Op      Msg_type        Msg_text
37075 test.t1 check   status  OK
37076 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
37077 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
37078 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
37079 # Start usability test (inc/partition_check.inc)
37080 create_command
37081 SHOW CREATE TABLE t1;
37082 Table   Create Table
37083 t1      CREATE TABLE `t1` (
37084   `f_int1` int(11) DEFAULT NULL,
37085   `f_int2` int(11) DEFAULT NULL,
37086   `f_char1` char(20) DEFAULT NULL,
37087   `f_char2` char(20) DEFAULT NULL,
37088   `f_charbig` varchar(1000) DEFAULT NULL
37089 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
37090 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
37091 SUBPARTITION BY HASH (f_int1)
37092 SUBPARTITIONS 2
37093 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
37094  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
37095  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
37096  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
37098 unified filelist
37099 t1#P#part_1#SP#part_1sp0.MYD
37100 t1#P#part_1#SP#part_1sp0.MYI
37101 t1#P#part_1#SP#part_1sp1.MYD
37102 t1#P#part_1#SP#part_1sp1.MYI
37103 t1#P#part_2#SP#part_2sp0.MYD
37104 t1#P#part_2#SP#part_2sp0.MYI
37105 t1#P#part_2#SP#part_2sp1.MYD
37106 t1#P#part_2#SP#part_2sp1.MYI
37107 t1#P#part_3#SP#part_3sp0.MYD
37108 t1#P#part_3#SP#part_3sp0.MYI
37109 t1#P#part_3#SP#part_3sp1.MYD
37110 t1#P#part_3#SP#part_3sp1.MYI
37111 t1#P#part_4#SP#part_4sp0.MYD
37112 t1#P#part_4#SP#part_4sp0.MYI
37113 t1#P#part_4#SP#part_4sp1.MYD
37114 t1#P#part_4#SP#part_4sp1.MYI
37115 t1.frm
37116 t1.par
37118 # check prerequisites-1 success:    1
37119 # check COUNT(*) success:    1
37120 # check MIN/MAX(f_int1) success:    1
37121 # check MIN/MAX(f_int2) success:    1
37122 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37123 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
37124 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
37125 WHERE f_int1 IN (2,3);
37126 # check prerequisites-3 success:    1
37127 DELETE FROM t1 WHERE f_charbig = 'delete me';
37128 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
37129 # check read via f_int1 success: 1
37130 # check read via f_int2 success: 1
37131         
37132 # check multiple-1 success:     1
37133 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
37134         
37135 # check multiple-2 success:     1
37136 INSERT INTO t1 SELECT * FROM t0_template
37137 WHERE MOD(f_int1,3) = 0;
37138         
37139 # check multiple-3 success:     1
37140 UPDATE t1 SET f_int1 = f_int1 + @max_row
37141 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
37142 AND @max_row_div2 + @max_row_div4;
37143         
37144 # check multiple-4 success:     1
37145 DELETE FROM t1
37146 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
37147 AND @max_row_div2 + @max_row_div4 + @max_row;
37148         
37149 # check multiple-5 success:     1
37150 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
37151 INSERT INTO t1
37152 SET f_int1 = @cur_value , f_int2 = @cur_value,
37153 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
37154 f_charbig = '#SINGLE#';
37155         
37156 # check single-1 success:       1
37157 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
37158 INSERT INTO t1
37159 SET f_int1 = @cur_value , f_int2 = @cur_value,
37160 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
37161 f_charbig = '#SINGLE#';
37162         
37163 # check single-2 success:       1
37164 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
37165 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
37166 UPDATE t1 SET f_int1 = @cur_value2
37167 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
37168         
37169 # check single-3 success:       1
37170 SET @cur_value1= -1;
37171 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
37172 UPDATE t1 SET f_int1 = @cur_value1
37173 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
37174         
37175 # check single-4 success:       1
37176 SELECT MAX(f_int1) INTO @cur_value FROM t1;
37177 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
37178         
37179 # check single-5 success:       1
37180 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
37181         
37182 # check single-6 success:       1
37183 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
37184         
37185 # check single-7 success:       1
37186 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
37187 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
37188 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
37189 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
37190 f_charbig = '#NULL#';
37191 INSERT INTO t1
37192 SET f_int1 = NULL , f_int2 = -@max_row,
37193 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
37194 f_charbig = '#NULL#';
37195 # check null success:    1
37196         
37197 # check null-1 success:         1
37198 UPDATE t1 SET f_int1 = -@max_row
37199 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
37200 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
37201         
37202 # check null-2 success:         1
37203 UPDATE t1 SET f_int1 = NULL
37204 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
37205 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
37206         
37207 # check null-3 success:         1
37208 DELETE FROM t1
37209 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
37210 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
37211         
37212 # check null-4 success:         1
37213 DELETE FROM t1
37214 WHERE f_int1 = 0 AND f_int2 = 0
37215 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
37216 AND f_charbig = '#NULL#';
37217 SET AUTOCOMMIT= 0;
37218 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37219 SELECT f_int1, f_int1, '', '', 'was inserted'
37220 FROM t0_template source_tab
37221 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37222         
37223 # check transactions-1 success:         1
37224 COMMIT WORK;
37225         
37226 # check transactions-2 success:         1
37227 ROLLBACK WORK;
37228         
37229 # check transactions-3 success:         1
37230 DELETE FROM t1 WHERE f_charbig = 'was inserted';
37231 COMMIT WORK;
37232 ROLLBACK WORK;
37233         
37234 # check transactions-4 success:         1
37235 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37236 SELECT f_int1, f_int1, '', '', 'was inserted'
37237 FROM t0_template source_tab
37238 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37239         
37240 # check transactions-5 success:         1
37241 ROLLBACK WORK;
37242 Warnings:
37243 Warning 1196    Some non-transactional changed tables couldn't be rolled back
37244         
37245 # check transactions-6 success:         1
37246 # INFO: Storage engine used for t1 seems to be not transactional.
37247 COMMIT;
37248         
37249 # check transactions-7 success:         1
37250 DELETE FROM t1 WHERE f_charbig = 'was inserted';
37251 COMMIT WORK;
37252 SET @@session.sql_mode = 'traditional';
37253 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
37254 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37255 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
37256 '', '', 'was inserted' FROM t0_template
37257 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37258 ERROR 22012: Division by 0
37259 COMMIT;
37260         
37261 # check transactions-8 success:         1
37262 # INFO: Storage engine used for t1 seems to be unable to revert
37263 #       changes made by the failing statement.
37264 SET @@session.sql_mode = '';
37265 SET AUTOCOMMIT= 1;
37266 DELETE FROM t1 WHERE f_charbig = 'was inserted';
37267 COMMIT WORK;
37268 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
37269         
37270 # check special-1 success:      1
37271 UPDATE t1 SET f_charbig = '';
37272         
37273 # check special-2 success:      1
37274 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
37275 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
37276 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
37277 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37278 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37279 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37280 'just inserted' FROM t0_template
37281 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37282 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
37283 BEGIN
37284 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37285 f_charbig = 'updated by trigger'
37286       WHERE f_int1 = new.f_int1;
37287 END|
37288 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37289 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
37290 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37291         
37292 # check trigger-1 success:      1
37293 DROP TRIGGER trg_1;
37294 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37295 f_int2 = CAST(f_char1 AS SIGNED INT),
37296 f_charbig = 'just inserted'
37297    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37298 DELETE FROM t0_aux
37299 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37300 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37301 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37302 'just inserted' FROM t0_template
37303 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37304 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
37305 BEGIN
37306 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37307 f_charbig = 'updated by trigger'
37308       WHERE f_int1 = new.f_int1;
37309 END|
37310 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37311 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
37312 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37313         
37314 # check trigger-2 success:      1
37315 DROP TRIGGER trg_1;
37316 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37317 f_int2 = CAST(f_char1 AS SIGNED INT),
37318 f_charbig = 'just inserted'
37319    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37320 DELETE FROM t0_aux
37321 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37322 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37323 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37324 'just inserted' FROM t0_template
37325 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37326 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
37327 BEGIN
37328 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37329 f_charbig = 'updated by trigger'
37330       WHERE f_int1 = new.f_int1;
37331 END|
37332 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
37333 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37334         
37335 # check trigger-3 success:      1
37336 DROP TRIGGER trg_1;
37337 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37338 f_int2 = CAST(f_char1 AS SIGNED INT),
37339 f_charbig = 'just inserted'
37340    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37341 DELETE FROM t0_aux
37342 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37343 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37344 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37345 'just inserted' FROM t0_template
37346 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37347 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
37348 BEGIN
37349 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37350 f_charbig = 'updated by trigger'
37351       WHERE f_int1 = - old.f_int1;
37352 END|
37353 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
37354 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37355         
37356 # check trigger-4 success:      1
37357 DROP TRIGGER trg_1;
37358 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37359 f_int2 = CAST(f_char1 AS SIGNED INT),
37360 f_charbig = 'just inserted'
37361    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37362 DELETE FROM t0_aux
37363 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37364 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37365 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37366 'just inserted' FROM t0_template
37367 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37368 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
37369 BEGIN
37370 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37371 f_charbig = 'updated by trigger'
37372       WHERE f_int1 = new.f_int1;
37373 END|
37374 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
37375 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37376         
37377 # check trigger-5 success:      1
37378 DROP TRIGGER trg_1;
37379 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37380 f_int2 = CAST(f_char1 AS SIGNED INT),
37381 f_charbig = 'just inserted'
37382    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37383 DELETE FROM t0_aux
37384 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37385 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37386 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37387 'just inserted' FROM t0_template
37388 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37389 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
37390 BEGIN
37391 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37392 f_charbig = 'updated by trigger'
37393       WHERE f_int1 = - old.f_int1;
37394 END|
37395 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
37396 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37397         
37398 # check trigger-6 success:      1
37399 DROP TRIGGER trg_1;
37400 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37401 f_int2 = CAST(f_char1 AS SIGNED INT),
37402 f_charbig = 'just inserted'
37403    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37404 DELETE FROM t0_aux
37405 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37406 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37407 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37408 'just inserted' FROM t0_template
37409 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37410 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
37411 BEGIN
37412 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37413 f_charbig = 'updated by trigger'
37414       WHERE f_int1 = - old.f_int1;
37415 END|
37416 DELETE FROM t0_aux
37417 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37418         
37419 # check trigger-7 success:      1
37420 DROP TRIGGER trg_1;
37421 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37422 f_int2 = CAST(f_char1 AS SIGNED INT),
37423 f_charbig = 'just inserted'
37424    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37425 DELETE FROM t0_aux
37426 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37427 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37428 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37429 'just inserted' FROM t0_template
37430 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37431 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
37432 BEGIN
37433 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37434 f_charbig = 'updated by trigger'
37435       WHERE f_int1 = - old.f_int1;
37436 END|
37437 DELETE FROM t0_aux
37438 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37439         
37440 # check trigger-8 success:      1
37441 DROP TRIGGER trg_1;
37442 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37443 f_int2 = CAST(f_char1 AS SIGNED INT),
37444 f_charbig = 'just inserted'
37445    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37446 DELETE FROM t0_aux
37447 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37448 DELETE FROM t1
37449 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37450 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
37451 BEGIN
37452 SET new.f_int1 = old.f_int1 + @max_row,
37453 new.f_int2 = old.f_int2 - @max_row,
37454 new.f_charbig = '####updated per update trigger####';
37455 END|
37456 UPDATE t1
37457 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
37458 f_charbig = '####updated per update statement itself####';
37459         
37460 # check trigger-9 success:      1
37461 DROP TRIGGER trg_2;
37462 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37463 f_int2 = CAST(f_char1 AS SIGNED INT),
37464 f_charbig = CONCAT('===',f_char1,'===');
37465 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
37466 BEGIN
37467 SET new.f_int1 = new.f_int1 + @max_row,
37468 new.f_int2 = new.f_int2 - @max_row,
37469 new.f_charbig = '####updated per update trigger####';
37470 END|
37471 UPDATE t1
37472 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
37473 f_charbig = '####updated per update statement itself####';
37474         
37475 # check trigger-10 success:     1
37476 DROP TRIGGER trg_2;
37477 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37478 f_int2 = CAST(f_char1 AS SIGNED INT),
37479 f_charbig = CONCAT('===',f_char1,'===');
37480 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
37481 BEGIN
37482 SET new.f_int1 = @my_max1 + @counter,
37483 new.f_int2 = @my_min2 - @counter,
37484 new.f_charbig = '####updated per insert trigger####';
37485 SET @counter = @counter + 1;
37486 END|
37487 SET @counter = 1;
37488 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
37489 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37490 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
37491 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
37492 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
37493 ORDER BY f_int1;
37494 DROP TRIGGER trg_3;
37495         
37496 # check trigger-11 success:     1
37497 DELETE FROM t1
37498 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
37499 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
37500 AND f_charbig = '####updated per insert trigger####';
37501 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
37502 BEGIN
37503 SET new.f_int1 = @my_max1 + @counter,
37504 new.f_int2 = @my_min2 - @counter,
37505 new.f_charbig = '####updated per insert trigger####';
37506 SET @counter = @counter + 1;
37507 END|
37508 SET @counter = 1;
37509 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
37510 INSERT INTO t1 (f_char1, f_char2, f_charbig)
37511 SELECT CAST(f_int1 AS CHAR),
37512 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
37513 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
37514 ORDER BY f_int1;
37515 DROP TRIGGER trg_3;
37516         
37517 # check trigger-12 success:     1
37518 DELETE FROM t1
37519 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
37520 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
37521 AND f_charbig = '####updated per insert trigger####';
37522 ANALYZE  TABLE t1;
37523 Table   Op      Msg_type        Msg_text
37524 test.t1 analyze status  OK
37525 CHECK    TABLE t1 EXTENDED;
37526 Table   Op      Msg_type        Msg_text
37527 test.t1 check   status  OK
37528 CHECKSUM TABLE t1 EXTENDED;
37529 Table   Checksum
37530 test.t1 <some_value>
37531 OPTIMIZE TABLE t1;
37532 Table   Op      Msg_type        Msg_text
37533 test.t1 optimize        status  OK
37534 # check layout success:    1
37535 REPAIR   TABLE t1 EXTENDED;
37536 Table   Op      Msg_type        Msg_text
37537 test.t1 repair  status  OK
37538 # check layout success:    1
37539 TRUNCATE t1;
37540         
37541 # check TRUNCATE success:       1
37542 # check layout success:    1
37543 # End usability test (inc/partition_check.inc)
37544 DROP TABLE t1;
37545 CREATE TABLE t1 (
37546 f_int1 INTEGER,
37547 f_int2 INTEGER,
37548 f_char1 CHAR(20),
37549 f_char2 CHAR(20),
37550 f_charbig VARCHAR(1000)
37553 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
37554 (PARTITION part_1 VALUES LESS THAN (0)
37555 (SUBPARTITION subpart11, SUBPARTITION subpart12),
37556 PARTITION part_2 VALUES LESS THAN (5)
37557 (SUBPARTITION subpart21, SUBPARTITION subpart22),
37558 PARTITION part_3 VALUES LESS THAN (10)
37559 (SUBPARTITION subpart31, SUBPARTITION subpart32),
37560 PARTITION part_4 VALUES LESS THAN (2147483646)
37561 (SUBPARTITION subpart41, SUBPARTITION subpart42));
37562 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
37563 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
37564 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
37565 ALTER TABLE t1 CHECK PARTITION ALL;
37566 Table   Op      Msg_type        Msg_text
37567 test.t1 check   status  OK
37568 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
37569 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
37570 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
37571 # Start usability test (inc/partition_check.inc)
37572 create_command
37573 SHOW CREATE TABLE t1;
37574 Table   Create Table
37575 t1      CREATE TABLE `t1` (
37576   `f_int1` int(11) DEFAULT NULL,
37577   `f_int2` int(11) DEFAULT NULL,
37578   `f_char1` char(20) DEFAULT NULL,
37579   `f_char2` char(20) DEFAULT NULL,
37580   `f_charbig` varchar(1000) DEFAULT NULL
37581 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
37582 /*!50100 PARTITION BY RANGE (f_int1)
37583 SUBPARTITION BY KEY (f_int1)
37584 (PARTITION part_1 VALUES LESS THAN (0)
37585  (SUBPARTITION subpart11 ENGINE = MyISAM,
37586   SUBPARTITION subpart12 ENGINE = MyISAM),
37587  PARTITION part_2 VALUES LESS THAN (5)
37588  (SUBPARTITION subpart21 ENGINE = MyISAM,
37589   SUBPARTITION subpart22 ENGINE = MyISAM),
37590  PARTITION part_3 VALUES LESS THAN (10)
37591  (SUBPARTITION subpart31 ENGINE = MyISAM,
37592   SUBPARTITION subpart32 ENGINE = MyISAM),
37593  PARTITION part_4 VALUES LESS THAN (2147483646)
37594  (SUBPARTITION subpart41 ENGINE = MyISAM,
37595   SUBPARTITION subpart42 ENGINE = MyISAM)) */
37597 unified filelist
37598 t1#P#part_1#SP#subpart11.MYD
37599 t1#P#part_1#SP#subpart11.MYI
37600 t1#P#part_1#SP#subpart12.MYD
37601 t1#P#part_1#SP#subpart12.MYI
37602 t1#P#part_2#SP#subpart21.MYD
37603 t1#P#part_2#SP#subpart21.MYI
37604 t1#P#part_2#SP#subpart22.MYD
37605 t1#P#part_2#SP#subpart22.MYI
37606 t1#P#part_3#SP#subpart31.MYD
37607 t1#P#part_3#SP#subpart31.MYI
37608 t1#P#part_3#SP#subpart32.MYD
37609 t1#P#part_3#SP#subpart32.MYI
37610 t1#P#part_4#SP#subpart41.MYD
37611 t1#P#part_4#SP#subpart41.MYI
37612 t1#P#part_4#SP#subpart42.MYD
37613 t1#P#part_4#SP#subpart42.MYI
37614 t1.frm
37615 t1.par
37617 # check prerequisites-1 success:    1
37618 # check COUNT(*) success:    1
37619 # check MIN/MAX(f_int1) success:    1
37620 # check MIN/MAX(f_int2) success:    1
37621 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37622 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
37623 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
37624 WHERE f_int1 IN (2,3);
37625 # check prerequisites-3 success:    1
37626 DELETE FROM t1 WHERE f_charbig = 'delete me';
37627 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
37628 # check read via f_int1 success: 1
37629 # check read via f_int2 success: 1
37630         
37631 # check multiple-1 success:     1
37632 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
37633         
37634 # check multiple-2 success:     1
37635 INSERT INTO t1 SELECT * FROM t0_template
37636 WHERE MOD(f_int1,3) = 0;
37637         
37638 # check multiple-3 success:     1
37639 UPDATE t1 SET f_int1 = f_int1 + @max_row
37640 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
37641 AND @max_row_div2 + @max_row_div4;
37642         
37643 # check multiple-4 success:     1
37644 DELETE FROM t1
37645 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
37646 AND @max_row_div2 + @max_row_div4 + @max_row;
37647         
37648 # check multiple-5 success:     1
37649 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
37650 INSERT INTO t1
37651 SET f_int1 = @cur_value , f_int2 = @cur_value,
37652 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
37653 f_charbig = '#SINGLE#';
37654         
37655 # check single-1 success:       1
37656 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
37657 INSERT INTO t1
37658 SET f_int1 = @cur_value , f_int2 = @cur_value,
37659 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
37660 f_charbig = '#SINGLE#';
37661         
37662 # check single-2 success:       1
37663 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
37664 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
37665 UPDATE t1 SET f_int1 = @cur_value2
37666 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
37667         
37668 # check single-3 success:       1
37669 SET @cur_value1= -1;
37670 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
37671 UPDATE t1 SET f_int1 = @cur_value1
37672 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
37673         
37674 # check single-4 success:       1
37675 SELECT MAX(f_int1) INTO @cur_value FROM t1;
37676 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
37677         
37678 # check single-5 success:       1
37679 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
37680         
37681 # check single-6 success:       1
37682 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
37683 ERROR HY000: Table has no partition for value 2147483647
37684 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
37685 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
37686 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
37687 f_charbig = '#NULL#';
37688 INSERT INTO t1
37689 SET f_int1 = NULL , f_int2 = -@max_row,
37690 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
37691 f_charbig = '#NULL#';
37692 # check null success:    1
37693         
37694 # check null-1 success:         1
37695 UPDATE t1 SET f_int1 = -@max_row
37696 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
37697 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
37698         
37699 # check null-2 success:         1
37700 UPDATE t1 SET f_int1 = NULL
37701 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
37702 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
37703         
37704 # check null-3 success:         1
37705 DELETE FROM t1
37706 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
37707 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
37708         
37709 # check null-4 success:         1
37710 DELETE FROM t1
37711 WHERE f_int1 = 0 AND f_int2 = 0
37712 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
37713 AND f_charbig = '#NULL#';
37714 SET AUTOCOMMIT= 0;
37715 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37716 SELECT f_int1, f_int1, '', '', 'was inserted'
37717 FROM t0_template source_tab
37718 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37719         
37720 # check transactions-1 success:         1
37721 COMMIT WORK;
37722         
37723 # check transactions-2 success:         1
37724 ROLLBACK WORK;
37725         
37726 # check transactions-3 success:         1
37727 DELETE FROM t1 WHERE f_charbig = 'was inserted';
37728 COMMIT WORK;
37729 ROLLBACK WORK;
37730         
37731 # check transactions-4 success:         1
37732 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37733 SELECT f_int1, f_int1, '', '', 'was inserted'
37734 FROM t0_template source_tab
37735 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37736         
37737 # check transactions-5 success:         1
37738 ROLLBACK WORK;
37739 Warnings:
37740 Warning 1196    Some non-transactional changed tables couldn't be rolled back
37741         
37742 # check transactions-6 success:         1
37743 # INFO: Storage engine used for t1 seems to be not transactional.
37744 COMMIT;
37745         
37746 # check transactions-7 success:         1
37747 DELETE FROM t1 WHERE f_charbig = 'was inserted';
37748 COMMIT WORK;
37749 SET @@session.sql_mode = 'traditional';
37750 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
37751 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37752 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
37753 '', '', 'was inserted' FROM t0_template
37754 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37755 ERROR 22012: Division by 0
37756 COMMIT;
37757         
37758 # check transactions-8 success:         1
37759 # INFO: Storage engine used for t1 seems to be unable to revert
37760 #       changes made by the failing statement.
37761 SET @@session.sql_mode = '';
37762 SET AUTOCOMMIT= 1;
37763 DELETE FROM t1 WHERE f_charbig = 'was inserted';
37764 COMMIT WORK;
37765 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
37766         
37767 # check special-1 success:      1
37768 UPDATE t1 SET f_charbig = '';
37769         
37770 # check special-2 success:      1
37771 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
37772 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
37773 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
37774 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37775 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37776 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37777 'just inserted' FROM t0_template
37778 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37779 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
37780 BEGIN
37781 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37782 f_charbig = 'updated by trigger'
37783       WHERE f_int1 = new.f_int1;
37784 END|
37785 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37786 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
37787 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37788         
37789 # check trigger-1 success:      1
37790 DROP TRIGGER trg_1;
37791 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37792 f_int2 = CAST(f_char1 AS SIGNED INT),
37793 f_charbig = 'just inserted'
37794    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37795 DELETE FROM t0_aux
37796 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37797 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37798 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37799 'just inserted' FROM t0_template
37800 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37801 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
37802 BEGIN
37803 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37804 f_charbig = 'updated by trigger'
37805       WHERE f_int1 = new.f_int1;
37806 END|
37807 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37808 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
37809 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37810         
37811 # check trigger-2 success:      1
37812 DROP TRIGGER trg_1;
37813 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37814 f_int2 = CAST(f_char1 AS SIGNED INT),
37815 f_charbig = 'just inserted'
37816    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37817 DELETE FROM t0_aux
37818 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37819 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37820 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37821 'just inserted' FROM t0_template
37822 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37823 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
37824 BEGIN
37825 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37826 f_charbig = 'updated by trigger'
37827       WHERE f_int1 = new.f_int1;
37828 END|
37829 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
37830 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37831         
37832 # check trigger-3 success:      1
37833 DROP TRIGGER trg_1;
37834 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37835 f_int2 = CAST(f_char1 AS SIGNED INT),
37836 f_charbig = 'just inserted'
37837    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37838 DELETE FROM t0_aux
37839 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37840 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37841 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37842 'just inserted' FROM t0_template
37843 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37844 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
37845 BEGIN
37846 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37847 f_charbig = 'updated by trigger'
37848       WHERE f_int1 = - old.f_int1;
37849 END|
37850 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
37851 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37852         
37853 # check trigger-4 success:      1
37854 DROP TRIGGER trg_1;
37855 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37856 f_int2 = CAST(f_char1 AS SIGNED INT),
37857 f_charbig = 'just inserted'
37858    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37859 DELETE FROM t0_aux
37860 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37861 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37862 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37863 'just inserted' FROM t0_template
37864 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37865 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
37866 BEGIN
37867 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37868 f_charbig = 'updated by trigger'
37869       WHERE f_int1 = new.f_int1;
37870 END|
37871 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
37872 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37873         
37874 # check trigger-5 success:      1
37875 DROP TRIGGER trg_1;
37876 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37877 f_int2 = CAST(f_char1 AS SIGNED INT),
37878 f_charbig = 'just inserted'
37879    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37880 DELETE FROM t0_aux
37881 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37882 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37883 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37884 'just inserted' FROM t0_template
37885 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37886 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
37887 BEGIN
37888 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37889 f_charbig = 'updated by trigger'
37890       WHERE f_int1 = - old.f_int1;
37891 END|
37892 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
37893 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37894         
37895 # check trigger-6 success:      1
37896 DROP TRIGGER trg_1;
37897 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37898 f_int2 = CAST(f_char1 AS SIGNED INT),
37899 f_charbig = 'just inserted'
37900    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37901 DELETE FROM t0_aux
37902 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37903 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37904 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37905 'just inserted' FROM t0_template
37906 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37907 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
37908 BEGIN
37909 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37910 f_charbig = 'updated by trigger'
37911       WHERE f_int1 = - old.f_int1;
37912 END|
37913 DELETE FROM t0_aux
37914 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37915         
37916 # check trigger-7 success:      1
37917 DROP TRIGGER trg_1;
37918 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37919 f_int2 = CAST(f_char1 AS SIGNED INT),
37920 f_charbig = 'just inserted'
37921    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37922 DELETE FROM t0_aux
37923 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37924 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37925 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37926 'just inserted' FROM t0_template
37927 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37928 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
37929 BEGIN
37930 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37931 f_charbig = 'updated by trigger'
37932       WHERE f_int1 = - old.f_int1;
37933 END|
37934 DELETE FROM t0_aux
37935 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37936         
37937 # check trigger-8 success:      1
37938 DROP TRIGGER trg_1;
37939 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37940 f_int2 = CAST(f_char1 AS SIGNED INT),
37941 f_charbig = 'just inserted'
37942    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37943 DELETE FROM t0_aux
37944 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37945 DELETE FROM t1
37946 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37947 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
37948 BEGIN
37949 SET new.f_int1 = old.f_int1 + @max_row,
37950 new.f_int2 = old.f_int2 - @max_row,
37951 new.f_charbig = '####updated per update trigger####';
37952 END|
37953 UPDATE t1
37954 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
37955 f_charbig = '####updated per update statement itself####';
37956         
37957 # check trigger-9 success:      1
37958 DROP TRIGGER trg_2;
37959 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37960 f_int2 = CAST(f_char1 AS SIGNED INT),
37961 f_charbig = CONCAT('===',f_char1,'===');
37962 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
37963 BEGIN
37964 SET new.f_int1 = new.f_int1 + @max_row,
37965 new.f_int2 = new.f_int2 - @max_row,
37966 new.f_charbig = '####updated per update trigger####';
37967 END|
37968 UPDATE t1
37969 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
37970 f_charbig = '####updated per update statement itself####';
37971         
37972 # check trigger-10 success:     1
37973 DROP TRIGGER trg_2;
37974 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37975 f_int2 = CAST(f_char1 AS SIGNED INT),
37976 f_charbig = CONCAT('===',f_char1,'===');
37977 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
37978 BEGIN
37979 SET new.f_int1 = @my_max1 + @counter,
37980 new.f_int2 = @my_min2 - @counter,
37981 new.f_charbig = '####updated per insert trigger####';
37982 SET @counter = @counter + 1;
37983 END|
37984 SET @counter = 1;
37985 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
37986 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37987 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
37988 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
37989 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
37990 ORDER BY f_int1;
37991 DROP TRIGGER trg_3;
37992         
37993 # check trigger-11 success:     1
37994 DELETE FROM t1
37995 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
37996 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
37997 AND f_charbig = '####updated per insert trigger####';
37998 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
37999 BEGIN
38000 SET new.f_int1 = @my_max1 + @counter,
38001 new.f_int2 = @my_min2 - @counter,
38002 new.f_charbig = '####updated per insert trigger####';
38003 SET @counter = @counter + 1;
38004 END|
38005 SET @counter = 1;
38006 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
38007 INSERT INTO t1 (f_char1, f_char2, f_charbig)
38008 SELECT CAST(f_int1 AS CHAR),
38009 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
38010 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
38011 ORDER BY f_int1;
38012 DROP TRIGGER trg_3;
38013         
38014 # check trigger-12 success:     1
38015 DELETE FROM t1
38016 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
38017 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
38018 AND f_charbig = '####updated per insert trigger####';
38019 ANALYZE  TABLE t1;
38020 Table   Op      Msg_type        Msg_text
38021 test.t1 analyze status  OK
38022 CHECK    TABLE t1 EXTENDED;
38023 Table   Op      Msg_type        Msg_text
38024 test.t1 check   status  OK
38025 CHECKSUM TABLE t1 EXTENDED;
38026 Table   Checksum
38027 test.t1 <some_value>
38028 OPTIMIZE TABLE t1;
38029 Table   Op      Msg_type        Msg_text
38030 test.t1 optimize        status  OK
38031 # check layout success:    1
38032 REPAIR   TABLE t1 EXTENDED;
38033 Table   Op      Msg_type        Msg_text
38034 test.t1 repair  status  OK
38035 # check layout success:    1
38036 TRUNCATE t1;
38037         
38038 # check TRUNCATE success:       1
38039 # check layout success:    1
38040 # End usability test (inc/partition_check.inc)
38041 DROP TABLE t1;
38042 CREATE TABLE t1 (
38043 f_int1 INTEGER,
38044 f_int2 INTEGER,
38045 f_char1 CHAR(20),
38046 f_char2 CHAR(20),
38047 f_charbig VARCHAR(1000)
38050 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
38051 (PARTITION part_1 VALUES IN (0)
38052 (SUBPARTITION sp11, SUBPARTITION sp12),
38053 PARTITION part_2 VALUES IN (1)
38054 (SUBPARTITION sp21, SUBPARTITION sp22),
38055 PARTITION part_3 VALUES IN (2)
38056 (SUBPARTITION sp31, SUBPARTITION sp32),
38057 PARTITION part_4 VALUES IN (NULL)
38058 (SUBPARTITION sp41, SUBPARTITION sp42));
38059 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
38060 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
38061 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
38062 ALTER TABLE t1 CHECK PARTITION ALL;
38063 Table   Op      Msg_type        Msg_text
38064 test.t1 check   status  OK
38065 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
38066 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
38067 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
38068 # Start usability test (inc/partition_check.inc)
38069 create_command
38070 SHOW CREATE TABLE t1;
38071 Table   Create Table
38072 t1      CREATE TABLE `t1` (
38073   `f_int1` int(11) DEFAULT NULL,
38074   `f_int2` int(11) DEFAULT NULL,
38075   `f_char1` char(20) DEFAULT NULL,
38076   `f_char2` char(20) DEFAULT NULL,
38077   `f_charbig` varchar(1000) DEFAULT NULL
38078 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
38079 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
38080 SUBPARTITION BY HASH (f_int1 + 1)
38081 (PARTITION part_1 VALUES IN (0)
38082  (SUBPARTITION sp11 ENGINE = MyISAM,
38083   SUBPARTITION sp12 ENGINE = MyISAM),
38084  PARTITION part_2 VALUES IN (1)
38085  (SUBPARTITION sp21 ENGINE = MyISAM,
38086   SUBPARTITION sp22 ENGINE = MyISAM),
38087  PARTITION part_3 VALUES IN (2)
38088  (SUBPARTITION sp31 ENGINE = MyISAM,
38089   SUBPARTITION sp32 ENGINE = MyISAM),
38090  PARTITION part_4 VALUES IN (NULL)
38091  (SUBPARTITION sp41 ENGINE = MyISAM,
38092   SUBPARTITION sp42 ENGINE = MyISAM)) */
38094 unified filelist
38095 t1#P#part_1#SP#sp11.MYD
38096 t1#P#part_1#SP#sp11.MYI
38097 t1#P#part_1#SP#sp12.MYD
38098 t1#P#part_1#SP#sp12.MYI
38099 t1#P#part_2#SP#sp21.MYD
38100 t1#P#part_2#SP#sp21.MYI
38101 t1#P#part_2#SP#sp22.MYD
38102 t1#P#part_2#SP#sp22.MYI
38103 t1#P#part_3#SP#sp31.MYD
38104 t1#P#part_3#SP#sp31.MYI
38105 t1#P#part_3#SP#sp32.MYD
38106 t1#P#part_3#SP#sp32.MYI
38107 t1#P#part_4#SP#sp41.MYD
38108 t1#P#part_4#SP#sp41.MYI
38109 t1#P#part_4#SP#sp42.MYD
38110 t1#P#part_4#SP#sp42.MYI
38111 t1.frm
38112 t1.par
38114 # check prerequisites-1 success:    1
38115 # check COUNT(*) success:    1
38116 # check MIN/MAX(f_int1) success:    1
38117 # check MIN/MAX(f_int2) success:    1
38118 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38119 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
38120 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
38121 WHERE f_int1 IN (2,3);
38122 # check prerequisites-3 success:    1
38123 DELETE FROM t1 WHERE f_charbig = 'delete me';
38124 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
38125 # check read via f_int1 success: 1
38126 # check read via f_int2 success: 1
38127         
38128 # check multiple-1 success:     1
38129 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
38130         
38131 # check multiple-2 success:     1
38132 INSERT INTO t1 SELECT * FROM t0_template
38133 WHERE MOD(f_int1,3) = 0;
38134         
38135 # check multiple-3 success:     1
38136 UPDATE t1 SET f_int1 = f_int1 + @max_row
38137 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
38138 AND @max_row_div2 + @max_row_div4;
38139         
38140 # check multiple-4 success:     1
38141 DELETE FROM t1
38142 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
38143 AND @max_row_div2 + @max_row_div4 + @max_row;
38144         
38145 # check multiple-5 success:     1
38146 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
38147 INSERT INTO t1
38148 SET f_int1 = @cur_value , f_int2 = @cur_value,
38149 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
38150 f_charbig = '#SINGLE#';
38151         
38152 # check single-1 success:       1
38153 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
38154 INSERT INTO t1
38155 SET f_int1 = @cur_value , f_int2 = @cur_value,
38156 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
38157 f_charbig = '#SINGLE#';
38158         
38159 # check single-2 success:       1
38160 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
38161 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
38162 UPDATE t1 SET f_int1 = @cur_value2
38163 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
38164         
38165 # check single-3 success:       1
38166 SET @cur_value1= -1;
38167 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
38168 UPDATE t1 SET f_int1 = @cur_value1
38169 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
38170         
38171 # check single-4 success:       1
38172 SELECT MAX(f_int1) INTO @cur_value FROM t1;
38173 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
38174         
38175 # check single-5 success:       1
38176 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
38177         
38178 # check single-6 success:       1
38179 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
38180         
38181 # check single-7 success:       1
38182 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
38183 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
38184 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
38185 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
38186 f_charbig = '#NULL#';
38187 INSERT INTO t1
38188 SET f_int1 = NULL , f_int2 = -@max_row,
38189 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
38190 f_charbig = '#NULL#';
38191 # check null success:    1
38192         
38193 # check null-1 success:         1
38194 UPDATE t1 SET f_int1 = -@max_row
38195 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
38196 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
38197         
38198 # check null-2 success:         1
38199 UPDATE t1 SET f_int1 = NULL
38200 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
38201 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
38202         
38203 # check null-3 success:         1
38204 DELETE FROM t1
38205 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
38206 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
38207         
38208 # check null-4 success:         1
38209 DELETE FROM t1
38210 WHERE f_int1 = 0 AND f_int2 = 0
38211 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
38212 AND f_charbig = '#NULL#';
38213 SET AUTOCOMMIT= 0;
38214 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38215 SELECT f_int1, f_int1, '', '', 'was inserted'
38216 FROM t0_template source_tab
38217 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
38218         
38219 # check transactions-1 success:         1
38220 COMMIT WORK;
38221         
38222 # check transactions-2 success:         1
38223 ROLLBACK WORK;
38224         
38225 # check transactions-3 success:         1
38226 DELETE FROM t1 WHERE f_charbig = 'was inserted';
38227 COMMIT WORK;
38228 ROLLBACK WORK;
38229         
38230 # check transactions-4 success:         1
38231 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38232 SELECT f_int1, f_int1, '', '', 'was inserted'
38233 FROM t0_template source_tab
38234 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
38235         
38236 # check transactions-5 success:         1
38237 ROLLBACK WORK;
38238 Warnings:
38239 Warning 1196    Some non-transactional changed tables couldn't be rolled back
38240         
38241 # check transactions-6 success:         1
38242 # INFO: Storage engine used for t1 seems to be not transactional.
38243 COMMIT;
38244         
38245 # check transactions-7 success:         1
38246 DELETE FROM t1 WHERE f_charbig = 'was inserted';
38247 COMMIT WORK;
38248 SET @@session.sql_mode = 'traditional';
38249 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
38250 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38251 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
38252 '', '', 'was inserted' FROM t0_template
38253 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
38254 ERROR 22012: Division by 0
38255 COMMIT;
38256         
38257 # check transactions-8 success:         1
38258 # INFO: Storage engine used for t1 seems to be unable to revert
38259 #       changes made by the failing statement.
38260 SET @@session.sql_mode = '';
38261 SET AUTOCOMMIT= 1;
38262 DELETE FROM t1 WHERE f_charbig = 'was inserted';
38263 COMMIT WORK;
38264 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
38265         
38266 # check special-1 success:      1
38267 UPDATE t1 SET f_charbig = '';
38268         
38269 # check special-2 success:      1
38270 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
38271 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
38272 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
38273 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38274 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38275 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38276 'just inserted' FROM t0_template
38277 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38278 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
38279 BEGIN
38280 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38281 f_charbig = 'updated by trigger'
38282       WHERE f_int1 = new.f_int1;
38283 END|
38284 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38285 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
38286 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38287         
38288 # check trigger-1 success:      1
38289 DROP TRIGGER trg_1;
38290 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38291 f_int2 = CAST(f_char1 AS SIGNED INT),
38292 f_charbig = 'just inserted'
38293    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38294 DELETE FROM t0_aux
38295 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38296 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38297 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38298 'just inserted' FROM t0_template
38299 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38300 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
38301 BEGIN
38302 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38303 f_charbig = 'updated by trigger'
38304       WHERE f_int1 = new.f_int1;
38305 END|
38306 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38307 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
38308 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38309         
38310 # check trigger-2 success:      1
38311 DROP TRIGGER trg_1;
38312 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38313 f_int2 = CAST(f_char1 AS SIGNED INT),
38314 f_charbig = 'just inserted'
38315    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38316 DELETE FROM t0_aux
38317 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38318 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38319 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38320 'just inserted' FROM t0_template
38321 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38322 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
38323 BEGIN
38324 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38325 f_charbig = 'updated by trigger'
38326       WHERE f_int1 = new.f_int1;
38327 END|
38328 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
38329 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38330         
38331 # check trigger-3 success:      1
38332 DROP TRIGGER trg_1;
38333 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38334 f_int2 = CAST(f_char1 AS SIGNED INT),
38335 f_charbig = 'just inserted'
38336    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38337 DELETE FROM t0_aux
38338 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38339 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38340 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38341 'just inserted' FROM t0_template
38342 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38343 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
38344 BEGIN
38345 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38346 f_charbig = 'updated by trigger'
38347       WHERE f_int1 = - old.f_int1;
38348 END|
38349 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
38350 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38351         
38352 # check trigger-4 success:      1
38353 DROP TRIGGER trg_1;
38354 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38355 f_int2 = CAST(f_char1 AS SIGNED INT),
38356 f_charbig = 'just inserted'
38357    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38358 DELETE FROM t0_aux
38359 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38360 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38361 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38362 'just inserted' FROM t0_template
38363 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38364 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
38365 BEGIN
38366 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38367 f_charbig = 'updated by trigger'
38368       WHERE f_int1 = new.f_int1;
38369 END|
38370 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
38371 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38372         
38373 # check trigger-5 success:      1
38374 DROP TRIGGER trg_1;
38375 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38376 f_int2 = CAST(f_char1 AS SIGNED INT),
38377 f_charbig = 'just inserted'
38378    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38379 DELETE FROM t0_aux
38380 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38381 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38382 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38383 'just inserted' FROM t0_template
38384 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38385 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
38386 BEGIN
38387 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38388 f_charbig = 'updated by trigger'
38389       WHERE f_int1 = - old.f_int1;
38390 END|
38391 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
38392 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38393         
38394 # check trigger-6 success:      1
38395 DROP TRIGGER trg_1;
38396 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38397 f_int2 = CAST(f_char1 AS SIGNED INT),
38398 f_charbig = 'just inserted'
38399    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38400 DELETE FROM t0_aux
38401 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38402 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38403 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38404 'just inserted' FROM t0_template
38405 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38406 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
38407 BEGIN
38408 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38409 f_charbig = 'updated by trigger'
38410       WHERE f_int1 = - old.f_int1;
38411 END|
38412 DELETE FROM t0_aux
38413 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38414         
38415 # check trigger-7 success:      1
38416 DROP TRIGGER trg_1;
38417 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38418 f_int2 = CAST(f_char1 AS SIGNED INT),
38419 f_charbig = 'just inserted'
38420    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38421 DELETE FROM t0_aux
38422 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38423 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38424 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38425 'just inserted' FROM t0_template
38426 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38427 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
38428 BEGIN
38429 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38430 f_charbig = 'updated by trigger'
38431       WHERE f_int1 = - old.f_int1;
38432 END|
38433 DELETE FROM t0_aux
38434 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38435         
38436 # check trigger-8 success:      1
38437 DROP TRIGGER trg_1;
38438 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38439 f_int2 = CAST(f_char1 AS SIGNED INT),
38440 f_charbig = 'just inserted'
38441    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38442 DELETE FROM t0_aux
38443 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38444 DELETE FROM t1
38445 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38446 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
38447 BEGIN
38448 SET new.f_int1 = old.f_int1 + @max_row,
38449 new.f_int2 = old.f_int2 - @max_row,
38450 new.f_charbig = '####updated per update trigger####';
38451 END|
38452 UPDATE t1
38453 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
38454 f_charbig = '####updated per update statement itself####';
38455         
38456 # check trigger-9 success:      1
38457 DROP TRIGGER trg_2;
38458 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38459 f_int2 = CAST(f_char1 AS SIGNED INT),
38460 f_charbig = CONCAT('===',f_char1,'===');
38461 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
38462 BEGIN
38463 SET new.f_int1 = new.f_int1 + @max_row,
38464 new.f_int2 = new.f_int2 - @max_row,
38465 new.f_charbig = '####updated per update trigger####';
38466 END|
38467 UPDATE t1
38468 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
38469 f_charbig = '####updated per update statement itself####';
38470         
38471 # check trigger-10 success:     1
38472 DROP TRIGGER trg_2;
38473 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38474 f_int2 = CAST(f_char1 AS SIGNED INT),
38475 f_charbig = CONCAT('===',f_char1,'===');
38476 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
38477 BEGIN
38478 SET new.f_int1 = @my_max1 + @counter,
38479 new.f_int2 = @my_min2 - @counter,
38480 new.f_charbig = '####updated per insert trigger####';
38481 SET @counter = @counter + 1;
38482 END|
38483 SET @counter = 1;
38484 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
38485 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38486 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
38487 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
38488 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
38489 ORDER BY f_int1;
38490 DROP TRIGGER trg_3;
38491         
38492 # check trigger-11 success:     1
38493 DELETE FROM t1
38494 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
38495 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
38496 AND f_charbig = '####updated per insert trigger####';
38497 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
38498 BEGIN
38499 SET new.f_int1 = @my_max1 + @counter,
38500 new.f_int2 = @my_min2 - @counter,
38501 new.f_charbig = '####updated per insert trigger####';
38502 SET @counter = @counter + 1;
38503 END|
38504 SET @counter = 1;
38505 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
38506 INSERT INTO t1 (f_char1, f_char2, f_charbig)
38507 SELECT CAST(f_int1 AS CHAR),
38508 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
38509 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
38510 ORDER BY f_int1;
38511 DROP TRIGGER trg_3;
38512         
38513 # check trigger-12 success:     1
38514 DELETE FROM t1
38515 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
38516 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
38517 AND f_charbig = '####updated per insert trigger####';
38518 ANALYZE  TABLE t1;
38519 Table   Op      Msg_type        Msg_text
38520 test.t1 analyze status  OK
38521 CHECK    TABLE t1 EXTENDED;
38522 Table   Op      Msg_type        Msg_text
38523 test.t1 check   status  OK
38524 CHECKSUM TABLE t1 EXTENDED;
38525 Table   Checksum
38526 test.t1 <some_value>
38527 OPTIMIZE TABLE t1;
38528 Table   Op      Msg_type        Msg_text
38529 test.t1 optimize        status  OK
38530 # check layout success:    1
38531 REPAIR   TABLE t1 EXTENDED;
38532 Table   Op      Msg_type        Msg_text
38533 test.t1 repair  status  OK
38534 # check layout success:    1
38535 TRUNCATE t1;
38536         
38537 # check TRUNCATE success:       1
38538 # check layout success:    1
38539 # End usability test (inc/partition_check.inc)
38540 DROP TABLE t1;
38541 CREATE TABLE t1 (
38542 f_int1 INTEGER,
38543 f_int2 INTEGER,
38544 f_char1 CHAR(20),
38545 f_char2 CHAR(20),
38546 f_charbig VARCHAR(1000)
38549 PARTITION BY LIST(ABS(MOD(f_int1,2)))
38550 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
38551 (PARTITION part_1 VALUES IN (0),
38552  PARTITION part_2 VALUES IN (1),
38553  PARTITION part_3 VALUES IN (NULL));
38554 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
38555 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
38556 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
38557 ALTER TABLE t1 CHECK PARTITION ALL;
38558 Table   Op      Msg_type        Msg_text
38559 test.t1 check   status  OK
38560 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
38561 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
38562 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
38563 # Start usability test (inc/partition_check.inc)
38564 create_command
38565 SHOW CREATE TABLE t1;
38566 Table   Create Table
38567 t1      CREATE TABLE `t1` (
38568   `f_int1` int(11) DEFAULT NULL,
38569   `f_int2` int(11) DEFAULT NULL,
38570   `f_char1` char(20) DEFAULT NULL,
38571   `f_char2` char(20) DEFAULT NULL,
38572   `f_charbig` varchar(1000) DEFAULT NULL
38573 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
38574 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
38575 SUBPARTITION BY KEY (f_int1)
38576 SUBPARTITIONS 3
38577 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
38578  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
38579  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
38581 unified filelist
38582 t1#P#part_1#SP#part_1sp0.MYD
38583 t1#P#part_1#SP#part_1sp0.MYI
38584 t1#P#part_1#SP#part_1sp1.MYD
38585 t1#P#part_1#SP#part_1sp1.MYI
38586 t1#P#part_1#SP#part_1sp2.MYD
38587 t1#P#part_1#SP#part_1sp2.MYI
38588 t1#P#part_2#SP#part_2sp0.MYD
38589 t1#P#part_2#SP#part_2sp0.MYI
38590 t1#P#part_2#SP#part_2sp1.MYD
38591 t1#P#part_2#SP#part_2sp1.MYI
38592 t1#P#part_2#SP#part_2sp2.MYD
38593 t1#P#part_2#SP#part_2sp2.MYI
38594 t1#P#part_3#SP#part_3sp0.MYD
38595 t1#P#part_3#SP#part_3sp0.MYI
38596 t1#P#part_3#SP#part_3sp1.MYD
38597 t1#P#part_3#SP#part_3sp1.MYI
38598 t1#P#part_3#SP#part_3sp2.MYD
38599 t1#P#part_3#SP#part_3sp2.MYI
38600 t1.frm
38601 t1.par
38603 # check prerequisites-1 success:    1
38604 # check COUNT(*) success:    1
38605 # check MIN/MAX(f_int1) success:    1
38606 # check MIN/MAX(f_int2) success:    1
38607 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38608 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
38609 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
38610 WHERE f_int1 IN (2,3);
38611 # check prerequisites-3 success:    1
38612 DELETE FROM t1 WHERE f_charbig = 'delete me';
38613 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
38614 # check read via f_int1 success: 1
38615 # check read via f_int2 success: 1
38616         
38617 # check multiple-1 success:     1
38618 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
38619         
38620 # check multiple-2 success:     1
38621 INSERT INTO t1 SELECT * FROM t0_template
38622 WHERE MOD(f_int1,3) = 0;
38623         
38624 # check multiple-3 success:     1
38625 UPDATE t1 SET f_int1 = f_int1 + @max_row
38626 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
38627 AND @max_row_div2 + @max_row_div4;
38628         
38629 # check multiple-4 success:     1
38630 DELETE FROM t1
38631 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
38632 AND @max_row_div2 + @max_row_div4 + @max_row;
38633         
38634 # check multiple-5 success:     1
38635 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
38636 INSERT INTO t1
38637 SET f_int1 = @cur_value , f_int2 = @cur_value,
38638 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
38639 f_charbig = '#SINGLE#';
38640         
38641 # check single-1 success:       1
38642 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
38643 INSERT INTO t1
38644 SET f_int1 = @cur_value , f_int2 = @cur_value,
38645 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
38646 f_charbig = '#SINGLE#';
38647         
38648 # check single-2 success:       1
38649 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
38650 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
38651 UPDATE t1 SET f_int1 = @cur_value2
38652 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
38653         
38654 # check single-3 success:       1
38655 SET @cur_value1= -1;
38656 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
38657 UPDATE t1 SET f_int1 = @cur_value1
38658 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
38659         
38660 # check single-4 success:       1
38661 SELECT MAX(f_int1) INTO @cur_value FROM t1;
38662 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
38663         
38664 # check single-5 success:       1
38665 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
38666         
38667 # check single-6 success:       1
38668 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
38669         
38670 # check single-7 success:       1
38671 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
38672 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
38673 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
38674 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
38675 f_charbig = '#NULL#';
38676 INSERT INTO t1
38677 SET f_int1 = NULL , f_int2 = -@max_row,
38678 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
38679 f_charbig = '#NULL#';
38680 # check null success:    1
38681         
38682 # check null-1 success:         1
38683 UPDATE t1 SET f_int1 = -@max_row
38684 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
38685 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
38686         
38687 # check null-2 success:         1
38688 UPDATE t1 SET f_int1 = NULL
38689 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
38690 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
38691         
38692 # check null-3 success:         1
38693 DELETE FROM t1
38694 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
38695 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
38696         
38697 # check null-4 success:         1
38698 DELETE FROM t1
38699 WHERE f_int1 = 0 AND f_int2 = 0
38700 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
38701 AND f_charbig = '#NULL#';
38702 SET AUTOCOMMIT= 0;
38703 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38704 SELECT f_int1, f_int1, '', '', 'was inserted'
38705 FROM t0_template source_tab
38706 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
38707         
38708 # check transactions-1 success:         1
38709 COMMIT WORK;
38710         
38711 # check transactions-2 success:         1
38712 ROLLBACK WORK;
38713         
38714 # check transactions-3 success:         1
38715 DELETE FROM t1 WHERE f_charbig = 'was inserted';
38716 COMMIT WORK;
38717 ROLLBACK WORK;
38718         
38719 # check transactions-4 success:         1
38720 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38721 SELECT f_int1, f_int1, '', '', 'was inserted'
38722 FROM t0_template source_tab
38723 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
38724         
38725 # check transactions-5 success:         1
38726 ROLLBACK WORK;
38727 Warnings:
38728 Warning 1196    Some non-transactional changed tables couldn't be rolled back
38729         
38730 # check transactions-6 success:         1
38731 # INFO: Storage engine used for t1 seems to be not transactional.
38732 COMMIT;
38733         
38734 # check transactions-7 success:         1
38735 DELETE FROM t1 WHERE f_charbig = 'was inserted';
38736 COMMIT WORK;
38737 SET @@session.sql_mode = 'traditional';
38738 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
38739 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38740 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
38741 '', '', 'was inserted' FROM t0_template
38742 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
38743 ERROR 22012: Division by 0
38744 COMMIT;
38745         
38746 # check transactions-8 success:         1
38747 # INFO: Storage engine used for t1 seems to be unable to revert
38748 #       changes made by the failing statement.
38749 SET @@session.sql_mode = '';
38750 SET AUTOCOMMIT= 1;
38751 DELETE FROM t1 WHERE f_charbig = 'was inserted';
38752 COMMIT WORK;
38753 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
38754         
38755 # check special-1 success:      1
38756 UPDATE t1 SET f_charbig = '';
38757         
38758 # check special-2 success:      1
38759 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
38760 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
38761 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
38762 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38763 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38764 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38765 'just inserted' FROM t0_template
38766 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38767 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
38768 BEGIN
38769 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38770 f_charbig = 'updated by trigger'
38771       WHERE f_int1 = new.f_int1;
38772 END|
38773 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38774 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
38775 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38776         
38777 # check trigger-1 success:      1
38778 DROP TRIGGER trg_1;
38779 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38780 f_int2 = CAST(f_char1 AS SIGNED INT),
38781 f_charbig = 'just inserted'
38782    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38783 DELETE FROM t0_aux
38784 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38785 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38786 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38787 'just inserted' FROM t0_template
38788 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38789 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
38790 BEGIN
38791 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38792 f_charbig = 'updated by trigger'
38793       WHERE f_int1 = new.f_int1;
38794 END|
38795 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38796 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
38797 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38798         
38799 # check trigger-2 success:      1
38800 DROP TRIGGER trg_1;
38801 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38802 f_int2 = CAST(f_char1 AS SIGNED INT),
38803 f_charbig = 'just inserted'
38804    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38805 DELETE FROM t0_aux
38806 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38807 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38808 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38809 'just inserted' FROM t0_template
38810 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38811 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
38812 BEGIN
38813 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38814 f_charbig = 'updated by trigger'
38815       WHERE f_int1 = new.f_int1;
38816 END|
38817 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
38818 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38819         
38820 # check trigger-3 success:      1
38821 DROP TRIGGER trg_1;
38822 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38823 f_int2 = CAST(f_char1 AS SIGNED INT),
38824 f_charbig = 'just inserted'
38825    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38826 DELETE FROM t0_aux
38827 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38828 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38829 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38830 'just inserted' FROM t0_template
38831 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38832 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
38833 BEGIN
38834 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38835 f_charbig = 'updated by trigger'
38836       WHERE f_int1 = - old.f_int1;
38837 END|
38838 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
38839 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38840         
38841 # check trigger-4 success:      1
38842 DROP TRIGGER trg_1;
38843 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38844 f_int2 = CAST(f_char1 AS SIGNED INT),
38845 f_charbig = 'just inserted'
38846    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38847 DELETE FROM t0_aux
38848 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38849 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38850 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38851 'just inserted' FROM t0_template
38852 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38853 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
38854 BEGIN
38855 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38856 f_charbig = 'updated by trigger'
38857       WHERE f_int1 = new.f_int1;
38858 END|
38859 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
38860 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38861         
38862 # check trigger-5 success:      1
38863 DROP TRIGGER trg_1;
38864 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38865 f_int2 = CAST(f_char1 AS SIGNED INT),
38866 f_charbig = 'just inserted'
38867    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38868 DELETE FROM t0_aux
38869 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38870 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38871 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38872 'just inserted' FROM t0_template
38873 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38874 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
38875 BEGIN
38876 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38877 f_charbig = 'updated by trigger'
38878       WHERE f_int1 = - old.f_int1;
38879 END|
38880 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
38881 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38882         
38883 # check trigger-6 success:      1
38884 DROP TRIGGER trg_1;
38885 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38886 f_int2 = CAST(f_char1 AS SIGNED INT),
38887 f_charbig = 'just inserted'
38888    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38889 DELETE FROM t0_aux
38890 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38891 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38892 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38893 'just inserted' FROM t0_template
38894 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38895 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
38896 BEGIN
38897 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38898 f_charbig = 'updated by trigger'
38899       WHERE f_int1 = - old.f_int1;
38900 END|
38901 DELETE FROM t0_aux
38902 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38903         
38904 # check trigger-7 success:      1
38905 DROP TRIGGER trg_1;
38906 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38907 f_int2 = CAST(f_char1 AS SIGNED INT),
38908 f_charbig = 'just inserted'
38909    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38910 DELETE FROM t0_aux
38911 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38912 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38913 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38914 'just inserted' FROM t0_template
38915 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38916 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
38917 BEGIN
38918 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38919 f_charbig = 'updated by trigger'
38920       WHERE f_int1 = - old.f_int1;
38921 END|
38922 DELETE FROM t0_aux
38923 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38924         
38925 # check trigger-8 success:      1
38926 DROP TRIGGER trg_1;
38927 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38928 f_int2 = CAST(f_char1 AS SIGNED INT),
38929 f_charbig = 'just inserted'
38930    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38931 DELETE FROM t0_aux
38932 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38933 DELETE FROM t1
38934 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38935 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
38936 BEGIN
38937 SET new.f_int1 = old.f_int1 + @max_row,
38938 new.f_int2 = old.f_int2 - @max_row,
38939 new.f_charbig = '####updated per update trigger####';
38940 END|
38941 UPDATE t1
38942 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
38943 f_charbig = '####updated per update statement itself####';
38944         
38945 # check trigger-9 success:      1
38946 DROP TRIGGER trg_2;
38947 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38948 f_int2 = CAST(f_char1 AS SIGNED INT),
38949 f_charbig = CONCAT('===',f_char1,'===');
38950 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
38951 BEGIN
38952 SET new.f_int1 = new.f_int1 + @max_row,
38953 new.f_int2 = new.f_int2 - @max_row,
38954 new.f_charbig = '####updated per update trigger####';
38955 END|
38956 UPDATE t1
38957 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
38958 f_charbig = '####updated per update statement itself####';
38959         
38960 # check trigger-10 success:     1
38961 DROP TRIGGER trg_2;
38962 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38963 f_int2 = CAST(f_char1 AS SIGNED INT),
38964 f_charbig = CONCAT('===',f_char1,'===');
38965 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
38966 BEGIN
38967 SET new.f_int1 = @my_max1 + @counter,
38968 new.f_int2 = @my_min2 - @counter,
38969 new.f_charbig = '####updated per insert trigger####';
38970 SET @counter = @counter + 1;
38971 END|
38972 SET @counter = 1;
38973 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
38974 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38975 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
38976 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
38977 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
38978 ORDER BY f_int1;
38979 DROP TRIGGER trg_3;
38980         
38981 # check trigger-11 success:     1
38982 DELETE FROM t1
38983 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
38984 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
38985 AND f_charbig = '####updated per insert trigger####';
38986 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
38987 BEGIN
38988 SET new.f_int1 = @my_max1 + @counter,
38989 new.f_int2 = @my_min2 - @counter,
38990 new.f_charbig = '####updated per insert trigger####';
38991 SET @counter = @counter + 1;
38992 END|
38993 SET @counter = 1;
38994 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
38995 INSERT INTO t1 (f_char1, f_char2, f_charbig)
38996 SELECT CAST(f_int1 AS CHAR),
38997 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
38998 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
38999 ORDER BY f_int1;
39000 DROP TRIGGER trg_3;
39001         
39002 # check trigger-12 success:     1
39003 DELETE FROM t1
39004 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
39005 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
39006 AND f_charbig = '####updated per insert trigger####';
39007 ANALYZE  TABLE t1;
39008 Table   Op      Msg_type        Msg_text
39009 test.t1 analyze status  OK
39010 CHECK    TABLE t1 EXTENDED;
39011 Table   Op      Msg_type        Msg_text
39012 test.t1 check   status  OK
39013 CHECKSUM TABLE t1 EXTENDED;
39014 Table   Checksum
39015 test.t1 <some_value>
39016 OPTIMIZE TABLE t1;
39017 Table   Op      Msg_type        Msg_text
39018 test.t1 optimize        status  OK
39019 # check layout success:    1
39020 REPAIR   TABLE t1 EXTENDED;
39021 Table   Op      Msg_type        Msg_text
39022 test.t1 repair  status  OK
39023 # check layout success:    1
39024 TRUNCATE t1;
39025         
39026 # check TRUNCATE success:       1
39027 # check layout success:    1
39028 # End usability test (inc/partition_check.inc)
39029 DROP TABLE t1;
39030 #------------------------------------------------------------------------
39031 #  3   ALTER ... OPTIMIZE PARTITION
39032 #------------------------------------------------------------------------
39033 #  3.1 ALTER ... OPTIMIZE PARTITION part_1;
39034 DROP TABLE IF EXISTS t1;
39035 CREATE TABLE t1 (
39036 f_int1 INTEGER,
39037 f_int2 INTEGER,
39038 f_char1 CHAR(20),
39039 f_char2 CHAR(20),
39040 f_charbig VARCHAR(1000)
39043 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
39044 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
39045 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
39046 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
39047 ALTER TABLE t1 OPTIMIZE PARTITION part_1;
39048 Table   Op      Msg_type        Msg_text
39049 test.t1 optimize        status  OK
39050 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
39051 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
39052 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
39053 # Start usability test (inc/partition_check.inc)
39054 create_command
39055 SHOW CREATE TABLE t1;
39056 Table   Create Table
39057 t1      CREATE TABLE `t1` (
39058   `f_int1` int(11) DEFAULT NULL,
39059   `f_int2` int(11) DEFAULT NULL,
39060   `f_char1` char(20) DEFAULT NULL,
39061   `f_char2` char(20) DEFAULT NULL,
39062   `f_charbig` varchar(1000) DEFAULT NULL
39063 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
39064 /*!50100 PARTITION BY HASH (f_int1)
39065 (PARTITION part_1 ENGINE = MyISAM,
39066  PARTITION part_2 ENGINE = MyISAM) */
39068 unified filelist
39069 t1#P#part_1.MYD
39070 t1#P#part_1.MYI
39071 t1#P#part_2.MYD
39072 t1#P#part_2.MYI
39073 t1.frm
39074 t1.par
39076 # check prerequisites-1 success:    1
39077 # check COUNT(*) success:    1
39078 # check MIN/MAX(f_int1) success:    1
39079 # check MIN/MAX(f_int2) success:    1
39080 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39081 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
39082 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
39083 WHERE f_int1 IN (2,3);
39084 # check prerequisites-3 success:    1
39085 DELETE FROM t1 WHERE f_charbig = 'delete me';
39086 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
39087 # check read via f_int1 success: 1
39088 # check read via f_int2 success: 1
39089         
39090 # check multiple-1 success:     1
39091 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
39092         
39093 # check multiple-2 success:     1
39094 INSERT INTO t1 SELECT * FROM t0_template
39095 WHERE MOD(f_int1,3) = 0;
39096         
39097 # check multiple-3 success:     1
39098 UPDATE t1 SET f_int1 = f_int1 + @max_row
39099 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
39100 AND @max_row_div2 + @max_row_div4;
39101         
39102 # check multiple-4 success:     1
39103 DELETE FROM t1
39104 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
39105 AND @max_row_div2 + @max_row_div4 + @max_row;
39106         
39107 # check multiple-5 success:     1
39108 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
39109 INSERT INTO t1
39110 SET f_int1 = @cur_value , f_int2 = @cur_value,
39111 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
39112 f_charbig = '#SINGLE#';
39113         
39114 # check single-1 success:       1
39115 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
39116 INSERT INTO t1
39117 SET f_int1 = @cur_value , f_int2 = @cur_value,
39118 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
39119 f_charbig = '#SINGLE#';
39120         
39121 # check single-2 success:       1
39122 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
39123 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
39124 UPDATE t1 SET f_int1 = @cur_value2
39125 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
39126         
39127 # check single-3 success:       1
39128 SET @cur_value1= -1;
39129 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
39130 UPDATE t1 SET f_int1 = @cur_value1
39131 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
39132         
39133 # check single-4 success:       1
39134 SELECT MAX(f_int1) INTO @cur_value FROM t1;
39135 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
39136         
39137 # check single-5 success:       1
39138 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
39139         
39140 # check single-6 success:       1
39141 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
39142         
39143 # check single-7 success:       1
39144 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
39145 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
39146 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
39147 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
39148 f_charbig = '#NULL#';
39149 INSERT INTO t1
39150 SET f_int1 = NULL , f_int2 = -@max_row,
39151 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
39152 f_charbig = '#NULL#';
39153 # check null success:    1
39154         
39155 # check null-1 success:         1
39156 UPDATE t1 SET f_int1 = -@max_row
39157 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
39158 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
39159         
39160 # check null-2 success:         1
39161 UPDATE t1 SET f_int1 = NULL
39162 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
39163 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
39164         
39165 # check null-3 success:         1
39166 DELETE FROM t1
39167 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
39168 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
39169         
39170 # check null-4 success:         1
39171 DELETE FROM t1
39172 WHERE f_int1 = 0 AND f_int2 = 0
39173 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
39174 AND f_charbig = '#NULL#';
39175 SET AUTOCOMMIT= 0;
39176 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39177 SELECT f_int1, f_int1, '', '', 'was inserted'
39178 FROM t0_template source_tab
39179 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
39180         
39181 # check transactions-1 success:         1
39182 COMMIT WORK;
39183         
39184 # check transactions-2 success:         1
39185 ROLLBACK WORK;
39186         
39187 # check transactions-3 success:         1
39188 DELETE FROM t1 WHERE f_charbig = 'was inserted';
39189 COMMIT WORK;
39190 ROLLBACK WORK;
39191         
39192 # check transactions-4 success:         1
39193 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39194 SELECT f_int1, f_int1, '', '', 'was inserted'
39195 FROM t0_template source_tab
39196 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
39197         
39198 # check transactions-5 success:         1
39199 ROLLBACK WORK;
39200 Warnings:
39201 Warning 1196    Some non-transactional changed tables couldn't be rolled back
39202         
39203 # check transactions-6 success:         1
39204 # INFO: Storage engine used for t1 seems to be not transactional.
39205 COMMIT;
39206         
39207 # check transactions-7 success:         1
39208 DELETE FROM t1 WHERE f_charbig = 'was inserted';
39209 COMMIT WORK;
39210 SET @@session.sql_mode = 'traditional';
39211 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
39212 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39213 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
39214 '', '', 'was inserted' FROM t0_template
39215 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
39216 ERROR 22012: Division by 0
39217 COMMIT;
39218         
39219 # check transactions-8 success:         1
39220 # INFO: Storage engine used for t1 seems to be unable to revert
39221 #       changes made by the failing statement.
39222 SET @@session.sql_mode = '';
39223 SET AUTOCOMMIT= 1;
39224 DELETE FROM t1 WHERE f_charbig = 'was inserted';
39225 COMMIT WORK;
39226 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
39227         
39228 # check special-1 success:      1
39229 UPDATE t1 SET f_charbig = '';
39230         
39231 # check special-2 success:      1
39232 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
39233 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
39234 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
39235 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39236 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39237 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39238 'just inserted' FROM t0_template
39239 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39240 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
39241 BEGIN
39242 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39243 f_charbig = 'updated by trigger'
39244       WHERE f_int1 = new.f_int1;
39245 END|
39246 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39247 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
39248 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39249         
39250 # check trigger-1 success:      1
39251 DROP TRIGGER trg_1;
39252 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39253 f_int2 = CAST(f_char1 AS SIGNED INT),
39254 f_charbig = 'just inserted'
39255    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39256 DELETE FROM t0_aux
39257 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39258 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39259 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39260 'just inserted' FROM t0_template
39261 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39262 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
39263 BEGIN
39264 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39265 f_charbig = 'updated by trigger'
39266       WHERE f_int1 = new.f_int1;
39267 END|
39268 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39269 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
39270 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39271         
39272 # check trigger-2 success:      1
39273 DROP TRIGGER trg_1;
39274 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39275 f_int2 = CAST(f_char1 AS SIGNED INT),
39276 f_charbig = 'just inserted'
39277    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39278 DELETE FROM t0_aux
39279 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39280 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39281 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39282 'just inserted' FROM t0_template
39283 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39284 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
39285 BEGIN
39286 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39287 f_charbig = 'updated by trigger'
39288       WHERE f_int1 = new.f_int1;
39289 END|
39290 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
39291 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39292         
39293 # check trigger-3 success:      1
39294 DROP TRIGGER trg_1;
39295 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39296 f_int2 = CAST(f_char1 AS SIGNED INT),
39297 f_charbig = 'just inserted'
39298    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39299 DELETE FROM t0_aux
39300 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39301 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39302 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39303 'just inserted' FROM t0_template
39304 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39305 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
39306 BEGIN
39307 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39308 f_charbig = 'updated by trigger'
39309       WHERE f_int1 = - old.f_int1;
39310 END|
39311 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
39312 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39313         
39314 # check trigger-4 success:      1
39315 DROP TRIGGER trg_1;
39316 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39317 f_int2 = CAST(f_char1 AS SIGNED INT),
39318 f_charbig = 'just inserted'
39319    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39320 DELETE FROM t0_aux
39321 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39322 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39323 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39324 'just inserted' FROM t0_template
39325 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39326 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
39327 BEGIN
39328 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39329 f_charbig = 'updated by trigger'
39330       WHERE f_int1 = new.f_int1;
39331 END|
39332 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
39333 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39334         
39335 # check trigger-5 success:      1
39336 DROP TRIGGER trg_1;
39337 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39338 f_int2 = CAST(f_char1 AS SIGNED INT),
39339 f_charbig = 'just inserted'
39340    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39341 DELETE FROM t0_aux
39342 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39343 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39344 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39345 'just inserted' FROM t0_template
39346 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39347 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
39348 BEGIN
39349 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39350 f_charbig = 'updated by trigger'
39351       WHERE f_int1 = - old.f_int1;
39352 END|
39353 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
39354 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39355         
39356 # check trigger-6 success:      1
39357 DROP TRIGGER trg_1;
39358 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39359 f_int2 = CAST(f_char1 AS SIGNED INT),
39360 f_charbig = 'just inserted'
39361    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39362 DELETE FROM t0_aux
39363 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39364 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39365 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39366 'just inserted' FROM t0_template
39367 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39368 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
39369 BEGIN
39370 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39371 f_charbig = 'updated by trigger'
39372       WHERE f_int1 = - old.f_int1;
39373 END|
39374 DELETE FROM t0_aux
39375 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39376         
39377 # check trigger-7 success:      1
39378 DROP TRIGGER trg_1;
39379 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39380 f_int2 = CAST(f_char1 AS SIGNED INT),
39381 f_charbig = 'just inserted'
39382    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39383 DELETE FROM t0_aux
39384 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39385 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39386 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39387 'just inserted' FROM t0_template
39388 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39389 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
39390 BEGIN
39391 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39392 f_charbig = 'updated by trigger'
39393       WHERE f_int1 = - old.f_int1;
39394 END|
39395 DELETE FROM t0_aux
39396 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39397         
39398 # check trigger-8 success:      1
39399 DROP TRIGGER trg_1;
39400 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39401 f_int2 = CAST(f_char1 AS SIGNED INT),
39402 f_charbig = 'just inserted'
39403    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39404 DELETE FROM t0_aux
39405 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39406 DELETE FROM t1
39407 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39408 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
39409 BEGIN
39410 SET new.f_int1 = old.f_int1 + @max_row,
39411 new.f_int2 = old.f_int2 - @max_row,
39412 new.f_charbig = '####updated per update trigger####';
39413 END|
39414 UPDATE t1
39415 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
39416 f_charbig = '####updated per update statement itself####';
39417         
39418 # check trigger-9 success:      1
39419 DROP TRIGGER trg_2;
39420 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39421 f_int2 = CAST(f_char1 AS SIGNED INT),
39422 f_charbig = CONCAT('===',f_char1,'===');
39423 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
39424 BEGIN
39425 SET new.f_int1 = new.f_int1 + @max_row,
39426 new.f_int2 = new.f_int2 - @max_row,
39427 new.f_charbig = '####updated per update trigger####';
39428 END|
39429 UPDATE t1
39430 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
39431 f_charbig = '####updated per update statement itself####';
39432         
39433 # check trigger-10 success:     1
39434 DROP TRIGGER trg_2;
39435 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39436 f_int2 = CAST(f_char1 AS SIGNED INT),
39437 f_charbig = CONCAT('===',f_char1,'===');
39438 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
39439 BEGIN
39440 SET new.f_int1 = @my_max1 + @counter,
39441 new.f_int2 = @my_min2 - @counter,
39442 new.f_charbig = '####updated per insert trigger####';
39443 SET @counter = @counter + 1;
39444 END|
39445 SET @counter = 1;
39446 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
39447 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39448 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
39449 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
39450 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
39451 ORDER BY f_int1;
39452 DROP TRIGGER trg_3;
39453         
39454 # check trigger-11 success:     1
39455 DELETE FROM t1
39456 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
39457 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
39458 AND f_charbig = '####updated per insert trigger####';
39459 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
39460 BEGIN
39461 SET new.f_int1 = @my_max1 + @counter,
39462 new.f_int2 = @my_min2 - @counter,
39463 new.f_charbig = '####updated per insert trigger####';
39464 SET @counter = @counter + 1;
39465 END|
39466 SET @counter = 1;
39467 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
39468 INSERT INTO t1 (f_char1, f_char2, f_charbig)
39469 SELECT CAST(f_int1 AS CHAR),
39470 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
39471 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
39472 ORDER BY f_int1;
39473 DROP TRIGGER trg_3;
39474         
39475 # check trigger-12 success:     1
39476 DELETE FROM t1
39477 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
39478 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
39479 AND f_charbig = '####updated per insert trigger####';
39480 ANALYZE  TABLE t1;
39481 Table   Op      Msg_type        Msg_text
39482 test.t1 analyze status  OK
39483 CHECK    TABLE t1 EXTENDED;
39484 Table   Op      Msg_type        Msg_text
39485 test.t1 check   status  OK
39486 CHECKSUM TABLE t1 EXTENDED;
39487 Table   Checksum
39488 test.t1 <some_value>
39489 OPTIMIZE TABLE t1;
39490 Table   Op      Msg_type        Msg_text
39491 test.t1 optimize        status  OK
39492 # check layout success:    1
39493 REPAIR   TABLE t1 EXTENDED;
39494 Table   Op      Msg_type        Msg_text
39495 test.t1 repair  status  OK
39496 # check layout success:    1
39497 TRUNCATE t1;
39498         
39499 # check TRUNCATE success:       1
39500 # check layout success:    1
39501 # End usability test (inc/partition_check.inc)
39502 DROP TABLE t1;
39503 CREATE TABLE t1 (
39504 f_int1 INTEGER,
39505 f_int2 INTEGER,
39506 f_char1 CHAR(20),
39507 f_char2 CHAR(20),
39508 f_charbig VARCHAR(1000)
39511 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
39512 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
39513 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
39514 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
39515 ALTER TABLE t1 OPTIMIZE PARTITION part_1;
39516 Table   Op      Msg_type        Msg_text
39517 test.t1 optimize        status  OK
39518 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
39519 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
39520 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
39521 # Start usability test (inc/partition_check.inc)
39522 create_command
39523 SHOW CREATE TABLE t1;
39524 Table   Create Table
39525 t1      CREATE TABLE `t1` (
39526   `f_int1` int(11) DEFAULT NULL,
39527   `f_int2` int(11) DEFAULT NULL,
39528   `f_char1` char(20) DEFAULT NULL,
39529   `f_char2` char(20) DEFAULT NULL,
39530   `f_charbig` varchar(1000) DEFAULT NULL
39531 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
39532 /*!50100 PARTITION BY KEY (f_int1)
39533 (PARTITION part_1 ENGINE = MyISAM,
39534  PARTITION part_2 ENGINE = MyISAM,
39535  PARTITION part_3 ENGINE = MyISAM,
39536  PARTITION part_4 ENGINE = MyISAM,
39537  PARTITION part_5 ENGINE = MyISAM) */
39539 unified filelist
39540 t1#P#part_1.MYD
39541 t1#P#part_1.MYI
39542 t1#P#part_2.MYD
39543 t1#P#part_2.MYI
39544 t1#P#part_3.MYD
39545 t1#P#part_3.MYI
39546 t1#P#part_4.MYD
39547 t1#P#part_4.MYI
39548 t1#P#part_5.MYD
39549 t1#P#part_5.MYI
39550 t1.frm
39551 t1.par
39553 # check prerequisites-1 success:    1
39554 # check COUNT(*) success:    1
39555 # check MIN/MAX(f_int1) success:    1
39556 # check MIN/MAX(f_int2) success:    1
39557 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39558 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
39559 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
39560 WHERE f_int1 IN (2,3);
39561 # check prerequisites-3 success:    1
39562 DELETE FROM t1 WHERE f_charbig = 'delete me';
39563 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
39564 # check read via f_int1 success: 1
39565 # check read via f_int2 success: 1
39566         
39567 # check multiple-1 success:     1
39568 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
39569         
39570 # check multiple-2 success:     1
39571 INSERT INTO t1 SELECT * FROM t0_template
39572 WHERE MOD(f_int1,3) = 0;
39573         
39574 # check multiple-3 success:     1
39575 UPDATE t1 SET f_int1 = f_int1 + @max_row
39576 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
39577 AND @max_row_div2 + @max_row_div4;
39578         
39579 # check multiple-4 success:     1
39580 DELETE FROM t1
39581 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
39582 AND @max_row_div2 + @max_row_div4 + @max_row;
39583         
39584 # check multiple-5 success:     1
39585 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
39586 INSERT INTO t1
39587 SET f_int1 = @cur_value , f_int2 = @cur_value,
39588 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
39589 f_charbig = '#SINGLE#';
39590         
39591 # check single-1 success:       1
39592 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
39593 INSERT INTO t1
39594 SET f_int1 = @cur_value , f_int2 = @cur_value,
39595 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
39596 f_charbig = '#SINGLE#';
39597         
39598 # check single-2 success:       1
39599 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
39600 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
39601 UPDATE t1 SET f_int1 = @cur_value2
39602 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
39603         
39604 # check single-3 success:       1
39605 SET @cur_value1= -1;
39606 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
39607 UPDATE t1 SET f_int1 = @cur_value1
39608 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
39609         
39610 # check single-4 success:       1
39611 SELECT MAX(f_int1) INTO @cur_value FROM t1;
39612 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
39613         
39614 # check single-5 success:       1
39615 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
39616         
39617 # check single-6 success:       1
39618 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
39619         
39620 # check single-7 success:       1
39621 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
39622 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
39623 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
39624 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
39625 f_charbig = '#NULL#';
39626 INSERT INTO t1
39627 SET f_int1 = NULL , f_int2 = -@max_row,
39628 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
39629 f_charbig = '#NULL#';
39630 # check null success:    1
39631         
39632 # check null-1 success:         1
39633 UPDATE t1 SET f_int1 = -@max_row
39634 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
39635 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
39636         
39637 # check null-2 success:         1
39638 UPDATE t1 SET f_int1 = NULL
39639 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
39640 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
39641         
39642 # check null-3 success:         1
39643 DELETE FROM t1
39644 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
39645 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
39646         
39647 # check null-4 success:         1
39648 DELETE FROM t1
39649 WHERE f_int1 = 0 AND f_int2 = 0
39650 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
39651 AND f_charbig = '#NULL#';
39652 SET AUTOCOMMIT= 0;
39653 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39654 SELECT f_int1, f_int1, '', '', 'was inserted'
39655 FROM t0_template source_tab
39656 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
39657         
39658 # check transactions-1 success:         1
39659 COMMIT WORK;
39660         
39661 # check transactions-2 success:         1
39662 ROLLBACK WORK;
39663         
39664 # check transactions-3 success:         1
39665 DELETE FROM t1 WHERE f_charbig = 'was inserted';
39666 COMMIT WORK;
39667 ROLLBACK WORK;
39668         
39669 # check transactions-4 success:         1
39670 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39671 SELECT f_int1, f_int1, '', '', 'was inserted'
39672 FROM t0_template source_tab
39673 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
39674         
39675 # check transactions-5 success:         1
39676 ROLLBACK WORK;
39677 Warnings:
39678 Warning 1196    Some non-transactional changed tables couldn't be rolled back
39679         
39680 # check transactions-6 success:         1
39681 # INFO: Storage engine used for t1 seems to be not transactional.
39682 COMMIT;
39683         
39684 # check transactions-7 success:         1
39685 DELETE FROM t1 WHERE f_charbig = 'was inserted';
39686 COMMIT WORK;
39687 SET @@session.sql_mode = 'traditional';
39688 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
39689 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39690 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
39691 '', '', 'was inserted' FROM t0_template
39692 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
39693 ERROR 22012: Division by 0
39694 COMMIT;
39695         
39696 # check transactions-8 success:         1
39697 # INFO: Storage engine used for t1 seems to be unable to revert
39698 #       changes made by the failing statement.
39699 SET @@session.sql_mode = '';
39700 SET AUTOCOMMIT= 1;
39701 DELETE FROM t1 WHERE f_charbig = 'was inserted';
39702 COMMIT WORK;
39703 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
39704         
39705 # check special-1 success:      1
39706 UPDATE t1 SET f_charbig = '';
39707         
39708 # check special-2 success:      1
39709 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
39710 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
39711 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
39712 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39713 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39714 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39715 'just inserted' FROM t0_template
39716 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39717 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
39718 BEGIN
39719 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39720 f_charbig = 'updated by trigger'
39721       WHERE f_int1 = new.f_int1;
39722 END|
39723 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39724 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
39725 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39726         
39727 # check trigger-1 success:      1
39728 DROP TRIGGER trg_1;
39729 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39730 f_int2 = CAST(f_char1 AS SIGNED INT),
39731 f_charbig = 'just inserted'
39732    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39733 DELETE FROM t0_aux
39734 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39735 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39736 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39737 'just inserted' FROM t0_template
39738 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39739 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
39740 BEGIN
39741 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39742 f_charbig = 'updated by trigger'
39743       WHERE f_int1 = new.f_int1;
39744 END|
39745 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39746 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
39747 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39748         
39749 # check trigger-2 success:      1
39750 DROP TRIGGER trg_1;
39751 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39752 f_int2 = CAST(f_char1 AS SIGNED INT),
39753 f_charbig = 'just inserted'
39754    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39755 DELETE FROM t0_aux
39756 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39757 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39758 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39759 'just inserted' FROM t0_template
39760 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39761 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
39762 BEGIN
39763 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39764 f_charbig = 'updated by trigger'
39765       WHERE f_int1 = new.f_int1;
39766 END|
39767 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
39768 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39769         
39770 # check trigger-3 success:      1
39771 DROP TRIGGER trg_1;
39772 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39773 f_int2 = CAST(f_char1 AS SIGNED INT),
39774 f_charbig = 'just inserted'
39775    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39776 DELETE FROM t0_aux
39777 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39778 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39779 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39780 'just inserted' FROM t0_template
39781 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39782 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
39783 BEGIN
39784 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39785 f_charbig = 'updated by trigger'
39786       WHERE f_int1 = - old.f_int1;
39787 END|
39788 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
39789 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39790         
39791 # check trigger-4 success:      1
39792 DROP TRIGGER trg_1;
39793 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39794 f_int2 = CAST(f_char1 AS SIGNED INT),
39795 f_charbig = 'just inserted'
39796    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39797 DELETE FROM t0_aux
39798 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39799 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39800 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39801 'just inserted' FROM t0_template
39802 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39803 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
39804 BEGIN
39805 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39806 f_charbig = 'updated by trigger'
39807       WHERE f_int1 = new.f_int1;
39808 END|
39809 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
39810 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39811         
39812 # check trigger-5 success:      1
39813 DROP TRIGGER trg_1;
39814 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39815 f_int2 = CAST(f_char1 AS SIGNED INT),
39816 f_charbig = 'just inserted'
39817    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39818 DELETE FROM t0_aux
39819 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39820 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39821 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39822 'just inserted' FROM t0_template
39823 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39824 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
39825 BEGIN
39826 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39827 f_charbig = 'updated by trigger'
39828       WHERE f_int1 = - old.f_int1;
39829 END|
39830 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
39831 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39832         
39833 # check trigger-6 success:      1
39834 DROP TRIGGER trg_1;
39835 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39836 f_int2 = CAST(f_char1 AS SIGNED INT),
39837 f_charbig = 'just inserted'
39838    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39839 DELETE FROM t0_aux
39840 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39841 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39842 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39843 'just inserted' FROM t0_template
39844 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39845 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
39846 BEGIN
39847 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39848 f_charbig = 'updated by trigger'
39849       WHERE f_int1 = - old.f_int1;
39850 END|
39851 DELETE FROM t0_aux
39852 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39853         
39854 # check trigger-7 success:      1
39855 DROP TRIGGER trg_1;
39856 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39857 f_int2 = CAST(f_char1 AS SIGNED INT),
39858 f_charbig = 'just inserted'
39859    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39860 DELETE FROM t0_aux
39861 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39862 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39863 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39864 'just inserted' FROM t0_template
39865 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39866 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
39867 BEGIN
39868 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39869 f_charbig = 'updated by trigger'
39870       WHERE f_int1 = - old.f_int1;
39871 END|
39872 DELETE FROM t0_aux
39873 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39874         
39875 # check trigger-8 success:      1
39876 DROP TRIGGER trg_1;
39877 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39878 f_int2 = CAST(f_char1 AS SIGNED INT),
39879 f_charbig = 'just inserted'
39880    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39881 DELETE FROM t0_aux
39882 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39883 DELETE FROM t1
39884 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39885 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
39886 BEGIN
39887 SET new.f_int1 = old.f_int1 + @max_row,
39888 new.f_int2 = old.f_int2 - @max_row,
39889 new.f_charbig = '####updated per update trigger####';
39890 END|
39891 UPDATE t1
39892 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
39893 f_charbig = '####updated per update statement itself####';
39894         
39895 # check trigger-9 success:      1
39896 DROP TRIGGER trg_2;
39897 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39898 f_int2 = CAST(f_char1 AS SIGNED INT),
39899 f_charbig = CONCAT('===',f_char1,'===');
39900 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
39901 BEGIN
39902 SET new.f_int1 = new.f_int1 + @max_row,
39903 new.f_int2 = new.f_int2 - @max_row,
39904 new.f_charbig = '####updated per update trigger####';
39905 END|
39906 UPDATE t1
39907 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
39908 f_charbig = '####updated per update statement itself####';
39909         
39910 # check trigger-10 success:     1
39911 DROP TRIGGER trg_2;
39912 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39913 f_int2 = CAST(f_char1 AS SIGNED INT),
39914 f_charbig = CONCAT('===',f_char1,'===');
39915 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
39916 BEGIN
39917 SET new.f_int1 = @my_max1 + @counter,
39918 new.f_int2 = @my_min2 - @counter,
39919 new.f_charbig = '####updated per insert trigger####';
39920 SET @counter = @counter + 1;
39921 END|
39922 SET @counter = 1;
39923 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
39924 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39925 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
39926 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
39927 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
39928 ORDER BY f_int1;
39929 DROP TRIGGER trg_3;
39930         
39931 # check trigger-11 success:     1
39932 DELETE FROM t1
39933 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
39934 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
39935 AND f_charbig = '####updated per insert trigger####';
39936 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
39937 BEGIN
39938 SET new.f_int1 = @my_max1 + @counter,
39939 new.f_int2 = @my_min2 - @counter,
39940 new.f_charbig = '####updated per insert trigger####';
39941 SET @counter = @counter + 1;
39942 END|
39943 SET @counter = 1;
39944 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
39945 INSERT INTO t1 (f_char1, f_char2, f_charbig)
39946 SELECT CAST(f_int1 AS CHAR),
39947 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
39948 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
39949 ORDER BY f_int1;
39950 DROP TRIGGER trg_3;
39951         
39952 # check trigger-12 success:     1
39953 DELETE FROM t1
39954 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
39955 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
39956 AND f_charbig = '####updated per insert trigger####';
39957 ANALYZE  TABLE t1;
39958 Table   Op      Msg_type        Msg_text
39959 test.t1 analyze status  OK
39960 CHECK    TABLE t1 EXTENDED;
39961 Table   Op      Msg_type        Msg_text
39962 test.t1 check   status  OK
39963 CHECKSUM TABLE t1 EXTENDED;
39964 Table   Checksum
39965 test.t1 <some_value>
39966 OPTIMIZE TABLE t1;
39967 Table   Op      Msg_type        Msg_text
39968 test.t1 optimize        status  OK
39969 # check layout success:    1
39970 REPAIR   TABLE t1 EXTENDED;
39971 Table   Op      Msg_type        Msg_text
39972 test.t1 repair  status  OK
39973 # check layout success:    1
39974 TRUNCATE t1;
39975         
39976 # check TRUNCATE success:       1
39977 # check layout success:    1
39978 # End usability test (inc/partition_check.inc)
39979 DROP TABLE t1;
39980 CREATE TABLE t1 (
39981 f_int1 INTEGER,
39982 f_int2 INTEGER,
39983 f_char1 CHAR(20),
39984 f_char2 CHAR(20),
39985 f_charbig VARCHAR(1000)
39988 PARTITION BY LIST(MOD(f_int1,4))
39989 (PARTITION part_3 VALUES IN (-3),
39990 PARTITION part_2 VALUES IN (-2),
39991 PARTITION part_1 VALUES IN (-1),
39992 PARTITION part_N VALUES IN (NULL),
39993 PARTITION part0 VALUES IN (0),
39994 PARTITION part1 VALUES IN (1),
39995 PARTITION part2 VALUES IN (2),
39996 PARTITION part3 VALUES IN (3));
39997 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
39998 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
39999 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
40000 ALTER TABLE t1 OPTIMIZE PARTITION part_1;
40001 Table   Op      Msg_type        Msg_text
40002 test.t1 optimize        status  OK
40003 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
40004 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
40005 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
40006 # Start usability test (inc/partition_check.inc)
40007 create_command
40008 SHOW CREATE TABLE t1;
40009 Table   Create Table
40010 t1      CREATE TABLE `t1` (
40011   `f_int1` int(11) DEFAULT NULL,
40012   `f_int2` int(11) DEFAULT NULL,
40013   `f_char1` char(20) DEFAULT NULL,
40014   `f_char2` char(20) DEFAULT NULL,
40015   `f_charbig` varchar(1000) DEFAULT NULL
40016 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
40017 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
40018 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
40019  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
40020  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
40021  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
40022  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
40023  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
40024  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
40025  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
40027 unified filelist
40028 t1#P#part0.MYD
40029 t1#P#part0.MYI
40030 t1#P#part1.MYD
40031 t1#P#part1.MYI
40032 t1#P#part2.MYD
40033 t1#P#part2.MYI
40034 t1#P#part3.MYD
40035 t1#P#part3.MYI
40036 t1#P#part_1.MYD
40037 t1#P#part_1.MYI
40038 t1#P#part_2.MYD
40039 t1#P#part_2.MYI
40040 t1#P#part_3.MYD
40041 t1#P#part_3.MYI
40042 t1#P#part_N.MYD
40043 t1#P#part_N.MYI
40044 t1.frm
40045 t1.par
40047 # check prerequisites-1 success:    1
40048 # check COUNT(*) success:    1
40049 # check MIN/MAX(f_int1) success:    1
40050 # check MIN/MAX(f_int2) success:    1
40051 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40052 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
40053 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
40054 WHERE f_int1 IN (2,3);
40055 # check prerequisites-3 success:    1
40056 DELETE FROM t1 WHERE f_charbig = 'delete me';
40057 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
40058 # check read via f_int1 success: 1
40059 # check read via f_int2 success: 1
40060         
40061 # check multiple-1 success:     1
40062 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
40063         
40064 # check multiple-2 success:     1
40065 INSERT INTO t1 SELECT * FROM t0_template
40066 WHERE MOD(f_int1,3) = 0;
40067         
40068 # check multiple-3 success:     1
40069 UPDATE t1 SET f_int1 = f_int1 + @max_row
40070 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
40071 AND @max_row_div2 + @max_row_div4;
40072         
40073 # check multiple-4 success:     1
40074 DELETE FROM t1
40075 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
40076 AND @max_row_div2 + @max_row_div4 + @max_row;
40077         
40078 # check multiple-5 success:     1
40079 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
40080 INSERT INTO t1
40081 SET f_int1 = @cur_value , f_int2 = @cur_value,
40082 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
40083 f_charbig = '#SINGLE#';
40084         
40085 # check single-1 success:       1
40086 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
40087 INSERT INTO t1
40088 SET f_int1 = @cur_value , f_int2 = @cur_value,
40089 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
40090 f_charbig = '#SINGLE#';
40091         
40092 # check single-2 success:       1
40093 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
40094 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
40095 UPDATE t1 SET f_int1 = @cur_value2
40096 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
40097         
40098 # check single-3 success:       1
40099 SET @cur_value1= -1;
40100 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
40101 UPDATE t1 SET f_int1 = @cur_value1
40102 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
40103         
40104 # check single-4 success:       1
40105 SELECT MAX(f_int1) INTO @cur_value FROM t1;
40106 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
40107         
40108 # check single-5 success:       1
40109 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
40110         
40111 # check single-6 success:       1
40112 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
40113         
40114 # check single-7 success:       1
40115 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
40116 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
40117 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
40118 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
40119 f_charbig = '#NULL#';
40120 INSERT INTO t1
40121 SET f_int1 = NULL , f_int2 = -@max_row,
40122 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
40123 f_charbig = '#NULL#';
40124 # check null success:    1
40125         
40126 # check null-1 success:         1
40127 UPDATE t1 SET f_int1 = -@max_row
40128 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
40129 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
40130         
40131 # check null-2 success:         1
40132 UPDATE t1 SET f_int1 = NULL
40133 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
40134 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
40135         
40136 # check null-3 success:         1
40137 DELETE FROM t1
40138 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
40139 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
40140         
40141 # check null-4 success:         1
40142 DELETE FROM t1
40143 WHERE f_int1 = 0 AND f_int2 = 0
40144 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
40145 AND f_charbig = '#NULL#';
40146 SET AUTOCOMMIT= 0;
40147 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40148 SELECT f_int1, f_int1, '', '', 'was inserted'
40149 FROM t0_template source_tab
40150 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
40151         
40152 # check transactions-1 success:         1
40153 COMMIT WORK;
40154         
40155 # check transactions-2 success:         1
40156 ROLLBACK WORK;
40157         
40158 # check transactions-3 success:         1
40159 DELETE FROM t1 WHERE f_charbig = 'was inserted';
40160 COMMIT WORK;
40161 ROLLBACK WORK;
40162         
40163 # check transactions-4 success:         1
40164 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40165 SELECT f_int1, f_int1, '', '', 'was inserted'
40166 FROM t0_template source_tab
40167 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
40168         
40169 # check transactions-5 success:         1
40170 ROLLBACK WORK;
40171 Warnings:
40172 Warning 1196    Some non-transactional changed tables couldn't be rolled back
40173         
40174 # check transactions-6 success:         1
40175 # INFO: Storage engine used for t1 seems to be not transactional.
40176 COMMIT;
40177         
40178 # check transactions-7 success:         1
40179 DELETE FROM t1 WHERE f_charbig = 'was inserted';
40180 COMMIT WORK;
40181 SET @@session.sql_mode = 'traditional';
40182 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
40183 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40184 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
40185 '', '', 'was inserted' FROM t0_template
40186 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
40187 ERROR 22012: Division by 0
40188 COMMIT;
40189         
40190 # check transactions-8 success:         1
40191 # INFO: Storage engine used for t1 seems to be unable to revert
40192 #       changes made by the failing statement.
40193 SET @@session.sql_mode = '';
40194 SET AUTOCOMMIT= 1;
40195 DELETE FROM t1 WHERE f_charbig = 'was inserted';
40196 COMMIT WORK;
40197 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
40198         
40199 # check special-1 success:      1
40200 UPDATE t1 SET f_charbig = '';
40201         
40202 # check special-2 success:      1
40203 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
40204 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
40205 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
40206 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40207 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40208 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40209 'just inserted' FROM t0_template
40210 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40211 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
40212 BEGIN
40213 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40214 f_charbig = 'updated by trigger'
40215       WHERE f_int1 = new.f_int1;
40216 END|
40217 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40218 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
40219 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40220         
40221 # check trigger-1 success:      1
40222 DROP TRIGGER trg_1;
40223 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40224 f_int2 = CAST(f_char1 AS SIGNED INT),
40225 f_charbig = 'just inserted'
40226    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40227 DELETE FROM t0_aux
40228 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40229 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40230 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40231 'just inserted' FROM t0_template
40232 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40233 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
40234 BEGIN
40235 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40236 f_charbig = 'updated by trigger'
40237       WHERE f_int1 = new.f_int1;
40238 END|
40239 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40240 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
40241 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40242         
40243 # check trigger-2 success:      1
40244 DROP TRIGGER trg_1;
40245 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40246 f_int2 = CAST(f_char1 AS SIGNED INT),
40247 f_charbig = 'just inserted'
40248    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40249 DELETE FROM t0_aux
40250 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40251 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40252 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40253 'just inserted' FROM t0_template
40254 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40255 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
40256 BEGIN
40257 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40258 f_charbig = 'updated by trigger'
40259       WHERE f_int1 = new.f_int1;
40260 END|
40261 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
40262 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40263         
40264 # check trigger-3 success:      1
40265 DROP TRIGGER trg_1;
40266 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40267 f_int2 = CAST(f_char1 AS SIGNED INT),
40268 f_charbig = 'just inserted'
40269    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40270 DELETE FROM t0_aux
40271 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40272 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40273 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40274 'just inserted' FROM t0_template
40275 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40276 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
40277 BEGIN
40278 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40279 f_charbig = 'updated by trigger'
40280       WHERE f_int1 = - old.f_int1;
40281 END|
40282 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
40283 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40284         
40285 # check trigger-4 success:      1
40286 DROP TRIGGER trg_1;
40287 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40288 f_int2 = CAST(f_char1 AS SIGNED INT),
40289 f_charbig = 'just inserted'
40290    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40291 DELETE FROM t0_aux
40292 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40293 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40294 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40295 'just inserted' FROM t0_template
40296 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40297 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
40298 BEGIN
40299 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40300 f_charbig = 'updated by trigger'
40301       WHERE f_int1 = new.f_int1;
40302 END|
40303 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
40304 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40305         
40306 # check trigger-5 success:      1
40307 DROP TRIGGER trg_1;
40308 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40309 f_int2 = CAST(f_char1 AS SIGNED INT),
40310 f_charbig = 'just inserted'
40311    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40312 DELETE FROM t0_aux
40313 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40314 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40315 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40316 'just inserted' FROM t0_template
40317 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40318 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
40319 BEGIN
40320 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40321 f_charbig = 'updated by trigger'
40322       WHERE f_int1 = - old.f_int1;
40323 END|
40324 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
40325 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40326         
40327 # check trigger-6 success:      1
40328 DROP TRIGGER trg_1;
40329 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40330 f_int2 = CAST(f_char1 AS SIGNED INT),
40331 f_charbig = 'just inserted'
40332    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40333 DELETE FROM t0_aux
40334 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40335 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40336 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40337 'just inserted' FROM t0_template
40338 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40339 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
40340 BEGIN
40341 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40342 f_charbig = 'updated by trigger'
40343       WHERE f_int1 = - old.f_int1;
40344 END|
40345 DELETE FROM t0_aux
40346 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40347         
40348 # check trigger-7 success:      1
40349 DROP TRIGGER trg_1;
40350 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40351 f_int2 = CAST(f_char1 AS SIGNED INT),
40352 f_charbig = 'just inserted'
40353    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40354 DELETE FROM t0_aux
40355 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40356 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40357 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40358 'just inserted' FROM t0_template
40359 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40360 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
40361 BEGIN
40362 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40363 f_charbig = 'updated by trigger'
40364       WHERE f_int1 = - old.f_int1;
40365 END|
40366 DELETE FROM t0_aux
40367 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40368         
40369 # check trigger-8 success:      1
40370 DROP TRIGGER trg_1;
40371 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40372 f_int2 = CAST(f_char1 AS SIGNED INT),
40373 f_charbig = 'just inserted'
40374    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40375 DELETE FROM t0_aux
40376 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40377 DELETE FROM t1
40378 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40379 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
40380 BEGIN
40381 SET new.f_int1 = old.f_int1 + @max_row,
40382 new.f_int2 = old.f_int2 - @max_row,
40383 new.f_charbig = '####updated per update trigger####';
40384 END|
40385 UPDATE t1
40386 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
40387 f_charbig = '####updated per update statement itself####';
40388         
40389 # check trigger-9 success:      1
40390 DROP TRIGGER trg_2;
40391 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40392 f_int2 = CAST(f_char1 AS SIGNED INT),
40393 f_charbig = CONCAT('===',f_char1,'===');
40394 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
40395 BEGIN
40396 SET new.f_int1 = new.f_int1 + @max_row,
40397 new.f_int2 = new.f_int2 - @max_row,
40398 new.f_charbig = '####updated per update trigger####';
40399 END|
40400 UPDATE t1
40401 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
40402 f_charbig = '####updated per update statement itself####';
40403         
40404 # check trigger-10 success:     1
40405 DROP TRIGGER trg_2;
40406 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40407 f_int2 = CAST(f_char1 AS SIGNED INT),
40408 f_charbig = CONCAT('===',f_char1,'===');
40409 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
40410 BEGIN
40411 SET new.f_int1 = @my_max1 + @counter,
40412 new.f_int2 = @my_min2 - @counter,
40413 new.f_charbig = '####updated per insert trigger####';
40414 SET @counter = @counter + 1;
40415 END|
40416 SET @counter = 1;
40417 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
40418 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40419 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
40420 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
40421 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
40422 ORDER BY f_int1;
40423 DROP TRIGGER trg_3;
40424         
40425 # check trigger-11 success:     1
40426 DELETE FROM t1
40427 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
40428 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
40429 AND f_charbig = '####updated per insert trigger####';
40430 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
40431 BEGIN
40432 SET new.f_int1 = @my_max1 + @counter,
40433 new.f_int2 = @my_min2 - @counter,
40434 new.f_charbig = '####updated per insert trigger####';
40435 SET @counter = @counter + 1;
40436 END|
40437 SET @counter = 1;
40438 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
40439 INSERT INTO t1 (f_char1, f_char2, f_charbig)
40440 SELECT CAST(f_int1 AS CHAR),
40441 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
40442 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
40443 ORDER BY f_int1;
40444 DROP TRIGGER trg_3;
40445         
40446 # check trigger-12 success:     1
40447 DELETE FROM t1
40448 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
40449 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
40450 AND f_charbig = '####updated per insert trigger####';
40451 ANALYZE  TABLE t1;
40452 Table   Op      Msg_type        Msg_text
40453 test.t1 analyze status  OK
40454 CHECK    TABLE t1 EXTENDED;
40455 Table   Op      Msg_type        Msg_text
40456 test.t1 check   status  OK
40457 CHECKSUM TABLE t1 EXTENDED;
40458 Table   Checksum
40459 test.t1 <some_value>
40460 OPTIMIZE TABLE t1;
40461 Table   Op      Msg_type        Msg_text
40462 test.t1 optimize        status  OK
40463 # check layout success:    1
40464 REPAIR   TABLE t1 EXTENDED;
40465 Table   Op      Msg_type        Msg_text
40466 test.t1 repair  status  OK
40467 # check layout success:    1
40468 TRUNCATE t1;
40469         
40470 # check TRUNCATE success:       1
40471 # check layout success:    1
40472 # End usability test (inc/partition_check.inc)
40473 DROP TABLE t1;
40474 CREATE TABLE t1 (
40475 f_int1 INTEGER,
40476 f_int2 INTEGER,
40477 f_char1 CHAR(20),
40478 f_char2 CHAR(20),
40479 f_charbig VARCHAR(1000)
40482 PARTITION BY RANGE(f_int1)
40483 (PARTITION parta VALUES LESS THAN (0),
40484 PARTITION part_1 VALUES LESS THAN (5),
40485 PARTITION part_2 VALUES LESS THAN (10),
40486 PARTITION part_3 VALUES LESS THAN (10 + 5),
40487 PARTITION part_4 VALUES LESS THAN (20),
40488 PARTITION part_5 VALUES LESS THAN (2147483646));
40489 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
40490 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
40491 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
40492 ALTER TABLE t1 OPTIMIZE PARTITION part_1;
40493 Table   Op      Msg_type        Msg_text
40494 test.t1 optimize        status  OK
40495 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
40496 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
40497 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
40498 # Start usability test (inc/partition_check.inc)
40499 create_command
40500 SHOW CREATE TABLE t1;
40501 Table   Create Table
40502 t1      CREATE TABLE `t1` (
40503   `f_int1` int(11) DEFAULT NULL,
40504   `f_int2` int(11) DEFAULT NULL,
40505   `f_char1` char(20) DEFAULT NULL,
40506   `f_char2` char(20) DEFAULT NULL,
40507   `f_charbig` varchar(1000) DEFAULT NULL
40508 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
40509 /*!50100 PARTITION BY RANGE (f_int1)
40510 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
40511  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
40512  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
40513  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
40514  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
40515  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
40517 unified filelist
40518 t1#P#part_1.MYD
40519 t1#P#part_1.MYI
40520 t1#P#part_2.MYD
40521 t1#P#part_2.MYI
40522 t1#P#part_3.MYD
40523 t1#P#part_3.MYI
40524 t1#P#part_4.MYD
40525 t1#P#part_4.MYI
40526 t1#P#part_5.MYD
40527 t1#P#part_5.MYI
40528 t1#P#parta.MYD
40529 t1#P#parta.MYI
40530 t1.frm
40531 t1.par
40533 # check prerequisites-1 success:    1
40534 # check COUNT(*) success:    1
40535 # check MIN/MAX(f_int1) success:    1
40536 # check MIN/MAX(f_int2) success:    1
40537 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40538 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
40539 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
40540 WHERE f_int1 IN (2,3);
40541 # check prerequisites-3 success:    1
40542 DELETE FROM t1 WHERE f_charbig = 'delete me';
40543 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
40544 # check read via f_int1 success: 1
40545 # check read via f_int2 success: 1
40546         
40547 # check multiple-1 success:     1
40548 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
40549         
40550 # check multiple-2 success:     1
40551 INSERT INTO t1 SELECT * FROM t0_template
40552 WHERE MOD(f_int1,3) = 0;
40553         
40554 # check multiple-3 success:     1
40555 UPDATE t1 SET f_int1 = f_int1 + @max_row
40556 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
40557 AND @max_row_div2 + @max_row_div4;
40558         
40559 # check multiple-4 success:     1
40560 DELETE FROM t1
40561 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
40562 AND @max_row_div2 + @max_row_div4 + @max_row;
40563         
40564 # check multiple-5 success:     1
40565 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
40566 INSERT INTO t1
40567 SET f_int1 = @cur_value , f_int2 = @cur_value,
40568 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
40569 f_charbig = '#SINGLE#';
40570         
40571 # check single-1 success:       1
40572 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
40573 INSERT INTO t1
40574 SET f_int1 = @cur_value , f_int2 = @cur_value,
40575 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
40576 f_charbig = '#SINGLE#';
40577         
40578 # check single-2 success:       1
40579 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
40580 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
40581 UPDATE t1 SET f_int1 = @cur_value2
40582 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
40583         
40584 # check single-3 success:       1
40585 SET @cur_value1= -1;
40586 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
40587 UPDATE t1 SET f_int1 = @cur_value1
40588 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
40589         
40590 # check single-4 success:       1
40591 SELECT MAX(f_int1) INTO @cur_value FROM t1;
40592 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
40593         
40594 # check single-5 success:       1
40595 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
40596         
40597 # check single-6 success:       1
40598 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
40599 ERROR HY000: Table has no partition for value 2147483647
40600 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
40601 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
40602 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
40603 f_charbig = '#NULL#';
40604 INSERT INTO t1
40605 SET f_int1 = NULL , f_int2 = -@max_row,
40606 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
40607 f_charbig = '#NULL#';
40608 # check null success:    1
40609         
40610 # check null-1 success:         1
40611 UPDATE t1 SET f_int1 = -@max_row
40612 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
40613 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
40614         
40615 # check null-2 success:         1
40616 UPDATE t1 SET f_int1 = NULL
40617 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
40618 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
40619         
40620 # check null-3 success:         1
40621 DELETE FROM t1
40622 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
40623 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
40624         
40625 # check null-4 success:         1
40626 DELETE FROM t1
40627 WHERE f_int1 = 0 AND f_int2 = 0
40628 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
40629 AND f_charbig = '#NULL#';
40630 SET AUTOCOMMIT= 0;
40631 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40632 SELECT f_int1, f_int1, '', '', 'was inserted'
40633 FROM t0_template source_tab
40634 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
40635         
40636 # check transactions-1 success:         1
40637 COMMIT WORK;
40638         
40639 # check transactions-2 success:         1
40640 ROLLBACK WORK;
40641         
40642 # check transactions-3 success:         1
40643 DELETE FROM t1 WHERE f_charbig = 'was inserted';
40644 COMMIT WORK;
40645 ROLLBACK WORK;
40646         
40647 # check transactions-4 success:         1
40648 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40649 SELECT f_int1, f_int1, '', '', 'was inserted'
40650 FROM t0_template source_tab
40651 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
40652         
40653 # check transactions-5 success:         1
40654 ROLLBACK WORK;
40655 Warnings:
40656 Warning 1196    Some non-transactional changed tables couldn't be rolled back
40657         
40658 # check transactions-6 success:         1
40659 # INFO: Storage engine used for t1 seems to be not transactional.
40660 COMMIT;
40661         
40662 # check transactions-7 success:         1
40663 DELETE FROM t1 WHERE f_charbig = 'was inserted';
40664 COMMIT WORK;
40665 SET @@session.sql_mode = 'traditional';
40666 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
40667 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40668 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
40669 '', '', 'was inserted' FROM t0_template
40670 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
40671 ERROR 22012: Division by 0
40672 COMMIT;
40673         
40674 # check transactions-8 success:         1
40675 # INFO: Storage engine used for t1 seems to be unable to revert
40676 #       changes made by the failing statement.
40677 SET @@session.sql_mode = '';
40678 SET AUTOCOMMIT= 1;
40679 DELETE FROM t1 WHERE f_charbig = 'was inserted';
40680 COMMIT WORK;
40681 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
40682         
40683 # check special-1 success:      1
40684 UPDATE t1 SET f_charbig = '';
40685         
40686 # check special-2 success:      1
40687 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
40688 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
40689 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
40690 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40691 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40692 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40693 'just inserted' FROM t0_template
40694 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40695 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
40696 BEGIN
40697 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40698 f_charbig = 'updated by trigger'
40699       WHERE f_int1 = new.f_int1;
40700 END|
40701 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40702 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
40703 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40704         
40705 # check trigger-1 success:      1
40706 DROP TRIGGER trg_1;
40707 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40708 f_int2 = CAST(f_char1 AS SIGNED INT),
40709 f_charbig = 'just inserted'
40710    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40711 DELETE FROM t0_aux
40712 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40713 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40714 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40715 'just inserted' FROM t0_template
40716 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40717 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
40718 BEGIN
40719 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40720 f_charbig = 'updated by trigger'
40721       WHERE f_int1 = new.f_int1;
40722 END|
40723 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40724 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
40725 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40726         
40727 # check trigger-2 success:      1
40728 DROP TRIGGER trg_1;
40729 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40730 f_int2 = CAST(f_char1 AS SIGNED INT),
40731 f_charbig = 'just inserted'
40732    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40733 DELETE FROM t0_aux
40734 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40735 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40736 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40737 'just inserted' FROM t0_template
40738 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40739 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
40740 BEGIN
40741 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40742 f_charbig = 'updated by trigger'
40743       WHERE f_int1 = new.f_int1;
40744 END|
40745 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
40746 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40747         
40748 # check trigger-3 success:      1
40749 DROP TRIGGER trg_1;
40750 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40751 f_int2 = CAST(f_char1 AS SIGNED INT),
40752 f_charbig = 'just inserted'
40753    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40754 DELETE FROM t0_aux
40755 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40756 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40757 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40758 'just inserted' FROM t0_template
40759 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40760 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
40761 BEGIN
40762 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40763 f_charbig = 'updated by trigger'
40764       WHERE f_int1 = - old.f_int1;
40765 END|
40766 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
40767 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40768         
40769 # check trigger-4 success:      1
40770 DROP TRIGGER trg_1;
40771 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40772 f_int2 = CAST(f_char1 AS SIGNED INT),
40773 f_charbig = 'just inserted'
40774    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40775 DELETE FROM t0_aux
40776 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40777 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40778 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40779 'just inserted' FROM t0_template
40780 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40781 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
40782 BEGIN
40783 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40784 f_charbig = 'updated by trigger'
40785       WHERE f_int1 = new.f_int1;
40786 END|
40787 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
40788 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40789         
40790 # check trigger-5 success:      1
40791 DROP TRIGGER trg_1;
40792 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40793 f_int2 = CAST(f_char1 AS SIGNED INT),
40794 f_charbig = 'just inserted'
40795    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40796 DELETE FROM t0_aux
40797 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40798 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40799 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40800 'just inserted' FROM t0_template
40801 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40802 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
40803 BEGIN
40804 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40805 f_charbig = 'updated by trigger'
40806       WHERE f_int1 = - old.f_int1;
40807 END|
40808 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
40809 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40810         
40811 # check trigger-6 success:      1
40812 DROP TRIGGER trg_1;
40813 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40814 f_int2 = CAST(f_char1 AS SIGNED INT),
40815 f_charbig = 'just inserted'
40816    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40817 DELETE FROM t0_aux
40818 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40819 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40820 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40821 'just inserted' FROM t0_template
40822 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40823 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
40824 BEGIN
40825 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40826 f_charbig = 'updated by trigger'
40827       WHERE f_int1 = - old.f_int1;
40828 END|
40829 DELETE FROM t0_aux
40830 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40831         
40832 # check trigger-7 success:      1
40833 DROP TRIGGER trg_1;
40834 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40835 f_int2 = CAST(f_char1 AS SIGNED INT),
40836 f_charbig = 'just inserted'
40837    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40838 DELETE FROM t0_aux
40839 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40840 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40841 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40842 'just inserted' FROM t0_template
40843 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40844 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
40845 BEGIN
40846 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40847 f_charbig = 'updated by trigger'
40848       WHERE f_int1 = - old.f_int1;
40849 END|
40850 DELETE FROM t0_aux
40851 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40852         
40853 # check trigger-8 success:      1
40854 DROP TRIGGER trg_1;
40855 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40856 f_int2 = CAST(f_char1 AS SIGNED INT),
40857 f_charbig = 'just inserted'
40858    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40859 DELETE FROM t0_aux
40860 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40861 DELETE FROM t1
40862 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40863 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
40864 BEGIN
40865 SET new.f_int1 = old.f_int1 + @max_row,
40866 new.f_int2 = old.f_int2 - @max_row,
40867 new.f_charbig = '####updated per update trigger####';
40868 END|
40869 UPDATE t1
40870 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
40871 f_charbig = '####updated per update statement itself####';
40872         
40873 # check trigger-9 success:      1
40874 DROP TRIGGER trg_2;
40875 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40876 f_int2 = CAST(f_char1 AS SIGNED INT),
40877 f_charbig = CONCAT('===',f_char1,'===');
40878 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
40879 BEGIN
40880 SET new.f_int1 = new.f_int1 + @max_row,
40881 new.f_int2 = new.f_int2 - @max_row,
40882 new.f_charbig = '####updated per update trigger####';
40883 END|
40884 UPDATE t1
40885 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
40886 f_charbig = '####updated per update statement itself####';
40887         
40888 # check trigger-10 success:     1
40889 DROP TRIGGER trg_2;
40890 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40891 f_int2 = CAST(f_char1 AS SIGNED INT),
40892 f_charbig = CONCAT('===',f_char1,'===');
40893 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
40894 BEGIN
40895 SET new.f_int1 = @my_max1 + @counter,
40896 new.f_int2 = @my_min2 - @counter,
40897 new.f_charbig = '####updated per insert trigger####';
40898 SET @counter = @counter + 1;
40899 END|
40900 SET @counter = 1;
40901 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
40902 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40903 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
40904 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
40905 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
40906 ORDER BY f_int1;
40907 DROP TRIGGER trg_3;
40908         
40909 # check trigger-11 success:     1
40910 DELETE FROM t1
40911 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
40912 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
40913 AND f_charbig = '####updated per insert trigger####';
40914 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
40915 BEGIN
40916 SET new.f_int1 = @my_max1 + @counter,
40917 new.f_int2 = @my_min2 - @counter,
40918 new.f_charbig = '####updated per insert trigger####';
40919 SET @counter = @counter + 1;
40920 END|
40921 SET @counter = 1;
40922 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
40923 INSERT INTO t1 (f_char1, f_char2, f_charbig)
40924 SELECT CAST(f_int1 AS CHAR),
40925 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
40926 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
40927 ORDER BY f_int1;
40928 DROP TRIGGER trg_3;
40929         
40930 # check trigger-12 success:     1
40931 DELETE FROM t1
40932 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
40933 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
40934 AND f_charbig = '####updated per insert trigger####';
40935 ANALYZE  TABLE t1;
40936 Table   Op      Msg_type        Msg_text
40937 test.t1 analyze status  OK
40938 CHECK    TABLE t1 EXTENDED;
40939 Table   Op      Msg_type        Msg_text
40940 test.t1 check   status  OK
40941 CHECKSUM TABLE t1 EXTENDED;
40942 Table   Checksum
40943 test.t1 <some_value>
40944 OPTIMIZE TABLE t1;
40945 Table   Op      Msg_type        Msg_text
40946 test.t1 optimize        status  OK
40947 # check layout success:    1
40948 REPAIR   TABLE t1 EXTENDED;
40949 Table   Op      Msg_type        Msg_text
40950 test.t1 repair  status  OK
40951 # check layout success:    1
40952 TRUNCATE t1;
40953         
40954 # check TRUNCATE success:       1
40955 # check layout success:    1
40956 # End usability test (inc/partition_check.inc)
40957 DROP TABLE t1;
40958 CREATE TABLE t1 (
40959 f_int1 INTEGER,
40960 f_int2 INTEGER,
40961 f_char1 CHAR(20),
40962 f_char2 CHAR(20),
40963 f_charbig VARCHAR(1000)
40966 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
40967 (PARTITION part_1 VALUES LESS THAN (0),
40968 PARTITION part_2 VALUES LESS THAN (5),
40969 PARTITION part_3 VALUES LESS THAN (10),
40970 PARTITION part_4 VALUES LESS THAN (2147483646));
40971 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
40972 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
40973 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
40974 ALTER TABLE t1 OPTIMIZE PARTITION part_1;
40975 Table   Op      Msg_type        Msg_text
40976 test.t1 optimize        status  OK
40977 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
40978 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
40979 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
40980 # Start usability test (inc/partition_check.inc)
40981 create_command
40982 SHOW CREATE TABLE t1;
40983 Table   Create Table
40984 t1      CREATE TABLE `t1` (
40985   `f_int1` int(11) DEFAULT NULL,
40986   `f_int2` int(11) DEFAULT NULL,
40987   `f_char1` char(20) DEFAULT NULL,
40988   `f_char2` char(20) DEFAULT NULL,
40989   `f_charbig` varchar(1000) DEFAULT NULL
40990 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
40991 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
40992 SUBPARTITION BY HASH (f_int1)
40993 SUBPARTITIONS 2
40994 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
40995  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
40996  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
40997  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
40999 unified filelist
41000 t1#P#part_1#SP#part_1sp0.MYD
41001 t1#P#part_1#SP#part_1sp0.MYI
41002 t1#P#part_1#SP#part_1sp1.MYD
41003 t1#P#part_1#SP#part_1sp1.MYI
41004 t1#P#part_2#SP#part_2sp0.MYD
41005 t1#P#part_2#SP#part_2sp0.MYI
41006 t1#P#part_2#SP#part_2sp1.MYD
41007 t1#P#part_2#SP#part_2sp1.MYI
41008 t1#P#part_3#SP#part_3sp0.MYD
41009 t1#P#part_3#SP#part_3sp0.MYI
41010 t1#P#part_3#SP#part_3sp1.MYD
41011 t1#P#part_3#SP#part_3sp1.MYI
41012 t1#P#part_4#SP#part_4sp0.MYD
41013 t1#P#part_4#SP#part_4sp0.MYI
41014 t1#P#part_4#SP#part_4sp1.MYD
41015 t1#P#part_4#SP#part_4sp1.MYI
41016 t1.frm
41017 t1.par
41019 # check prerequisites-1 success:    1
41020 # check COUNT(*) success:    1
41021 # check MIN/MAX(f_int1) success:    1
41022 # check MIN/MAX(f_int2) success:    1
41023 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41024 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
41025 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
41026 WHERE f_int1 IN (2,3);
41027 # check prerequisites-3 success:    1
41028 DELETE FROM t1 WHERE f_charbig = 'delete me';
41029 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
41030 # check read via f_int1 success: 1
41031 # check read via f_int2 success: 1
41032         
41033 # check multiple-1 success:     1
41034 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
41035         
41036 # check multiple-2 success:     1
41037 INSERT INTO t1 SELECT * FROM t0_template
41038 WHERE MOD(f_int1,3) = 0;
41039         
41040 # check multiple-3 success:     1
41041 UPDATE t1 SET f_int1 = f_int1 + @max_row
41042 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
41043 AND @max_row_div2 + @max_row_div4;
41044         
41045 # check multiple-4 success:     1
41046 DELETE FROM t1
41047 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
41048 AND @max_row_div2 + @max_row_div4 + @max_row;
41049         
41050 # check multiple-5 success:     1
41051 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
41052 INSERT INTO t1
41053 SET f_int1 = @cur_value , f_int2 = @cur_value,
41054 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
41055 f_charbig = '#SINGLE#';
41056         
41057 # check single-1 success:       1
41058 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
41059 INSERT INTO t1
41060 SET f_int1 = @cur_value , f_int2 = @cur_value,
41061 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
41062 f_charbig = '#SINGLE#';
41063         
41064 # check single-2 success:       1
41065 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
41066 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
41067 UPDATE t1 SET f_int1 = @cur_value2
41068 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
41069         
41070 # check single-3 success:       1
41071 SET @cur_value1= -1;
41072 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
41073 UPDATE t1 SET f_int1 = @cur_value1
41074 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
41075         
41076 # check single-4 success:       1
41077 SELECT MAX(f_int1) INTO @cur_value FROM t1;
41078 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
41079         
41080 # check single-5 success:       1
41081 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
41082         
41083 # check single-6 success:       1
41084 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
41085         
41086 # check single-7 success:       1
41087 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
41088 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
41089 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
41090 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
41091 f_charbig = '#NULL#';
41092 INSERT INTO t1
41093 SET f_int1 = NULL , f_int2 = -@max_row,
41094 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
41095 f_charbig = '#NULL#';
41096 # check null success:    1
41097         
41098 # check null-1 success:         1
41099 UPDATE t1 SET f_int1 = -@max_row
41100 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
41101 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
41102         
41103 # check null-2 success:         1
41104 UPDATE t1 SET f_int1 = NULL
41105 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
41106 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
41107         
41108 # check null-3 success:         1
41109 DELETE FROM t1
41110 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
41111 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
41112         
41113 # check null-4 success:         1
41114 DELETE FROM t1
41115 WHERE f_int1 = 0 AND f_int2 = 0
41116 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
41117 AND f_charbig = '#NULL#';
41118 SET AUTOCOMMIT= 0;
41119 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41120 SELECT f_int1, f_int1, '', '', 'was inserted'
41121 FROM t0_template source_tab
41122 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
41123         
41124 # check transactions-1 success:         1
41125 COMMIT WORK;
41126         
41127 # check transactions-2 success:         1
41128 ROLLBACK WORK;
41129         
41130 # check transactions-3 success:         1
41131 DELETE FROM t1 WHERE f_charbig = 'was inserted';
41132 COMMIT WORK;
41133 ROLLBACK WORK;
41134         
41135 # check transactions-4 success:         1
41136 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41137 SELECT f_int1, f_int1, '', '', 'was inserted'
41138 FROM t0_template source_tab
41139 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
41140         
41141 # check transactions-5 success:         1
41142 ROLLBACK WORK;
41143 Warnings:
41144 Warning 1196    Some non-transactional changed tables couldn't be rolled back
41145         
41146 # check transactions-6 success:         1
41147 # INFO: Storage engine used for t1 seems to be not transactional.
41148 COMMIT;
41149         
41150 # check transactions-7 success:         1
41151 DELETE FROM t1 WHERE f_charbig = 'was inserted';
41152 COMMIT WORK;
41153 SET @@session.sql_mode = 'traditional';
41154 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
41155 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41156 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
41157 '', '', 'was inserted' FROM t0_template
41158 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
41159 ERROR 22012: Division by 0
41160 COMMIT;
41161         
41162 # check transactions-8 success:         1
41163 # INFO: Storage engine used for t1 seems to be unable to revert
41164 #       changes made by the failing statement.
41165 SET @@session.sql_mode = '';
41166 SET AUTOCOMMIT= 1;
41167 DELETE FROM t1 WHERE f_charbig = 'was inserted';
41168 COMMIT WORK;
41169 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
41170         
41171 # check special-1 success:      1
41172 UPDATE t1 SET f_charbig = '';
41173         
41174 # check special-2 success:      1
41175 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
41176 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
41177 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
41178 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41179 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41180 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41181 'just inserted' FROM t0_template
41182 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41183 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
41184 BEGIN
41185 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41186 f_charbig = 'updated by trigger'
41187       WHERE f_int1 = new.f_int1;
41188 END|
41189 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41190 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
41191 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41192         
41193 # check trigger-1 success:      1
41194 DROP TRIGGER trg_1;
41195 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41196 f_int2 = CAST(f_char1 AS SIGNED INT),
41197 f_charbig = 'just inserted'
41198    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41199 DELETE FROM t0_aux
41200 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41201 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41202 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41203 'just inserted' FROM t0_template
41204 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41205 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
41206 BEGIN
41207 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41208 f_charbig = 'updated by trigger'
41209       WHERE f_int1 = new.f_int1;
41210 END|
41211 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41212 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
41213 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41214         
41215 # check trigger-2 success:      1
41216 DROP TRIGGER trg_1;
41217 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41218 f_int2 = CAST(f_char1 AS SIGNED INT),
41219 f_charbig = 'just inserted'
41220    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41221 DELETE FROM t0_aux
41222 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41223 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41224 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41225 'just inserted' FROM t0_template
41226 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41227 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
41228 BEGIN
41229 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41230 f_charbig = 'updated by trigger'
41231       WHERE f_int1 = new.f_int1;
41232 END|
41233 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
41234 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41235         
41236 # check trigger-3 success:      1
41237 DROP TRIGGER trg_1;
41238 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41239 f_int2 = CAST(f_char1 AS SIGNED INT),
41240 f_charbig = 'just inserted'
41241    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41242 DELETE FROM t0_aux
41243 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41244 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41245 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41246 'just inserted' FROM t0_template
41247 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41248 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
41249 BEGIN
41250 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41251 f_charbig = 'updated by trigger'
41252       WHERE f_int1 = - old.f_int1;
41253 END|
41254 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
41255 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41256         
41257 # check trigger-4 success:      1
41258 DROP TRIGGER trg_1;
41259 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41260 f_int2 = CAST(f_char1 AS SIGNED INT),
41261 f_charbig = 'just inserted'
41262    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41263 DELETE FROM t0_aux
41264 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41265 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41266 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41267 'just inserted' FROM t0_template
41268 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41269 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
41270 BEGIN
41271 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41272 f_charbig = 'updated by trigger'
41273       WHERE f_int1 = new.f_int1;
41274 END|
41275 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
41276 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41277         
41278 # check trigger-5 success:      1
41279 DROP TRIGGER trg_1;
41280 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41281 f_int2 = CAST(f_char1 AS SIGNED INT),
41282 f_charbig = 'just inserted'
41283    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41284 DELETE FROM t0_aux
41285 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41286 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41287 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41288 'just inserted' FROM t0_template
41289 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41290 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
41291 BEGIN
41292 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41293 f_charbig = 'updated by trigger'
41294       WHERE f_int1 = - old.f_int1;
41295 END|
41296 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
41297 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41298         
41299 # check trigger-6 success:      1
41300 DROP TRIGGER trg_1;
41301 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41302 f_int2 = CAST(f_char1 AS SIGNED INT),
41303 f_charbig = 'just inserted'
41304    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41305 DELETE FROM t0_aux
41306 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41307 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41308 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41309 'just inserted' FROM t0_template
41310 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41311 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
41312 BEGIN
41313 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41314 f_charbig = 'updated by trigger'
41315       WHERE f_int1 = - old.f_int1;
41316 END|
41317 DELETE FROM t0_aux
41318 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41319         
41320 # check trigger-7 success:      1
41321 DROP TRIGGER trg_1;
41322 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41323 f_int2 = CAST(f_char1 AS SIGNED INT),
41324 f_charbig = 'just inserted'
41325    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41326 DELETE FROM t0_aux
41327 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41328 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41329 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41330 'just inserted' FROM t0_template
41331 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41332 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
41333 BEGIN
41334 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41335 f_charbig = 'updated by trigger'
41336       WHERE f_int1 = - old.f_int1;
41337 END|
41338 DELETE FROM t0_aux
41339 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41340         
41341 # check trigger-8 success:      1
41342 DROP TRIGGER trg_1;
41343 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41344 f_int2 = CAST(f_char1 AS SIGNED INT),
41345 f_charbig = 'just inserted'
41346    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41347 DELETE FROM t0_aux
41348 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41349 DELETE FROM t1
41350 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41351 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
41352 BEGIN
41353 SET new.f_int1 = old.f_int1 + @max_row,
41354 new.f_int2 = old.f_int2 - @max_row,
41355 new.f_charbig = '####updated per update trigger####';
41356 END|
41357 UPDATE t1
41358 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
41359 f_charbig = '####updated per update statement itself####';
41360         
41361 # check trigger-9 success:      1
41362 DROP TRIGGER trg_2;
41363 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41364 f_int2 = CAST(f_char1 AS SIGNED INT),
41365 f_charbig = CONCAT('===',f_char1,'===');
41366 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
41367 BEGIN
41368 SET new.f_int1 = new.f_int1 + @max_row,
41369 new.f_int2 = new.f_int2 - @max_row,
41370 new.f_charbig = '####updated per update trigger####';
41371 END|
41372 UPDATE t1
41373 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
41374 f_charbig = '####updated per update statement itself####';
41375         
41376 # check trigger-10 success:     1
41377 DROP TRIGGER trg_2;
41378 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41379 f_int2 = CAST(f_char1 AS SIGNED INT),
41380 f_charbig = CONCAT('===',f_char1,'===');
41381 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
41382 BEGIN
41383 SET new.f_int1 = @my_max1 + @counter,
41384 new.f_int2 = @my_min2 - @counter,
41385 new.f_charbig = '####updated per insert trigger####';
41386 SET @counter = @counter + 1;
41387 END|
41388 SET @counter = 1;
41389 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
41390 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41391 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
41392 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
41393 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
41394 ORDER BY f_int1;
41395 DROP TRIGGER trg_3;
41396         
41397 # check trigger-11 success:     1
41398 DELETE FROM t1
41399 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
41400 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
41401 AND f_charbig = '####updated per insert trigger####';
41402 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
41403 BEGIN
41404 SET new.f_int1 = @my_max1 + @counter,
41405 new.f_int2 = @my_min2 - @counter,
41406 new.f_charbig = '####updated per insert trigger####';
41407 SET @counter = @counter + 1;
41408 END|
41409 SET @counter = 1;
41410 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
41411 INSERT INTO t1 (f_char1, f_char2, f_charbig)
41412 SELECT CAST(f_int1 AS CHAR),
41413 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
41414 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
41415 ORDER BY f_int1;
41416 DROP TRIGGER trg_3;
41417         
41418 # check trigger-12 success:     1
41419 DELETE FROM t1
41420 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
41421 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
41422 AND f_charbig = '####updated per insert trigger####';
41423 ANALYZE  TABLE t1;
41424 Table   Op      Msg_type        Msg_text
41425 test.t1 analyze status  OK
41426 CHECK    TABLE t1 EXTENDED;
41427 Table   Op      Msg_type        Msg_text
41428 test.t1 check   status  OK
41429 CHECKSUM TABLE t1 EXTENDED;
41430 Table   Checksum
41431 test.t1 <some_value>
41432 OPTIMIZE TABLE t1;
41433 Table   Op      Msg_type        Msg_text
41434 test.t1 optimize        status  OK
41435 # check layout success:    1
41436 REPAIR   TABLE t1 EXTENDED;
41437 Table   Op      Msg_type        Msg_text
41438 test.t1 repair  status  OK
41439 # check layout success:    1
41440 TRUNCATE t1;
41441         
41442 # check TRUNCATE success:       1
41443 # check layout success:    1
41444 # End usability test (inc/partition_check.inc)
41445 DROP TABLE t1;
41446 CREATE TABLE t1 (
41447 f_int1 INTEGER,
41448 f_int2 INTEGER,
41449 f_char1 CHAR(20),
41450 f_char2 CHAR(20),
41451 f_charbig VARCHAR(1000)
41454 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
41455 (PARTITION part_1 VALUES LESS THAN (0)
41456 (SUBPARTITION subpart11, SUBPARTITION subpart12),
41457 PARTITION part_2 VALUES LESS THAN (5)
41458 (SUBPARTITION subpart21, SUBPARTITION subpart22),
41459 PARTITION part_3 VALUES LESS THAN (10)
41460 (SUBPARTITION subpart31, SUBPARTITION subpart32),
41461 PARTITION part_4 VALUES LESS THAN (2147483646)
41462 (SUBPARTITION subpart41, SUBPARTITION subpart42));
41463 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
41464 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
41465 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
41466 ALTER TABLE t1 OPTIMIZE PARTITION part_1;
41467 Table   Op      Msg_type        Msg_text
41468 test.t1 optimize        status  OK
41469 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
41470 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
41471 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
41472 # Start usability test (inc/partition_check.inc)
41473 create_command
41474 SHOW CREATE TABLE t1;
41475 Table   Create Table
41476 t1      CREATE TABLE `t1` (
41477   `f_int1` int(11) DEFAULT NULL,
41478   `f_int2` int(11) DEFAULT NULL,
41479   `f_char1` char(20) DEFAULT NULL,
41480   `f_char2` char(20) DEFAULT NULL,
41481   `f_charbig` varchar(1000) DEFAULT NULL
41482 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
41483 /*!50100 PARTITION BY RANGE (f_int1)
41484 SUBPARTITION BY KEY (f_int1)
41485 (PARTITION part_1 VALUES LESS THAN (0)
41486  (SUBPARTITION subpart11 ENGINE = MyISAM,
41487   SUBPARTITION subpart12 ENGINE = MyISAM),
41488  PARTITION part_2 VALUES LESS THAN (5)
41489  (SUBPARTITION subpart21 ENGINE = MyISAM,
41490   SUBPARTITION subpart22 ENGINE = MyISAM),
41491  PARTITION part_3 VALUES LESS THAN (10)
41492  (SUBPARTITION subpart31 ENGINE = MyISAM,
41493   SUBPARTITION subpart32 ENGINE = MyISAM),
41494  PARTITION part_4 VALUES LESS THAN (2147483646)
41495  (SUBPARTITION subpart41 ENGINE = MyISAM,
41496   SUBPARTITION subpart42 ENGINE = MyISAM)) */
41498 unified filelist
41499 t1#P#part_1#SP#subpart11.MYD
41500 t1#P#part_1#SP#subpart11.MYI
41501 t1#P#part_1#SP#subpart12.MYD
41502 t1#P#part_1#SP#subpart12.MYI
41503 t1#P#part_2#SP#subpart21.MYD
41504 t1#P#part_2#SP#subpart21.MYI
41505 t1#P#part_2#SP#subpart22.MYD
41506 t1#P#part_2#SP#subpart22.MYI
41507 t1#P#part_3#SP#subpart31.MYD
41508 t1#P#part_3#SP#subpart31.MYI
41509 t1#P#part_3#SP#subpart32.MYD
41510 t1#P#part_3#SP#subpart32.MYI
41511 t1#P#part_4#SP#subpart41.MYD
41512 t1#P#part_4#SP#subpart41.MYI
41513 t1#P#part_4#SP#subpart42.MYD
41514 t1#P#part_4#SP#subpart42.MYI
41515 t1.frm
41516 t1.par
41518 # check prerequisites-1 success:    1
41519 # check COUNT(*) success:    1
41520 # check MIN/MAX(f_int1) success:    1
41521 # check MIN/MAX(f_int2) success:    1
41522 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41523 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
41524 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
41525 WHERE f_int1 IN (2,3);
41526 # check prerequisites-3 success:    1
41527 DELETE FROM t1 WHERE f_charbig = 'delete me';
41528 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
41529 # check read via f_int1 success: 1
41530 # check read via f_int2 success: 1
41531         
41532 # check multiple-1 success:     1
41533 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
41534         
41535 # check multiple-2 success:     1
41536 INSERT INTO t1 SELECT * FROM t0_template
41537 WHERE MOD(f_int1,3) = 0;
41538         
41539 # check multiple-3 success:     1
41540 UPDATE t1 SET f_int1 = f_int1 + @max_row
41541 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
41542 AND @max_row_div2 + @max_row_div4;
41543         
41544 # check multiple-4 success:     1
41545 DELETE FROM t1
41546 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
41547 AND @max_row_div2 + @max_row_div4 + @max_row;
41548         
41549 # check multiple-5 success:     1
41550 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
41551 INSERT INTO t1
41552 SET f_int1 = @cur_value , f_int2 = @cur_value,
41553 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
41554 f_charbig = '#SINGLE#';
41555         
41556 # check single-1 success:       1
41557 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
41558 INSERT INTO t1
41559 SET f_int1 = @cur_value , f_int2 = @cur_value,
41560 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
41561 f_charbig = '#SINGLE#';
41562         
41563 # check single-2 success:       1
41564 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
41565 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
41566 UPDATE t1 SET f_int1 = @cur_value2
41567 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
41568         
41569 # check single-3 success:       1
41570 SET @cur_value1= -1;
41571 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
41572 UPDATE t1 SET f_int1 = @cur_value1
41573 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
41574         
41575 # check single-4 success:       1
41576 SELECT MAX(f_int1) INTO @cur_value FROM t1;
41577 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
41578         
41579 # check single-5 success:       1
41580 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
41581         
41582 # check single-6 success:       1
41583 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
41584 ERROR HY000: Table has no partition for value 2147483647
41585 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
41586 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
41587 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
41588 f_charbig = '#NULL#';
41589 INSERT INTO t1
41590 SET f_int1 = NULL , f_int2 = -@max_row,
41591 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
41592 f_charbig = '#NULL#';
41593 # check null success:    1
41594         
41595 # check null-1 success:         1
41596 UPDATE t1 SET f_int1 = -@max_row
41597 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
41598 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
41599         
41600 # check null-2 success:         1
41601 UPDATE t1 SET f_int1 = NULL
41602 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
41603 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
41604         
41605 # check null-3 success:         1
41606 DELETE FROM t1
41607 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
41608 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
41609         
41610 # check null-4 success:         1
41611 DELETE FROM t1
41612 WHERE f_int1 = 0 AND f_int2 = 0
41613 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
41614 AND f_charbig = '#NULL#';
41615 SET AUTOCOMMIT= 0;
41616 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41617 SELECT f_int1, f_int1, '', '', 'was inserted'
41618 FROM t0_template source_tab
41619 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
41620         
41621 # check transactions-1 success:         1
41622 COMMIT WORK;
41623         
41624 # check transactions-2 success:         1
41625 ROLLBACK WORK;
41626         
41627 # check transactions-3 success:         1
41628 DELETE FROM t1 WHERE f_charbig = 'was inserted';
41629 COMMIT WORK;
41630 ROLLBACK WORK;
41631         
41632 # check transactions-4 success:         1
41633 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41634 SELECT f_int1, f_int1, '', '', 'was inserted'
41635 FROM t0_template source_tab
41636 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
41637         
41638 # check transactions-5 success:         1
41639 ROLLBACK WORK;
41640 Warnings:
41641 Warning 1196    Some non-transactional changed tables couldn't be rolled back
41642         
41643 # check transactions-6 success:         1
41644 # INFO: Storage engine used for t1 seems to be not transactional.
41645 COMMIT;
41646         
41647 # check transactions-7 success:         1
41648 DELETE FROM t1 WHERE f_charbig = 'was inserted';
41649 COMMIT WORK;
41650 SET @@session.sql_mode = 'traditional';
41651 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
41652 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41653 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
41654 '', '', 'was inserted' FROM t0_template
41655 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
41656 ERROR 22012: Division by 0
41657 COMMIT;
41658         
41659 # check transactions-8 success:         1
41660 # INFO: Storage engine used for t1 seems to be unable to revert
41661 #       changes made by the failing statement.
41662 SET @@session.sql_mode = '';
41663 SET AUTOCOMMIT= 1;
41664 DELETE FROM t1 WHERE f_charbig = 'was inserted';
41665 COMMIT WORK;
41666 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
41667         
41668 # check special-1 success:      1
41669 UPDATE t1 SET f_charbig = '';
41670         
41671 # check special-2 success:      1
41672 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
41673 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
41674 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
41675 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41676 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41677 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41678 'just inserted' FROM t0_template
41679 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41680 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
41681 BEGIN
41682 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41683 f_charbig = 'updated by trigger'
41684       WHERE f_int1 = new.f_int1;
41685 END|
41686 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41687 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
41688 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41689         
41690 # check trigger-1 success:      1
41691 DROP TRIGGER trg_1;
41692 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41693 f_int2 = CAST(f_char1 AS SIGNED INT),
41694 f_charbig = 'just inserted'
41695    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41696 DELETE FROM t0_aux
41697 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41698 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41699 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41700 'just inserted' FROM t0_template
41701 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41702 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
41703 BEGIN
41704 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41705 f_charbig = 'updated by trigger'
41706       WHERE f_int1 = new.f_int1;
41707 END|
41708 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41709 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
41710 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41711         
41712 # check trigger-2 success:      1
41713 DROP TRIGGER trg_1;
41714 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41715 f_int2 = CAST(f_char1 AS SIGNED INT),
41716 f_charbig = 'just inserted'
41717    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41718 DELETE FROM t0_aux
41719 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41720 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41721 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41722 'just inserted' FROM t0_template
41723 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41724 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
41725 BEGIN
41726 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41727 f_charbig = 'updated by trigger'
41728       WHERE f_int1 = new.f_int1;
41729 END|
41730 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
41731 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41732         
41733 # check trigger-3 success:      1
41734 DROP TRIGGER trg_1;
41735 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41736 f_int2 = CAST(f_char1 AS SIGNED INT),
41737 f_charbig = 'just inserted'
41738    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41739 DELETE FROM t0_aux
41740 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41741 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41742 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41743 'just inserted' FROM t0_template
41744 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41745 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
41746 BEGIN
41747 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41748 f_charbig = 'updated by trigger'
41749       WHERE f_int1 = - old.f_int1;
41750 END|
41751 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
41752 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41753         
41754 # check trigger-4 success:      1
41755 DROP TRIGGER trg_1;
41756 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41757 f_int2 = CAST(f_char1 AS SIGNED INT),
41758 f_charbig = 'just inserted'
41759    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41760 DELETE FROM t0_aux
41761 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41762 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41763 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41764 'just inserted' FROM t0_template
41765 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41766 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
41767 BEGIN
41768 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41769 f_charbig = 'updated by trigger'
41770       WHERE f_int1 = new.f_int1;
41771 END|
41772 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
41773 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41774         
41775 # check trigger-5 success:      1
41776 DROP TRIGGER trg_1;
41777 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41778 f_int2 = CAST(f_char1 AS SIGNED INT),
41779 f_charbig = 'just inserted'
41780    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41781 DELETE FROM t0_aux
41782 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41783 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41784 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41785 'just inserted' FROM t0_template
41786 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41787 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
41788 BEGIN
41789 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41790 f_charbig = 'updated by trigger'
41791       WHERE f_int1 = - old.f_int1;
41792 END|
41793 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
41794 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41795         
41796 # check trigger-6 success:      1
41797 DROP TRIGGER trg_1;
41798 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41799 f_int2 = CAST(f_char1 AS SIGNED INT),
41800 f_charbig = 'just inserted'
41801    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41802 DELETE FROM t0_aux
41803 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41804 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41805 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41806 'just inserted' FROM t0_template
41807 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41808 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
41809 BEGIN
41810 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41811 f_charbig = 'updated by trigger'
41812       WHERE f_int1 = - old.f_int1;
41813 END|
41814 DELETE FROM t0_aux
41815 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41816         
41817 # check trigger-7 success:      1
41818 DROP TRIGGER trg_1;
41819 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41820 f_int2 = CAST(f_char1 AS SIGNED INT),
41821 f_charbig = 'just inserted'
41822    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41823 DELETE FROM t0_aux
41824 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41825 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41826 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41827 'just inserted' FROM t0_template
41828 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41829 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
41830 BEGIN
41831 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41832 f_charbig = 'updated by trigger'
41833       WHERE f_int1 = - old.f_int1;
41834 END|
41835 DELETE FROM t0_aux
41836 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41837         
41838 # check trigger-8 success:      1
41839 DROP TRIGGER trg_1;
41840 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41841 f_int2 = CAST(f_char1 AS SIGNED INT),
41842 f_charbig = 'just inserted'
41843    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41844 DELETE FROM t0_aux
41845 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41846 DELETE FROM t1
41847 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41848 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
41849 BEGIN
41850 SET new.f_int1 = old.f_int1 + @max_row,
41851 new.f_int2 = old.f_int2 - @max_row,
41852 new.f_charbig = '####updated per update trigger####';
41853 END|
41854 UPDATE t1
41855 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
41856 f_charbig = '####updated per update statement itself####';
41857         
41858 # check trigger-9 success:      1
41859 DROP TRIGGER trg_2;
41860 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41861 f_int2 = CAST(f_char1 AS SIGNED INT),
41862 f_charbig = CONCAT('===',f_char1,'===');
41863 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
41864 BEGIN
41865 SET new.f_int1 = new.f_int1 + @max_row,
41866 new.f_int2 = new.f_int2 - @max_row,
41867 new.f_charbig = '####updated per update trigger####';
41868 END|
41869 UPDATE t1
41870 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
41871 f_charbig = '####updated per update statement itself####';
41872         
41873 # check trigger-10 success:     1
41874 DROP TRIGGER trg_2;
41875 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41876 f_int2 = CAST(f_char1 AS SIGNED INT),
41877 f_charbig = CONCAT('===',f_char1,'===');
41878 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
41879 BEGIN
41880 SET new.f_int1 = @my_max1 + @counter,
41881 new.f_int2 = @my_min2 - @counter,
41882 new.f_charbig = '####updated per insert trigger####';
41883 SET @counter = @counter + 1;
41884 END|
41885 SET @counter = 1;
41886 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
41887 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41888 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
41889 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
41890 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
41891 ORDER BY f_int1;
41892 DROP TRIGGER trg_3;
41893         
41894 # check trigger-11 success:     1
41895 DELETE FROM t1
41896 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
41897 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
41898 AND f_charbig = '####updated per insert trigger####';
41899 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
41900 BEGIN
41901 SET new.f_int1 = @my_max1 + @counter,
41902 new.f_int2 = @my_min2 - @counter,
41903 new.f_charbig = '####updated per insert trigger####';
41904 SET @counter = @counter + 1;
41905 END|
41906 SET @counter = 1;
41907 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
41908 INSERT INTO t1 (f_char1, f_char2, f_charbig)
41909 SELECT CAST(f_int1 AS CHAR),
41910 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
41911 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
41912 ORDER BY f_int1;
41913 DROP TRIGGER trg_3;
41914         
41915 # check trigger-12 success:     1
41916 DELETE FROM t1
41917 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
41918 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
41919 AND f_charbig = '####updated per insert trigger####';
41920 ANALYZE  TABLE t1;
41921 Table   Op      Msg_type        Msg_text
41922 test.t1 analyze status  OK
41923 CHECK    TABLE t1 EXTENDED;
41924 Table   Op      Msg_type        Msg_text
41925 test.t1 check   status  OK
41926 CHECKSUM TABLE t1 EXTENDED;
41927 Table   Checksum
41928 test.t1 <some_value>
41929 OPTIMIZE TABLE t1;
41930 Table   Op      Msg_type        Msg_text
41931 test.t1 optimize        status  OK
41932 # check layout success:    1
41933 REPAIR   TABLE t1 EXTENDED;
41934 Table   Op      Msg_type        Msg_text
41935 test.t1 repair  status  OK
41936 # check layout success:    1
41937 TRUNCATE t1;
41938         
41939 # check TRUNCATE success:       1
41940 # check layout success:    1
41941 # End usability test (inc/partition_check.inc)
41942 DROP TABLE t1;
41943 CREATE TABLE t1 (
41944 f_int1 INTEGER,
41945 f_int2 INTEGER,
41946 f_char1 CHAR(20),
41947 f_char2 CHAR(20),
41948 f_charbig VARCHAR(1000)
41951 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
41952 (PARTITION part_1 VALUES IN (0)
41953 (SUBPARTITION sp11, SUBPARTITION sp12),
41954 PARTITION part_2 VALUES IN (1)
41955 (SUBPARTITION sp21, SUBPARTITION sp22),
41956 PARTITION part_3 VALUES IN (2)
41957 (SUBPARTITION sp31, SUBPARTITION sp32),
41958 PARTITION part_4 VALUES IN (NULL)
41959 (SUBPARTITION sp41, SUBPARTITION sp42));
41960 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
41961 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
41962 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
41963 ALTER TABLE t1 OPTIMIZE PARTITION part_1;
41964 Table   Op      Msg_type        Msg_text
41965 test.t1 optimize        status  OK
41966 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
41967 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
41968 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
41969 # Start usability test (inc/partition_check.inc)
41970 create_command
41971 SHOW CREATE TABLE t1;
41972 Table   Create Table
41973 t1      CREATE TABLE `t1` (
41974   `f_int1` int(11) DEFAULT NULL,
41975   `f_int2` int(11) DEFAULT NULL,
41976   `f_char1` char(20) DEFAULT NULL,
41977   `f_char2` char(20) DEFAULT NULL,
41978   `f_charbig` varchar(1000) DEFAULT NULL
41979 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
41980 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
41981 SUBPARTITION BY HASH (f_int1 + 1)
41982 (PARTITION part_1 VALUES IN (0)
41983  (SUBPARTITION sp11 ENGINE = MyISAM,
41984   SUBPARTITION sp12 ENGINE = MyISAM),
41985  PARTITION part_2 VALUES IN (1)
41986  (SUBPARTITION sp21 ENGINE = MyISAM,
41987   SUBPARTITION sp22 ENGINE = MyISAM),
41988  PARTITION part_3 VALUES IN (2)
41989  (SUBPARTITION sp31 ENGINE = MyISAM,
41990   SUBPARTITION sp32 ENGINE = MyISAM),
41991  PARTITION part_4 VALUES IN (NULL)
41992  (SUBPARTITION sp41 ENGINE = MyISAM,
41993   SUBPARTITION sp42 ENGINE = MyISAM)) */
41995 unified filelist
41996 t1#P#part_1#SP#sp11.MYD
41997 t1#P#part_1#SP#sp11.MYI
41998 t1#P#part_1#SP#sp12.MYD
41999 t1#P#part_1#SP#sp12.MYI
42000 t1#P#part_2#SP#sp21.MYD
42001 t1#P#part_2#SP#sp21.MYI
42002 t1#P#part_2#SP#sp22.MYD
42003 t1#P#part_2#SP#sp22.MYI
42004 t1#P#part_3#SP#sp31.MYD
42005 t1#P#part_3#SP#sp31.MYI
42006 t1#P#part_3#SP#sp32.MYD
42007 t1#P#part_3#SP#sp32.MYI
42008 t1#P#part_4#SP#sp41.MYD
42009 t1#P#part_4#SP#sp41.MYI
42010 t1#P#part_4#SP#sp42.MYD
42011 t1#P#part_4#SP#sp42.MYI
42012 t1.frm
42013 t1.par
42015 # check prerequisites-1 success:    1
42016 # check COUNT(*) success:    1
42017 # check MIN/MAX(f_int1) success:    1
42018 # check MIN/MAX(f_int2) success:    1
42019 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42020 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
42021 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
42022 WHERE f_int1 IN (2,3);
42023 # check prerequisites-3 success:    1
42024 DELETE FROM t1 WHERE f_charbig = 'delete me';
42025 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
42026 # check read via f_int1 success: 1
42027 # check read via f_int2 success: 1
42028         
42029 # check multiple-1 success:     1
42030 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
42031         
42032 # check multiple-2 success:     1
42033 INSERT INTO t1 SELECT * FROM t0_template
42034 WHERE MOD(f_int1,3) = 0;
42035         
42036 # check multiple-3 success:     1
42037 UPDATE t1 SET f_int1 = f_int1 + @max_row
42038 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
42039 AND @max_row_div2 + @max_row_div4;
42040         
42041 # check multiple-4 success:     1
42042 DELETE FROM t1
42043 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
42044 AND @max_row_div2 + @max_row_div4 + @max_row;
42045         
42046 # check multiple-5 success:     1
42047 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
42048 INSERT INTO t1
42049 SET f_int1 = @cur_value , f_int2 = @cur_value,
42050 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
42051 f_charbig = '#SINGLE#';
42052         
42053 # check single-1 success:       1
42054 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
42055 INSERT INTO t1
42056 SET f_int1 = @cur_value , f_int2 = @cur_value,
42057 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
42058 f_charbig = '#SINGLE#';
42059         
42060 # check single-2 success:       1
42061 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
42062 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
42063 UPDATE t1 SET f_int1 = @cur_value2
42064 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
42065         
42066 # check single-3 success:       1
42067 SET @cur_value1= -1;
42068 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
42069 UPDATE t1 SET f_int1 = @cur_value1
42070 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
42071         
42072 # check single-4 success:       1
42073 SELECT MAX(f_int1) INTO @cur_value FROM t1;
42074 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
42075         
42076 # check single-5 success:       1
42077 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
42078         
42079 # check single-6 success:       1
42080 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
42081         
42082 # check single-7 success:       1
42083 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
42084 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
42085 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
42086 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
42087 f_charbig = '#NULL#';
42088 INSERT INTO t1
42089 SET f_int1 = NULL , f_int2 = -@max_row,
42090 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
42091 f_charbig = '#NULL#';
42092 # check null success:    1
42093         
42094 # check null-1 success:         1
42095 UPDATE t1 SET f_int1 = -@max_row
42096 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
42097 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
42098         
42099 # check null-2 success:         1
42100 UPDATE t1 SET f_int1 = NULL
42101 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
42102 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
42103         
42104 # check null-3 success:         1
42105 DELETE FROM t1
42106 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
42107 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
42108         
42109 # check null-4 success:         1
42110 DELETE FROM t1
42111 WHERE f_int1 = 0 AND f_int2 = 0
42112 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
42113 AND f_charbig = '#NULL#';
42114 SET AUTOCOMMIT= 0;
42115 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42116 SELECT f_int1, f_int1, '', '', 'was inserted'
42117 FROM t0_template source_tab
42118 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
42119         
42120 # check transactions-1 success:         1
42121 COMMIT WORK;
42122         
42123 # check transactions-2 success:         1
42124 ROLLBACK WORK;
42125         
42126 # check transactions-3 success:         1
42127 DELETE FROM t1 WHERE f_charbig = 'was inserted';
42128 COMMIT WORK;
42129 ROLLBACK WORK;
42130         
42131 # check transactions-4 success:         1
42132 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42133 SELECT f_int1, f_int1, '', '', 'was inserted'
42134 FROM t0_template source_tab
42135 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
42136         
42137 # check transactions-5 success:         1
42138 ROLLBACK WORK;
42139 Warnings:
42140 Warning 1196    Some non-transactional changed tables couldn't be rolled back
42141         
42142 # check transactions-6 success:         1
42143 # INFO: Storage engine used for t1 seems to be not transactional.
42144 COMMIT;
42145         
42146 # check transactions-7 success:         1
42147 DELETE FROM t1 WHERE f_charbig = 'was inserted';
42148 COMMIT WORK;
42149 SET @@session.sql_mode = 'traditional';
42150 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
42151 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42152 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
42153 '', '', 'was inserted' FROM t0_template
42154 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
42155 ERROR 22012: Division by 0
42156 COMMIT;
42157         
42158 # check transactions-8 success:         1
42159 # INFO: Storage engine used for t1 seems to be unable to revert
42160 #       changes made by the failing statement.
42161 SET @@session.sql_mode = '';
42162 SET AUTOCOMMIT= 1;
42163 DELETE FROM t1 WHERE f_charbig = 'was inserted';
42164 COMMIT WORK;
42165 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
42166         
42167 # check special-1 success:      1
42168 UPDATE t1 SET f_charbig = '';
42169         
42170 # check special-2 success:      1
42171 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
42172 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
42173 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
42174 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42175 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42176 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42177 'just inserted' FROM t0_template
42178 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42179 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
42180 BEGIN
42181 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42182 f_charbig = 'updated by trigger'
42183       WHERE f_int1 = new.f_int1;
42184 END|
42185 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42186 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
42187 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42188         
42189 # check trigger-1 success:      1
42190 DROP TRIGGER trg_1;
42191 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42192 f_int2 = CAST(f_char1 AS SIGNED INT),
42193 f_charbig = 'just inserted'
42194    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42195 DELETE FROM t0_aux
42196 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42197 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42198 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42199 'just inserted' FROM t0_template
42200 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42201 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
42202 BEGIN
42203 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42204 f_charbig = 'updated by trigger'
42205       WHERE f_int1 = new.f_int1;
42206 END|
42207 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42208 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
42209 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42210         
42211 # check trigger-2 success:      1
42212 DROP TRIGGER trg_1;
42213 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42214 f_int2 = CAST(f_char1 AS SIGNED INT),
42215 f_charbig = 'just inserted'
42216    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42217 DELETE FROM t0_aux
42218 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42219 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42220 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42221 'just inserted' FROM t0_template
42222 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42223 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
42224 BEGIN
42225 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42226 f_charbig = 'updated by trigger'
42227       WHERE f_int1 = new.f_int1;
42228 END|
42229 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
42230 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42231         
42232 # check trigger-3 success:      1
42233 DROP TRIGGER trg_1;
42234 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42235 f_int2 = CAST(f_char1 AS SIGNED INT),
42236 f_charbig = 'just inserted'
42237    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42238 DELETE FROM t0_aux
42239 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42240 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42241 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42242 'just inserted' FROM t0_template
42243 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42244 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
42245 BEGIN
42246 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42247 f_charbig = 'updated by trigger'
42248       WHERE f_int1 = - old.f_int1;
42249 END|
42250 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
42251 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42252         
42253 # check trigger-4 success:      1
42254 DROP TRIGGER trg_1;
42255 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42256 f_int2 = CAST(f_char1 AS SIGNED INT),
42257 f_charbig = 'just inserted'
42258    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42259 DELETE FROM t0_aux
42260 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42261 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42262 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42263 'just inserted' FROM t0_template
42264 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42265 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
42266 BEGIN
42267 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42268 f_charbig = 'updated by trigger'
42269       WHERE f_int1 = new.f_int1;
42270 END|
42271 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
42272 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42273         
42274 # check trigger-5 success:      1
42275 DROP TRIGGER trg_1;
42276 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42277 f_int2 = CAST(f_char1 AS SIGNED INT),
42278 f_charbig = 'just inserted'
42279    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42280 DELETE FROM t0_aux
42281 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42282 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42283 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42284 'just inserted' FROM t0_template
42285 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42286 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
42287 BEGIN
42288 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42289 f_charbig = 'updated by trigger'
42290       WHERE f_int1 = - old.f_int1;
42291 END|
42292 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
42293 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42294         
42295 # check trigger-6 success:      1
42296 DROP TRIGGER trg_1;
42297 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42298 f_int2 = CAST(f_char1 AS SIGNED INT),
42299 f_charbig = 'just inserted'
42300    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42301 DELETE FROM t0_aux
42302 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42303 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42304 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42305 'just inserted' FROM t0_template
42306 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42307 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
42308 BEGIN
42309 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42310 f_charbig = 'updated by trigger'
42311       WHERE f_int1 = - old.f_int1;
42312 END|
42313 DELETE FROM t0_aux
42314 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42315         
42316 # check trigger-7 success:      1
42317 DROP TRIGGER trg_1;
42318 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42319 f_int2 = CAST(f_char1 AS SIGNED INT),
42320 f_charbig = 'just inserted'
42321    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42322 DELETE FROM t0_aux
42323 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42324 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42325 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42326 'just inserted' FROM t0_template
42327 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42328 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
42329 BEGIN
42330 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42331 f_charbig = 'updated by trigger'
42332       WHERE f_int1 = - old.f_int1;
42333 END|
42334 DELETE FROM t0_aux
42335 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42336         
42337 # check trigger-8 success:      1
42338 DROP TRIGGER trg_1;
42339 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42340 f_int2 = CAST(f_char1 AS SIGNED INT),
42341 f_charbig = 'just inserted'
42342    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42343 DELETE FROM t0_aux
42344 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42345 DELETE FROM t1
42346 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42347 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
42348 BEGIN
42349 SET new.f_int1 = old.f_int1 + @max_row,
42350 new.f_int2 = old.f_int2 - @max_row,
42351 new.f_charbig = '####updated per update trigger####';
42352 END|
42353 UPDATE t1
42354 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
42355 f_charbig = '####updated per update statement itself####';
42356         
42357 # check trigger-9 success:      1
42358 DROP TRIGGER trg_2;
42359 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42360 f_int2 = CAST(f_char1 AS SIGNED INT),
42361 f_charbig = CONCAT('===',f_char1,'===');
42362 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
42363 BEGIN
42364 SET new.f_int1 = new.f_int1 + @max_row,
42365 new.f_int2 = new.f_int2 - @max_row,
42366 new.f_charbig = '####updated per update trigger####';
42367 END|
42368 UPDATE t1
42369 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
42370 f_charbig = '####updated per update statement itself####';
42371         
42372 # check trigger-10 success:     1
42373 DROP TRIGGER trg_2;
42374 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42375 f_int2 = CAST(f_char1 AS SIGNED INT),
42376 f_charbig = CONCAT('===',f_char1,'===');
42377 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
42378 BEGIN
42379 SET new.f_int1 = @my_max1 + @counter,
42380 new.f_int2 = @my_min2 - @counter,
42381 new.f_charbig = '####updated per insert trigger####';
42382 SET @counter = @counter + 1;
42383 END|
42384 SET @counter = 1;
42385 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
42386 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42387 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
42388 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
42389 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
42390 ORDER BY f_int1;
42391 DROP TRIGGER trg_3;
42392         
42393 # check trigger-11 success:     1
42394 DELETE FROM t1
42395 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
42396 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
42397 AND f_charbig = '####updated per insert trigger####';
42398 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
42399 BEGIN
42400 SET new.f_int1 = @my_max1 + @counter,
42401 new.f_int2 = @my_min2 - @counter,
42402 new.f_charbig = '####updated per insert trigger####';
42403 SET @counter = @counter + 1;
42404 END|
42405 SET @counter = 1;
42406 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
42407 INSERT INTO t1 (f_char1, f_char2, f_charbig)
42408 SELECT CAST(f_int1 AS CHAR),
42409 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
42410 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
42411 ORDER BY f_int1;
42412 DROP TRIGGER trg_3;
42413         
42414 # check trigger-12 success:     1
42415 DELETE FROM t1
42416 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
42417 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
42418 AND f_charbig = '####updated per insert trigger####';
42419 ANALYZE  TABLE t1;
42420 Table   Op      Msg_type        Msg_text
42421 test.t1 analyze status  OK
42422 CHECK    TABLE t1 EXTENDED;
42423 Table   Op      Msg_type        Msg_text
42424 test.t1 check   status  OK
42425 CHECKSUM TABLE t1 EXTENDED;
42426 Table   Checksum
42427 test.t1 <some_value>
42428 OPTIMIZE TABLE t1;
42429 Table   Op      Msg_type        Msg_text
42430 test.t1 optimize        status  OK
42431 # check layout success:    1
42432 REPAIR   TABLE t1 EXTENDED;
42433 Table   Op      Msg_type        Msg_text
42434 test.t1 repair  status  OK
42435 # check layout success:    1
42436 TRUNCATE t1;
42437         
42438 # check TRUNCATE success:       1
42439 # check layout success:    1
42440 # End usability test (inc/partition_check.inc)
42441 DROP TABLE t1;
42442 CREATE TABLE t1 (
42443 f_int1 INTEGER,
42444 f_int2 INTEGER,
42445 f_char1 CHAR(20),
42446 f_char2 CHAR(20),
42447 f_charbig VARCHAR(1000)
42450 PARTITION BY LIST(ABS(MOD(f_int1,2)))
42451 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
42452 (PARTITION part_1 VALUES IN (0),
42453  PARTITION part_2 VALUES IN (1),
42454  PARTITION part_3 VALUES IN (NULL));
42455 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
42456 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
42457 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
42458 ALTER TABLE t1 OPTIMIZE PARTITION part_1;
42459 Table   Op      Msg_type        Msg_text
42460 test.t1 optimize        status  OK
42461 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
42462 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
42463 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
42464 # Start usability test (inc/partition_check.inc)
42465 create_command
42466 SHOW CREATE TABLE t1;
42467 Table   Create Table
42468 t1      CREATE TABLE `t1` (
42469   `f_int1` int(11) DEFAULT NULL,
42470   `f_int2` int(11) DEFAULT NULL,
42471   `f_char1` char(20) DEFAULT NULL,
42472   `f_char2` char(20) DEFAULT NULL,
42473   `f_charbig` varchar(1000) DEFAULT NULL
42474 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
42475 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
42476 SUBPARTITION BY KEY (f_int1)
42477 SUBPARTITIONS 3
42478 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
42479  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
42480  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
42482 unified filelist
42483 t1#P#part_1#SP#part_1sp0.MYD
42484 t1#P#part_1#SP#part_1sp0.MYI
42485 t1#P#part_1#SP#part_1sp1.MYD
42486 t1#P#part_1#SP#part_1sp1.MYI
42487 t1#P#part_1#SP#part_1sp2.MYD
42488 t1#P#part_1#SP#part_1sp2.MYI
42489 t1#P#part_2#SP#part_2sp0.MYD
42490 t1#P#part_2#SP#part_2sp0.MYI
42491 t1#P#part_2#SP#part_2sp1.MYD
42492 t1#P#part_2#SP#part_2sp1.MYI
42493 t1#P#part_2#SP#part_2sp2.MYD
42494 t1#P#part_2#SP#part_2sp2.MYI
42495 t1#P#part_3#SP#part_3sp0.MYD
42496 t1#P#part_3#SP#part_3sp0.MYI
42497 t1#P#part_3#SP#part_3sp1.MYD
42498 t1#P#part_3#SP#part_3sp1.MYI
42499 t1#P#part_3#SP#part_3sp2.MYD
42500 t1#P#part_3#SP#part_3sp2.MYI
42501 t1.frm
42502 t1.par
42504 # check prerequisites-1 success:    1
42505 # check COUNT(*) success:    1
42506 # check MIN/MAX(f_int1) success:    1
42507 # check MIN/MAX(f_int2) success:    1
42508 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42509 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
42510 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
42511 WHERE f_int1 IN (2,3);
42512 # check prerequisites-3 success:    1
42513 DELETE FROM t1 WHERE f_charbig = 'delete me';
42514 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
42515 # check read via f_int1 success: 1
42516 # check read via f_int2 success: 1
42517         
42518 # check multiple-1 success:     1
42519 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
42520         
42521 # check multiple-2 success:     1
42522 INSERT INTO t1 SELECT * FROM t0_template
42523 WHERE MOD(f_int1,3) = 0;
42524         
42525 # check multiple-3 success:     1
42526 UPDATE t1 SET f_int1 = f_int1 + @max_row
42527 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
42528 AND @max_row_div2 + @max_row_div4;
42529         
42530 # check multiple-4 success:     1
42531 DELETE FROM t1
42532 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
42533 AND @max_row_div2 + @max_row_div4 + @max_row;
42534         
42535 # check multiple-5 success:     1
42536 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
42537 INSERT INTO t1
42538 SET f_int1 = @cur_value , f_int2 = @cur_value,
42539 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
42540 f_charbig = '#SINGLE#';
42541         
42542 # check single-1 success:       1
42543 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
42544 INSERT INTO t1
42545 SET f_int1 = @cur_value , f_int2 = @cur_value,
42546 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
42547 f_charbig = '#SINGLE#';
42548         
42549 # check single-2 success:       1
42550 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
42551 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
42552 UPDATE t1 SET f_int1 = @cur_value2
42553 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
42554         
42555 # check single-3 success:       1
42556 SET @cur_value1= -1;
42557 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
42558 UPDATE t1 SET f_int1 = @cur_value1
42559 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
42560         
42561 # check single-4 success:       1
42562 SELECT MAX(f_int1) INTO @cur_value FROM t1;
42563 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
42564         
42565 # check single-5 success:       1
42566 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
42567         
42568 # check single-6 success:       1
42569 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
42570         
42571 # check single-7 success:       1
42572 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
42573 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
42574 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
42575 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
42576 f_charbig = '#NULL#';
42577 INSERT INTO t1
42578 SET f_int1 = NULL , f_int2 = -@max_row,
42579 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
42580 f_charbig = '#NULL#';
42581 # check null success:    1
42582         
42583 # check null-1 success:         1
42584 UPDATE t1 SET f_int1 = -@max_row
42585 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
42586 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
42587         
42588 # check null-2 success:         1
42589 UPDATE t1 SET f_int1 = NULL
42590 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
42591 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
42592         
42593 # check null-3 success:         1
42594 DELETE FROM t1
42595 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
42596 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
42597         
42598 # check null-4 success:         1
42599 DELETE FROM t1
42600 WHERE f_int1 = 0 AND f_int2 = 0
42601 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
42602 AND f_charbig = '#NULL#';
42603 SET AUTOCOMMIT= 0;
42604 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42605 SELECT f_int1, f_int1, '', '', 'was inserted'
42606 FROM t0_template source_tab
42607 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
42608         
42609 # check transactions-1 success:         1
42610 COMMIT WORK;
42611         
42612 # check transactions-2 success:         1
42613 ROLLBACK WORK;
42614         
42615 # check transactions-3 success:         1
42616 DELETE FROM t1 WHERE f_charbig = 'was inserted';
42617 COMMIT WORK;
42618 ROLLBACK WORK;
42619         
42620 # check transactions-4 success:         1
42621 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42622 SELECT f_int1, f_int1, '', '', 'was inserted'
42623 FROM t0_template source_tab
42624 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
42625         
42626 # check transactions-5 success:         1
42627 ROLLBACK WORK;
42628 Warnings:
42629 Warning 1196    Some non-transactional changed tables couldn't be rolled back
42630         
42631 # check transactions-6 success:         1
42632 # INFO: Storage engine used for t1 seems to be not transactional.
42633 COMMIT;
42634         
42635 # check transactions-7 success:         1
42636 DELETE FROM t1 WHERE f_charbig = 'was inserted';
42637 COMMIT WORK;
42638 SET @@session.sql_mode = 'traditional';
42639 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
42640 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42641 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
42642 '', '', 'was inserted' FROM t0_template
42643 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
42644 ERROR 22012: Division by 0
42645 COMMIT;
42646         
42647 # check transactions-8 success:         1
42648 # INFO: Storage engine used for t1 seems to be unable to revert
42649 #       changes made by the failing statement.
42650 SET @@session.sql_mode = '';
42651 SET AUTOCOMMIT= 1;
42652 DELETE FROM t1 WHERE f_charbig = 'was inserted';
42653 COMMIT WORK;
42654 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
42655         
42656 # check special-1 success:      1
42657 UPDATE t1 SET f_charbig = '';
42658         
42659 # check special-2 success:      1
42660 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
42661 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
42662 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
42663 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42664 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42665 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42666 'just inserted' FROM t0_template
42667 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42668 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
42669 BEGIN
42670 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42671 f_charbig = 'updated by trigger'
42672       WHERE f_int1 = new.f_int1;
42673 END|
42674 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42675 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
42676 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42677         
42678 # check trigger-1 success:      1
42679 DROP TRIGGER trg_1;
42680 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42681 f_int2 = CAST(f_char1 AS SIGNED INT),
42682 f_charbig = 'just inserted'
42683    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42684 DELETE FROM t0_aux
42685 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42686 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42687 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42688 'just inserted' FROM t0_template
42689 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42690 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
42691 BEGIN
42692 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42693 f_charbig = 'updated by trigger'
42694       WHERE f_int1 = new.f_int1;
42695 END|
42696 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42697 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
42698 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42699         
42700 # check trigger-2 success:      1
42701 DROP TRIGGER trg_1;
42702 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42703 f_int2 = CAST(f_char1 AS SIGNED INT),
42704 f_charbig = 'just inserted'
42705    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42706 DELETE FROM t0_aux
42707 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42708 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42709 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42710 'just inserted' FROM t0_template
42711 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42712 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
42713 BEGIN
42714 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42715 f_charbig = 'updated by trigger'
42716       WHERE f_int1 = new.f_int1;
42717 END|
42718 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
42719 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42720         
42721 # check trigger-3 success:      1
42722 DROP TRIGGER trg_1;
42723 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42724 f_int2 = CAST(f_char1 AS SIGNED INT),
42725 f_charbig = 'just inserted'
42726    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42727 DELETE FROM t0_aux
42728 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42729 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42730 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42731 'just inserted' FROM t0_template
42732 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42733 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
42734 BEGIN
42735 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42736 f_charbig = 'updated by trigger'
42737       WHERE f_int1 = - old.f_int1;
42738 END|
42739 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
42740 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42741         
42742 # check trigger-4 success:      1
42743 DROP TRIGGER trg_1;
42744 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42745 f_int2 = CAST(f_char1 AS SIGNED INT),
42746 f_charbig = 'just inserted'
42747    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42748 DELETE FROM t0_aux
42749 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42750 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42751 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42752 'just inserted' FROM t0_template
42753 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42754 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
42755 BEGIN
42756 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42757 f_charbig = 'updated by trigger'
42758       WHERE f_int1 = new.f_int1;
42759 END|
42760 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
42761 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42762         
42763 # check trigger-5 success:      1
42764 DROP TRIGGER trg_1;
42765 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42766 f_int2 = CAST(f_char1 AS SIGNED INT),
42767 f_charbig = 'just inserted'
42768    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42769 DELETE FROM t0_aux
42770 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42771 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42772 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42773 'just inserted' FROM t0_template
42774 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42775 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
42776 BEGIN
42777 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42778 f_charbig = 'updated by trigger'
42779       WHERE f_int1 = - old.f_int1;
42780 END|
42781 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
42782 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42783         
42784 # check trigger-6 success:      1
42785 DROP TRIGGER trg_1;
42786 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42787 f_int2 = CAST(f_char1 AS SIGNED INT),
42788 f_charbig = 'just inserted'
42789    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42790 DELETE FROM t0_aux
42791 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42792 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42793 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42794 'just inserted' FROM t0_template
42795 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42796 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
42797 BEGIN
42798 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42799 f_charbig = 'updated by trigger'
42800       WHERE f_int1 = - old.f_int1;
42801 END|
42802 DELETE FROM t0_aux
42803 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42804         
42805 # check trigger-7 success:      1
42806 DROP TRIGGER trg_1;
42807 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42808 f_int2 = CAST(f_char1 AS SIGNED INT),
42809 f_charbig = 'just inserted'
42810    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42811 DELETE FROM t0_aux
42812 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42813 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42814 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42815 'just inserted' FROM t0_template
42816 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42817 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
42818 BEGIN
42819 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42820 f_charbig = 'updated by trigger'
42821       WHERE f_int1 = - old.f_int1;
42822 END|
42823 DELETE FROM t0_aux
42824 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42825         
42826 # check trigger-8 success:      1
42827 DROP TRIGGER trg_1;
42828 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42829 f_int2 = CAST(f_char1 AS SIGNED INT),
42830 f_charbig = 'just inserted'
42831    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42832 DELETE FROM t0_aux
42833 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42834 DELETE FROM t1
42835 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42836 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
42837 BEGIN
42838 SET new.f_int1 = old.f_int1 + @max_row,
42839 new.f_int2 = old.f_int2 - @max_row,
42840 new.f_charbig = '####updated per update trigger####';
42841 END|
42842 UPDATE t1
42843 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
42844 f_charbig = '####updated per update statement itself####';
42845         
42846 # check trigger-9 success:      1
42847 DROP TRIGGER trg_2;
42848 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42849 f_int2 = CAST(f_char1 AS SIGNED INT),
42850 f_charbig = CONCAT('===',f_char1,'===');
42851 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
42852 BEGIN
42853 SET new.f_int1 = new.f_int1 + @max_row,
42854 new.f_int2 = new.f_int2 - @max_row,
42855 new.f_charbig = '####updated per update trigger####';
42856 END|
42857 UPDATE t1
42858 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
42859 f_charbig = '####updated per update statement itself####';
42860         
42861 # check trigger-10 success:     1
42862 DROP TRIGGER trg_2;
42863 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42864 f_int2 = CAST(f_char1 AS SIGNED INT),
42865 f_charbig = CONCAT('===',f_char1,'===');
42866 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
42867 BEGIN
42868 SET new.f_int1 = @my_max1 + @counter,
42869 new.f_int2 = @my_min2 - @counter,
42870 new.f_charbig = '####updated per insert trigger####';
42871 SET @counter = @counter + 1;
42872 END|
42873 SET @counter = 1;
42874 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
42875 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42876 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
42877 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
42878 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
42879 ORDER BY f_int1;
42880 DROP TRIGGER trg_3;
42881         
42882 # check trigger-11 success:     1
42883 DELETE FROM t1
42884 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
42885 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
42886 AND f_charbig = '####updated per insert trigger####';
42887 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
42888 BEGIN
42889 SET new.f_int1 = @my_max1 + @counter,
42890 new.f_int2 = @my_min2 - @counter,
42891 new.f_charbig = '####updated per insert trigger####';
42892 SET @counter = @counter + 1;
42893 END|
42894 SET @counter = 1;
42895 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
42896 INSERT INTO t1 (f_char1, f_char2, f_charbig)
42897 SELECT CAST(f_int1 AS CHAR),
42898 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
42899 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
42900 ORDER BY f_int1;
42901 DROP TRIGGER trg_3;
42902         
42903 # check trigger-12 success:     1
42904 DELETE FROM t1
42905 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
42906 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
42907 AND f_charbig = '####updated per insert trigger####';
42908 ANALYZE  TABLE t1;
42909 Table   Op      Msg_type        Msg_text
42910 test.t1 analyze status  OK
42911 CHECK    TABLE t1 EXTENDED;
42912 Table   Op      Msg_type        Msg_text
42913 test.t1 check   status  OK
42914 CHECKSUM TABLE t1 EXTENDED;
42915 Table   Checksum
42916 test.t1 <some_value>
42917 OPTIMIZE TABLE t1;
42918 Table   Op      Msg_type        Msg_text
42919 test.t1 optimize        status  OK
42920 # check layout success:    1
42921 REPAIR   TABLE t1 EXTENDED;
42922 Table   Op      Msg_type        Msg_text
42923 test.t1 repair  status  OK
42924 # check layout success:    1
42925 TRUNCATE t1;
42926         
42927 # check TRUNCATE success:       1
42928 # check layout success:    1
42929 # End usability test (inc/partition_check.inc)
42930 DROP TABLE t1;
42931 #  3.2 ALTER ... OPTIMIZE PARTITION part_1,part_2;
42932 DROP TABLE IF EXISTS t1;
42933 CREATE TABLE t1 (
42934 f_int1 INTEGER,
42935 f_int2 INTEGER,
42936 f_char1 CHAR(20),
42937 f_char2 CHAR(20),
42938 f_charbig VARCHAR(1000)
42941 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
42942 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
42943 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
42944 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
42945 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
42946 Table   Op      Msg_type        Msg_text
42947 test.t1 optimize        status  OK
42948 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
42949 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
42950 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
42951 # Start usability test (inc/partition_check.inc)
42952 create_command
42953 SHOW CREATE TABLE t1;
42954 Table   Create Table
42955 t1      CREATE TABLE `t1` (
42956   `f_int1` int(11) DEFAULT NULL,
42957   `f_int2` int(11) DEFAULT NULL,
42958   `f_char1` char(20) DEFAULT NULL,
42959   `f_char2` char(20) DEFAULT NULL,
42960   `f_charbig` varchar(1000) DEFAULT NULL
42961 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
42962 /*!50100 PARTITION BY HASH (f_int1)
42963 (PARTITION part_1 ENGINE = MyISAM,
42964  PARTITION part_2 ENGINE = MyISAM) */
42966 unified filelist
42967 t1#P#part_1.MYD
42968 t1#P#part_1.MYI
42969 t1#P#part_2.MYD
42970 t1#P#part_2.MYI
42971 t1.frm
42972 t1.par
42974 # check prerequisites-1 success:    1
42975 # check COUNT(*) success:    1
42976 # check MIN/MAX(f_int1) success:    1
42977 # check MIN/MAX(f_int2) success:    1
42978 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42979 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
42980 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
42981 WHERE f_int1 IN (2,3);
42982 # check prerequisites-3 success:    1
42983 DELETE FROM t1 WHERE f_charbig = 'delete me';
42984 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
42985 # check read via f_int1 success: 1
42986 # check read via f_int2 success: 1
42987         
42988 # check multiple-1 success:     1
42989 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
42990         
42991 # check multiple-2 success:     1
42992 INSERT INTO t1 SELECT * FROM t0_template
42993 WHERE MOD(f_int1,3) = 0;
42994         
42995 # check multiple-3 success:     1
42996 UPDATE t1 SET f_int1 = f_int1 + @max_row
42997 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
42998 AND @max_row_div2 + @max_row_div4;
42999         
43000 # check multiple-4 success:     1
43001 DELETE FROM t1
43002 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
43003 AND @max_row_div2 + @max_row_div4 + @max_row;
43004         
43005 # check multiple-5 success:     1
43006 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
43007 INSERT INTO t1
43008 SET f_int1 = @cur_value , f_int2 = @cur_value,
43009 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
43010 f_charbig = '#SINGLE#';
43011         
43012 # check single-1 success:       1
43013 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
43014 INSERT INTO t1
43015 SET f_int1 = @cur_value , f_int2 = @cur_value,
43016 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
43017 f_charbig = '#SINGLE#';
43018         
43019 # check single-2 success:       1
43020 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
43021 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
43022 UPDATE t1 SET f_int1 = @cur_value2
43023 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
43024         
43025 # check single-3 success:       1
43026 SET @cur_value1= -1;
43027 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
43028 UPDATE t1 SET f_int1 = @cur_value1
43029 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
43030         
43031 # check single-4 success:       1
43032 SELECT MAX(f_int1) INTO @cur_value FROM t1;
43033 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
43034         
43035 # check single-5 success:       1
43036 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
43037         
43038 # check single-6 success:       1
43039 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
43040         
43041 # check single-7 success:       1
43042 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
43043 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
43044 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
43045 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
43046 f_charbig = '#NULL#';
43047 INSERT INTO t1
43048 SET f_int1 = NULL , f_int2 = -@max_row,
43049 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
43050 f_charbig = '#NULL#';
43051 # check null success:    1
43052         
43053 # check null-1 success:         1
43054 UPDATE t1 SET f_int1 = -@max_row
43055 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
43056 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
43057         
43058 # check null-2 success:         1
43059 UPDATE t1 SET f_int1 = NULL
43060 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
43061 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
43062         
43063 # check null-3 success:         1
43064 DELETE FROM t1
43065 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
43066 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
43067         
43068 # check null-4 success:         1
43069 DELETE FROM t1
43070 WHERE f_int1 = 0 AND f_int2 = 0
43071 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
43072 AND f_charbig = '#NULL#';
43073 SET AUTOCOMMIT= 0;
43074 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43075 SELECT f_int1, f_int1, '', '', 'was inserted'
43076 FROM t0_template source_tab
43077 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
43078         
43079 # check transactions-1 success:         1
43080 COMMIT WORK;
43081         
43082 # check transactions-2 success:         1
43083 ROLLBACK WORK;
43084         
43085 # check transactions-3 success:         1
43086 DELETE FROM t1 WHERE f_charbig = 'was inserted';
43087 COMMIT WORK;
43088 ROLLBACK WORK;
43089         
43090 # check transactions-4 success:         1
43091 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43092 SELECT f_int1, f_int1, '', '', 'was inserted'
43093 FROM t0_template source_tab
43094 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
43095         
43096 # check transactions-5 success:         1
43097 ROLLBACK WORK;
43098 Warnings:
43099 Warning 1196    Some non-transactional changed tables couldn't be rolled back
43100         
43101 # check transactions-6 success:         1
43102 # INFO: Storage engine used for t1 seems to be not transactional.
43103 COMMIT;
43104         
43105 # check transactions-7 success:         1
43106 DELETE FROM t1 WHERE f_charbig = 'was inserted';
43107 COMMIT WORK;
43108 SET @@session.sql_mode = 'traditional';
43109 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
43110 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43111 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
43112 '', '', 'was inserted' FROM t0_template
43113 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
43114 ERROR 22012: Division by 0
43115 COMMIT;
43116         
43117 # check transactions-8 success:         1
43118 # INFO: Storage engine used for t1 seems to be unable to revert
43119 #       changes made by the failing statement.
43120 SET @@session.sql_mode = '';
43121 SET AUTOCOMMIT= 1;
43122 DELETE FROM t1 WHERE f_charbig = 'was inserted';
43123 COMMIT WORK;
43124 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
43125         
43126 # check special-1 success:      1
43127 UPDATE t1 SET f_charbig = '';
43128         
43129 # check special-2 success:      1
43130 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
43131 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
43132 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
43133 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43134 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43135 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43136 'just inserted' FROM t0_template
43137 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43138 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
43139 BEGIN
43140 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43141 f_charbig = 'updated by trigger'
43142       WHERE f_int1 = new.f_int1;
43143 END|
43144 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43145 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
43146 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43147         
43148 # check trigger-1 success:      1
43149 DROP TRIGGER trg_1;
43150 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43151 f_int2 = CAST(f_char1 AS SIGNED INT),
43152 f_charbig = 'just inserted'
43153    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43154 DELETE FROM t0_aux
43155 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43156 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43157 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43158 'just inserted' FROM t0_template
43159 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43160 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
43161 BEGIN
43162 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43163 f_charbig = 'updated by trigger'
43164       WHERE f_int1 = new.f_int1;
43165 END|
43166 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43167 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
43168 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43169         
43170 # check trigger-2 success:      1
43171 DROP TRIGGER trg_1;
43172 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43173 f_int2 = CAST(f_char1 AS SIGNED INT),
43174 f_charbig = 'just inserted'
43175    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43176 DELETE FROM t0_aux
43177 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43178 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43179 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43180 'just inserted' FROM t0_template
43181 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43182 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
43183 BEGIN
43184 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43185 f_charbig = 'updated by trigger'
43186       WHERE f_int1 = new.f_int1;
43187 END|
43188 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
43189 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43190         
43191 # check trigger-3 success:      1
43192 DROP TRIGGER trg_1;
43193 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43194 f_int2 = CAST(f_char1 AS SIGNED INT),
43195 f_charbig = 'just inserted'
43196    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43197 DELETE FROM t0_aux
43198 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43199 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43200 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43201 'just inserted' FROM t0_template
43202 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43203 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
43204 BEGIN
43205 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43206 f_charbig = 'updated by trigger'
43207       WHERE f_int1 = - old.f_int1;
43208 END|
43209 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
43210 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43211         
43212 # check trigger-4 success:      1
43213 DROP TRIGGER trg_1;
43214 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43215 f_int2 = CAST(f_char1 AS SIGNED INT),
43216 f_charbig = 'just inserted'
43217    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43218 DELETE FROM t0_aux
43219 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43220 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43221 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43222 'just inserted' FROM t0_template
43223 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43224 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
43225 BEGIN
43226 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43227 f_charbig = 'updated by trigger'
43228       WHERE f_int1 = new.f_int1;
43229 END|
43230 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
43231 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43232         
43233 # check trigger-5 success:      1
43234 DROP TRIGGER trg_1;
43235 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43236 f_int2 = CAST(f_char1 AS SIGNED INT),
43237 f_charbig = 'just inserted'
43238    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43239 DELETE FROM t0_aux
43240 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43241 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43242 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43243 'just inserted' FROM t0_template
43244 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43245 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
43246 BEGIN
43247 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43248 f_charbig = 'updated by trigger'
43249       WHERE f_int1 = - old.f_int1;
43250 END|
43251 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
43252 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43253         
43254 # check trigger-6 success:      1
43255 DROP TRIGGER trg_1;
43256 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43257 f_int2 = CAST(f_char1 AS SIGNED INT),
43258 f_charbig = 'just inserted'
43259    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43260 DELETE FROM t0_aux
43261 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43262 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43263 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43264 'just inserted' FROM t0_template
43265 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43266 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
43267 BEGIN
43268 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43269 f_charbig = 'updated by trigger'
43270       WHERE f_int1 = - old.f_int1;
43271 END|
43272 DELETE FROM t0_aux
43273 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43274         
43275 # check trigger-7 success:      1
43276 DROP TRIGGER trg_1;
43277 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43278 f_int2 = CAST(f_char1 AS SIGNED INT),
43279 f_charbig = 'just inserted'
43280    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43281 DELETE FROM t0_aux
43282 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43283 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43284 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43285 'just inserted' FROM t0_template
43286 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43287 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
43288 BEGIN
43289 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43290 f_charbig = 'updated by trigger'
43291       WHERE f_int1 = - old.f_int1;
43292 END|
43293 DELETE FROM t0_aux
43294 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43295         
43296 # check trigger-8 success:      1
43297 DROP TRIGGER trg_1;
43298 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43299 f_int2 = CAST(f_char1 AS SIGNED INT),
43300 f_charbig = 'just inserted'
43301    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43302 DELETE FROM t0_aux
43303 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43304 DELETE FROM t1
43305 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43306 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
43307 BEGIN
43308 SET new.f_int1 = old.f_int1 + @max_row,
43309 new.f_int2 = old.f_int2 - @max_row,
43310 new.f_charbig = '####updated per update trigger####';
43311 END|
43312 UPDATE t1
43313 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
43314 f_charbig = '####updated per update statement itself####';
43315         
43316 # check trigger-9 success:      1
43317 DROP TRIGGER trg_2;
43318 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43319 f_int2 = CAST(f_char1 AS SIGNED INT),
43320 f_charbig = CONCAT('===',f_char1,'===');
43321 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
43322 BEGIN
43323 SET new.f_int1 = new.f_int1 + @max_row,
43324 new.f_int2 = new.f_int2 - @max_row,
43325 new.f_charbig = '####updated per update trigger####';
43326 END|
43327 UPDATE t1
43328 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
43329 f_charbig = '####updated per update statement itself####';
43330         
43331 # check trigger-10 success:     1
43332 DROP TRIGGER trg_2;
43333 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43334 f_int2 = CAST(f_char1 AS SIGNED INT),
43335 f_charbig = CONCAT('===',f_char1,'===');
43336 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
43337 BEGIN
43338 SET new.f_int1 = @my_max1 + @counter,
43339 new.f_int2 = @my_min2 - @counter,
43340 new.f_charbig = '####updated per insert trigger####';
43341 SET @counter = @counter + 1;
43342 END|
43343 SET @counter = 1;
43344 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
43345 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43346 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
43347 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
43348 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
43349 ORDER BY f_int1;
43350 DROP TRIGGER trg_3;
43351         
43352 # check trigger-11 success:     1
43353 DELETE FROM t1
43354 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
43355 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
43356 AND f_charbig = '####updated per insert trigger####';
43357 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
43358 BEGIN
43359 SET new.f_int1 = @my_max1 + @counter,
43360 new.f_int2 = @my_min2 - @counter,
43361 new.f_charbig = '####updated per insert trigger####';
43362 SET @counter = @counter + 1;
43363 END|
43364 SET @counter = 1;
43365 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
43366 INSERT INTO t1 (f_char1, f_char2, f_charbig)
43367 SELECT CAST(f_int1 AS CHAR),
43368 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
43369 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
43370 ORDER BY f_int1;
43371 DROP TRIGGER trg_3;
43372         
43373 # check trigger-12 success:     1
43374 DELETE FROM t1
43375 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
43376 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
43377 AND f_charbig = '####updated per insert trigger####';
43378 ANALYZE  TABLE t1;
43379 Table   Op      Msg_type        Msg_text
43380 test.t1 analyze status  OK
43381 CHECK    TABLE t1 EXTENDED;
43382 Table   Op      Msg_type        Msg_text
43383 test.t1 check   status  OK
43384 CHECKSUM TABLE t1 EXTENDED;
43385 Table   Checksum
43386 test.t1 <some_value>
43387 OPTIMIZE TABLE t1;
43388 Table   Op      Msg_type        Msg_text
43389 test.t1 optimize        status  OK
43390 # check layout success:    1
43391 REPAIR   TABLE t1 EXTENDED;
43392 Table   Op      Msg_type        Msg_text
43393 test.t1 repair  status  OK
43394 # check layout success:    1
43395 TRUNCATE t1;
43396         
43397 # check TRUNCATE success:       1
43398 # check layout success:    1
43399 # End usability test (inc/partition_check.inc)
43400 DROP TABLE t1;
43401 CREATE TABLE t1 (
43402 f_int1 INTEGER,
43403 f_int2 INTEGER,
43404 f_char1 CHAR(20),
43405 f_char2 CHAR(20),
43406 f_charbig VARCHAR(1000)
43409 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
43410 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
43411 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
43412 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
43413 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
43414 Table   Op      Msg_type        Msg_text
43415 test.t1 optimize        status  OK
43416 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
43417 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
43418 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
43419 # Start usability test (inc/partition_check.inc)
43420 create_command
43421 SHOW CREATE TABLE t1;
43422 Table   Create Table
43423 t1      CREATE TABLE `t1` (
43424   `f_int1` int(11) DEFAULT NULL,
43425   `f_int2` int(11) DEFAULT NULL,
43426   `f_char1` char(20) DEFAULT NULL,
43427   `f_char2` char(20) DEFAULT NULL,
43428   `f_charbig` varchar(1000) DEFAULT NULL
43429 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
43430 /*!50100 PARTITION BY KEY (f_int1)
43431 (PARTITION part_1 ENGINE = MyISAM,
43432  PARTITION part_2 ENGINE = MyISAM,
43433  PARTITION part_3 ENGINE = MyISAM,
43434  PARTITION part_4 ENGINE = MyISAM,
43435  PARTITION part_5 ENGINE = MyISAM) */
43437 unified filelist
43438 t1#P#part_1.MYD
43439 t1#P#part_1.MYI
43440 t1#P#part_2.MYD
43441 t1#P#part_2.MYI
43442 t1#P#part_3.MYD
43443 t1#P#part_3.MYI
43444 t1#P#part_4.MYD
43445 t1#P#part_4.MYI
43446 t1#P#part_5.MYD
43447 t1#P#part_5.MYI
43448 t1.frm
43449 t1.par
43451 # check prerequisites-1 success:    1
43452 # check COUNT(*) success:    1
43453 # check MIN/MAX(f_int1) success:    1
43454 # check MIN/MAX(f_int2) success:    1
43455 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43456 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
43457 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
43458 WHERE f_int1 IN (2,3);
43459 # check prerequisites-3 success:    1
43460 DELETE FROM t1 WHERE f_charbig = 'delete me';
43461 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
43462 # check read via f_int1 success: 1
43463 # check read via f_int2 success: 1
43464         
43465 # check multiple-1 success:     1
43466 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
43467         
43468 # check multiple-2 success:     1
43469 INSERT INTO t1 SELECT * FROM t0_template
43470 WHERE MOD(f_int1,3) = 0;
43471         
43472 # check multiple-3 success:     1
43473 UPDATE t1 SET f_int1 = f_int1 + @max_row
43474 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
43475 AND @max_row_div2 + @max_row_div4;
43476         
43477 # check multiple-4 success:     1
43478 DELETE FROM t1
43479 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
43480 AND @max_row_div2 + @max_row_div4 + @max_row;
43481         
43482 # check multiple-5 success:     1
43483 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
43484 INSERT INTO t1
43485 SET f_int1 = @cur_value , f_int2 = @cur_value,
43486 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
43487 f_charbig = '#SINGLE#';
43488         
43489 # check single-1 success:       1
43490 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
43491 INSERT INTO t1
43492 SET f_int1 = @cur_value , f_int2 = @cur_value,
43493 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
43494 f_charbig = '#SINGLE#';
43495         
43496 # check single-2 success:       1
43497 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
43498 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
43499 UPDATE t1 SET f_int1 = @cur_value2
43500 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
43501         
43502 # check single-3 success:       1
43503 SET @cur_value1= -1;
43504 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
43505 UPDATE t1 SET f_int1 = @cur_value1
43506 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
43507         
43508 # check single-4 success:       1
43509 SELECT MAX(f_int1) INTO @cur_value FROM t1;
43510 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
43511         
43512 # check single-5 success:       1
43513 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
43514         
43515 # check single-6 success:       1
43516 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
43517         
43518 # check single-7 success:       1
43519 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
43520 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
43521 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
43522 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
43523 f_charbig = '#NULL#';
43524 INSERT INTO t1
43525 SET f_int1 = NULL , f_int2 = -@max_row,
43526 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
43527 f_charbig = '#NULL#';
43528 # check null success:    1
43529         
43530 # check null-1 success:         1
43531 UPDATE t1 SET f_int1 = -@max_row
43532 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
43533 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
43534         
43535 # check null-2 success:         1
43536 UPDATE t1 SET f_int1 = NULL
43537 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
43538 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
43539         
43540 # check null-3 success:         1
43541 DELETE FROM t1
43542 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
43543 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
43544         
43545 # check null-4 success:         1
43546 DELETE FROM t1
43547 WHERE f_int1 = 0 AND f_int2 = 0
43548 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
43549 AND f_charbig = '#NULL#';
43550 SET AUTOCOMMIT= 0;
43551 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43552 SELECT f_int1, f_int1, '', '', 'was inserted'
43553 FROM t0_template source_tab
43554 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
43555         
43556 # check transactions-1 success:         1
43557 COMMIT WORK;
43558         
43559 # check transactions-2 success:         1
43560 ROLLBACK WORK;
43561         
43562 # check transactions-3 success:         1
43563 DELETE FROM t1 WHERE f_charbig = 'was inserted';
43564 COMMIT WORK;
43565 ROLLBACK WORK;
43566         
43567 # check transactions-4 success:         1
43568 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43569 SELECT f_int1, f_int1, '', '', 'was inserted'
43570 FROM t0_template source_tab
43571 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
43572         
43573 # check transactions-5 success:         1
43574 ROLLBACK WORK;
43575 Warnings:
43576 Warning 1196    Some non-transactional changed tables couldn't be rolled back
43577         
43578 # check transactions-6 success:         1
43579 # INFO: Storage engine used for t1 seems to be not transactional.
43580 COMMIT;
43581         
43582 # check transactions-7 success:         1
43583 DELETE FROM t1 WHERE f_charbig = 'was inserted';
43584 COMMIT WORK;
43585 SET @@session.sql_mode = 'traditional';
43586 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
43587 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43588 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
43589 '', '', 'was inserted' FROM t0_template
43590 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
43591 ERROR 22012: Division by 0
43592 COMMIT;
43593         
43594 # check transactions-8 success:         1
43595 # INFO: Storage engine used for t1 seems to be unable to revert
43596 #       changes made by the failing statement.
43597 SET @@session.sql_mode = '';
43598 SET AUTOCOMMIT= 1;
43599 DELETE FROM t1 WHERE f_charbig = 'was inserted';
43600 COMMIT WORK;
43601 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
43602         
43603 # check special-1 success:      1
43604 UPDATE t1 SET f_charbig = '';
43605         
43606 # check special-2 success:      1
43607 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
43608 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
43609 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
43610 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43611 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43612 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43613 'just inserted' FROM t0_template
43614 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43615 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
43616 BEGIN
43617 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43618 f_charbig = 'updated by trigger'
43619       WHERE f_int1 = new.f_int1;
43620 END|
43621 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43622 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
43623 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43624         
43625 # check trigger-1 success:      1
43626 DROP TRIGGER trg_1;
43627 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43628 f_int2 = CAST(f_char1 AS SIGNED INT),
43629 f_charbig = 'just inserted'
43630    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43631 DELETE FROM t0_aux
43632 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43633 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43634 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43635 'just inserted' FROM t0_template
43636 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43637 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
43638 BEGIN
43639 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43640 f_charbig = 'updated by trigger'
43641       WHERE f_int1 = new.f_int1;
43642 END|
43643 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43644 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
43645 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43646         
43647 # check trigger-2 success:      1
43648 DROP TRIGGER trg_1;
43649 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43650 f_int2 = CAST(f_char1 AS SIGNED INT),
43651 f_charbig = 'just inserted'
43652    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43653 DELETE FROM t0_aux
43654 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43655 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43656 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43657 'just inserted' FROM t0_template
43658 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43659 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
43660 BEGIN
43661 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43662 f_charbig = 'updated by trigger'
43663       WHERE f_int1 = new.f_int1;
43664 END|
43665 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
43666 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43667         
43668 # check trigger-3 success:      1
43669 DROP TRIGGER trg_1;
43670 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43671 f_int2 = CAST(f_char1 AS SIGNED INT),
43672 f_charbig = 'just inserted'
43673    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43674 DELETE FROM t0_aux
43675 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43676 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43677 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43678 'just inserted' FROM t0_template
43679 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43680 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
43681 BEGIN
43682 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43683 f_charbig = 'updated by trigger'
43684       WHERE f_int1 = - old.f_int1;
43685 END|
43686 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
43687 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43688         
43689 # check trigger-4 success:      1
43690 DROP TRIGGER trg_1;
43691 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43692 f_int2 = CAST(f_char1 AS SIGNED INT),
43693 f_charbig = 'just inserted'
43694    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43695 DELETE FROM t0_aux
43696 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43697 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43698 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43699 'just inserted' FROM t0_template
43700 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43701 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
43702 BEGIN
43703 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43704 f_charbig = 'updated by trigger'
43705       WHERE f_int1 = new.f_int1;
43706 END|
43707 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
43708 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43709         
43710 # check trigger-5 success:      1
43711 DROP TRIGGER trg_1;
43712 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43713 f_int2 = CAST(f_char1 AS SIGNED INT),
43714 f_charbig = 'just inserted'
43715    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43716 DELETE FROM t0_aux
43717 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43718 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43719 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43720 'just inserted' FROM t0_template
43721 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43722 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
43723 BEGIN
43724 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43725 f_charbig = 'updated by trigger'
43726       WHERE f_int1 = - old.f_int1;
43727 END|
43728 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
43729 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43730         
43731 # check trigger-6 success:      1
43732 DROP TRIGGER trg_1;
43733 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43734 f_int2 = CAST(f_char1 AS SIGNED INT),
43735 f_charbig = 'just inserted'
43736    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43737 DELETE FROM t0_aux
43738 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43739 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43740 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43741 'just inserted' FROM t0_template
43742 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43743 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
43744 BEGIN
43745 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43746 f_charbig = 'updated by trigger'
43747       WHERE f_int1 = - old.f_int1;
43748 END|
43749 DELETE FROM t0_aux
43750 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43751         
43752 # check trigger-7 success:      1
43753 DROP TRIGGER trg_1;
43754 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43755 f_int2 = CAST(f_char1 AS SIGNED INT),
43756 f_charbig = 'just inserted'
43757    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43758 DELETE FROM t0_aux
43759 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43760 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43761 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43762 'just inserted' FROM t0_template
43763 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43764 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
43765 BEGIN
43766 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43767 f_charbig = 'updated by trigger'
43768       WHERE f_int1 = - old.f_int1;
43769 END|
43770 DELETE FROM t0_aux
43771 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43772         
43773 # check trigger-8 success:      1
43774 DROP TRIGGER trg_1;
43775 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43776 f_int2 = CAST(f_char1 AS SIGNED INT),
43777 f_charbig = 'just inserted'
43778    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43779 DELETE FROM t0_aux
43780 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43781 DELETE FROM t1
43782 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43783 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
43784 BEGIN
43785 SET new.f_int1 = old.f_int1 + @max_row,
43786 new.f_int2 = old.f_int2 - @max_row,
43787 new.f_charbig = '####updated per update trigger####';
43788 END|
43789 UPDATE t1
43790 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
43791 f_charbig = '####updated per update statement itself####';
43792         
43793 # check trigger-9 success:      1
43794 DROP TRIGGER trg_2;
43795 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43796 f_int2 = CAST(f_char1 AS SIGNED INT),
43797 f_charbig = CONCAT('===',f_char1,'===');
43798 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
43799 BEGIN
43800 SET new.f_int1 = new.f_int1 + @max_row,
43801 new.f_int2 = new.f_int2 - @max_row,
43802 new.f_charbig = '####updated per update trigger####';
43803 END|
43804 UPDATE t1
43805 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
43806 f_charbig = '####updated per update statement itself####';
43807         
43808 # check trigger-10 success:     1
43809 DROP TRIGGER trg_2;
43810 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43811 f_int2 = CAST(f_char1 AS SIGNED INT),
43812 f_charbig = CONCAT('===',f_char1,'===');
43813 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
43814 BEGIN
43815 SET new.f_int1 = @my_max1 + @counter,
43816 new.f_int2 = @my_min2 - @counter,
43817 new.f_charbig = '####updated per insert trigger####';
43818 SET @counter = @counter + 1;
43819 END|
43820 SET @counter = 1;
43821 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
43822 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43823 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
43824 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
43825 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
43826 ORDER BY f_int1;
43827 DROP TRIGGER trg_3;
43828         
43829 # check trigger-11 success:     1
43830 DELETE FROM t1
43831 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
43832 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
43833 AND f_charbig = '####updated per insert trigger####';
43834 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
43835 BEGIN
43836 SET new.f_int1 = @my_max1 + @counter,
43837 new.f_int2 = @my_min2 - @counter,
43838 new.f_charbig = '####updated per insert trigger####';
43839 SET @counter = @counter + 1;
43840 END|
43841 SET @counter = 1;
43842 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
43843 INSERT INTO t1 (f_char1, f_char2, f_charbig)
43844 SELECT CAST(f_int1 AS CHAR),
43845 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
43846 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
43847 ORDER BY f_int1;
43848 DROP TRIGGER trg_3;
43849         
43850 # check trigger-12 success:     1
43851 DELETE FROM t1
43852 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
43853 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
43854 AND f_charbig = '####updated per insert trigger####';
43855 ANALYZE  TABLE t1;
43856 Table   Op      Msg_type        Msg_text
43857 test.t1 analyze status  OK
43858 CHECK    TABLE t1 EXTENDED;
43859 Table   Op      Msg_type        Msg_text
43860 test.t1 check   status  OK
43861 CHECKSUM TABLE t1 EXTENDED;
43862 Table   Checksum
43863 test.t1 <some_value>
43864 OPTIMIZE TABLE t1;
43865 Table   Op      Msg_type        Msg_text
43866 test.t1 optimize        status  OK
43867 # check layout success:    1
43868 REPAIR   TABLE t1 EXTENDED;
43869 Table   Op      Msg_type        Msg_text
43870 test.t1 repair  status  OK
43871 # check layout success:    1
43872 TRUNCATE t1;
43873         
43874 # check TRUNCATE success:       1
43875 # check layout success:    1
43876 # End usability test (inc/partition_check.inc)
43877 DROP TABLE t1;
43878 CREATE TABLE t1 (
43879 f_int1 INTEGER,
43880 f_int2 INTEGER,
43881 f_char1 CHAR(20),
43882 f_char2 CHAR(20),
43883 f_charbig VARCHAR(1000)
43886 PARTITION BY LIST(MOD(f_int1,4))
43887 (PARTITION part_3 VALUES IN (-3),
43888 PARTITION part_2 VALUES IN (-2),
43889 PARTITION part_1 VALUES IN (-1),
43890 PARTITION part_N VALUES IN (NULL),
43891 PARTITION part0 VALUES IN (0),
43892 PARTITION part1 VALUES IN (1),
43893 PARTITION part2 VALUES IN (2),
43894 PARTITION part3 VALUES IN (3));
43895 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
43896 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
43897 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
43898 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
43899 Table   Op      Msg_type        Msg_text
43900 test.t1 optimize        status  OK
43901 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
43902 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
43903 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
43904 # Start usability test (inc/partition_check.inc)
43905 create_command
43906 SHOW CREATE TABLE t1;
43907 Table   Create Table
43908 t1      CREATE TABLE `t1` (
43909   `f_int1` int(11) DEFAULT NULL,
43910   `f_int2` int(11) DEFAULT NULL,
43911   `f_char1` char(20) DEFAULT NULL,
43912   `f_char2` char(20) DEFAULT NULL,
43913   `f_charbig` varchar(1000) DEFAULT NULL
43914 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
43915 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
43916 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
43917  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
43918  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
43919  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
43920  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
43921  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
43922  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
43923  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
43925 unified filelist
43926 t1#P#part0.MYD
43927 t1#P#part0.MYI
43928 t1#P#part1.MYD
43929 t1#P#part1.MYI
43930 t1#P#part2.MYD
43931 t1#P#part2.MYI
43932 t1#P#part3.MYD
43933 t1#P#part3.MYI
43934 t1#P#part_1.MYD
43935 t1#P#part_1.MYI
43936 t1#P#part_2.MYD
43937 t1#P#part_2.MYI
43938 t1#P#part_3.MYD
43939 t1#P#part_3.MYI
43940 t1#P#part_N.MYD
43941 t1#P#part_N.MYI
43942 t1.frm
43943 t1.par
43945 # check prerequisites-1 success:    1
43946 # check COUNT(*) success:    1
43947 # check MIN/MAX(f_int1) success:    1
43948 # check MIN/MAX(f_int2) success:    1
43949 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43950 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
43951 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
43952 WHERE f_int1 IN (2,3);
43953 # check prerequisites-3 success:    1
43954 DELETE FROM t1 WHERE f_charbig = 'delete me';
43955 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
43956 # check read via f_int1 success: 1
43957 # check read via f_int2 success: 1
43958         
43959 # check multiple-1 success:     1
43960 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
43961         
43962 # check multiple-2 success:     1
43963 INSERT INTO t1 SELECT * FROM t0_template
43964 WHERE MOD(f_int1,3) = 0;
43965         
43966 # check multiple-3 success:     1
43967 UPDATE t1 SET f_int1 = f_int1 + @max_row
43968 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
43969 AND @max_row_div2 + @max_row_div4;
43970         
43971 # check multiple-4 success:     1
43972 DELETE FROM t1
43973 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
43974 AND @max_row_div2 + @max_row_div4 + @max_row;
43975         
43976 # check multiple-5 success:     1
43977 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
43978 INSERT INTO t1
43979 SET f_int1 = @cur_value , f_int2 = @cur_value,
43980 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
43981 f_charbig = '#SINGLE#';
43982         
43983 # check single-1 success:       1
43984 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
43985 INSERT INTO t1
43986 SET f_int1 = @cur_value , f_int2 = @cur_value,
43987 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
43988 f_charbig = '#SINGLE#';
43989         
43990 # check single-2 success:       1
43991 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
43992 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
43993 UPDATE t1 SET f_int1 = @cur_value2
43994 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
43995         
43996 # check single-3 success:       1
43997 SET @cur_value1= -1;
43998 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
43999 UPDATE t1 SET f_int1 = @cur_value1
44000 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
44001         
44002 # check single-4 success:       1
44003 SELECT MAX(f_int1) INTO @cur_value FROM t1;
44004 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
44005         
44006 # check single-5 success:       1
44007 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
44008         
44009 # check single-6 success:       1
44010 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
44011         
44012 # check single-7 success:       1
44013 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
44014 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
44015 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
44016 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
44017 f_charbig = '#NULL#';
44018 INSERT INTO t1
44019 SET f_int1 = NULL , f_int2 = -@max_row,
44020 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
44021 f_charbig = '#NULL#';
44022 # check null success:    1
44023         
44024 # check null-1 success:         1
44025 UPDATE t1 SET f_int1 = -@max_row
44026 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
44027 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
44028         
44029 # check null-2 success:         1
44030 UPDATE t1 SET f_int1 = NULL
44031 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
44032 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
44033         
44034 # check null-3 success:         1
44035 DELETE FROM t1
44036 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
44037 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
44038         
44039 # check null-4 success:         1
44040 DELETE FROM t1
44041 WHERE f_int1 = 0 AND f_int2 = 0
44042 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
44043 AND f_charbig = '#NULL#';
44044 SET AUTOCOMMIT= 0;
44045 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44046 SELECT f_int1, f_int1, '', '', 'was inserted'
44047 FROM t0_template source_tab
44048 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
44049         
44050 # check transactions-1 success:         1
44051 COMMIT WORK;
44052         
44053 # check transactions-2 success:         1
44054 ROLLBACK WORK;
44055         
44056 # check transactions-3 success:         1
44057 DELETE FROM t1 WHERE f_charbig = 'was inserted';
44058 COMMIT WORK;
44059 ROLLBACK WORK;
44060         
44061 # check transactions-4 success:         1
44062 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44063 SELECT f_int1, f_int1, '', '', 'was inserted'
44064 FROM t0_template source_tab
44065 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
44066         
44067 # check transactions-5 success:         1
44068 ROLLBACK WORK;
44069 Warnings:
44070 Warning 1196    Some non-transactional changed tables couldn't be rolled back
44071         
44072 # check transactions-6 success:         1
44073 # INFO: Storage engine used for t1 seems to be not transactional.
44074 COMMIT;
44075         
44076 # check transactions-7 success:         1
44077 DELETE FROM t1 WHERE f_charbig = 'was inserted';
44078 COMMIT WORK;
44079 SET @@session.sql_mode = 'traditional';
44080 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
44081 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44082 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
44083 '', '', 'was inserted' FROM t0_template
44084 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
44085 ERROR 22012: Division by 0
44086 COMMIT;
44087         
44088 # check transactions-8 success:         1
44089 # INFO: Storage engine used for t1 seems to be unable to revert
44090 #       changes made by the failing statement.
44091 SET @@session.sql_mode = '';
44092 SET AUTOCOMMIT= 1;
44093 DELETE FROM t1 WHERE f_charbig = 'was inserted';
44094 COMMIT WORK;
44095 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
44096         
44097 # check special-1 success:      1
44098 UPDATE t1 SET f_charbig = '';
44099         
44100 # check special-2 success:      1
44101 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
44102 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
44103 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
44104 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44105 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44106 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44107 'just inserted' FROM t0_template
44108 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44109 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
44110 BEGIN
44111 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44112 f_charbig = 'updated by trigger'
44113       WHERE f_int1 = new.f_int1;
44114 END|
44115 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44116 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
44117 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44118         
44119 # check trigger-1 success:      1
44120 DROP TRIGGER trg_1;
44121 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44122 f_int2 = CAST(f_char1 AS SIGNED INT),
44123 f_charbig = 'just inserted'
44124    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44125 DELETE FROM t0_aux
44126 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44127 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44128 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44129 'just inserted' FROM t0_template
44130 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44131 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
44132 BEGIN
44133 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44134 f_charbig = 'updated by trigger'
44135       WHERE f_int1 = new.f_int1;
44136 END|
44137 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44138 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
44139 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44140         
44141 # check trigger-2 success:      1
44142 DROP TRIGGER trg_1;
44143 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44144 f_int2 = CAST(f_char1 AS SIGNED INT),
44145 f_charbig = 'just inserted'
44146    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44147 DELETE FROM t0_aux
44148 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44149 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44150 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44151 'just inserted' FROM t0_template
44152 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44153 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
44154 BEGIN
44155 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44156 f_charbig = 'updated by trigger'
44157       WHERE f_int1 = new.f_int1;
44158 END|
44159 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
44160 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44161         
44162 # check trigger-3 success:      1
44163 DROP TRIGGER trg_1;
44164 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44165 f_int2 = CAST(f_char1 AS SIGNED INT),
44166 f_charbig = 'just inserted'
44167    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44168 DELETE FROM t0_aux
44169 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44170 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44171 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44172 'just inserted' FROM t0_template
44173 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44174 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
44175 BEGIN
44176 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44177 f_charbig = 'updated by trigger'
44178       WHERE f_int1 = - old.f_int1;
44179 END|
44180 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
44181 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44182         
44183 # check trigger-4 success:      1
44184 DROP TRIGGER trg_1;
44185 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44186 f_int2 = CAST(f_char1 AS SIGNED INT),
44187 f_charbig = 'just inserted'
44188    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44189 DELETE FROM t0_aux
44190 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44191 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44192 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44193 'just inserted' FROM t0_template
44194 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44195 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
44196 BEGIN
44197 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44198 f_charbig = 'updated by trigger'
44199       WHERE f_int1 = new.f_int1;
44200 END|
44201 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
44202 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44203         
44204 # check trigger-5 success:      1
44205 DROP TRIGGER trg_1;
44206 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44207 f_int2 = CAST(f_char1 AS SIGNED INT),
44208 f_charbig = 'just inserted'
44209    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44210 DELETE FROM t0_aux
44211 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44212 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44213 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44214 'just inserted' FROM t0_template
44215 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44216 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
44217 BEGIN
44218 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44219 f_charbig = 'updated by trigger'
44220       WHERE f_int1 = - old.f_int1;
44221 END|
44222 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
44223 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44224         
44225 # check trigger-6 success:      1
44226 DROP TRIGGER trg_1;
44227 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44228 f_int2 = CAST(f_char1 AS SIGNED INT),
44229 f_charbig = 'just inserted'
44230    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44231 DELETE FROM t0_aux
44232 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44233 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44234 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44235 'just inserted' FROM t0_template
44236 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44237 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
44238 BEGIN
44239 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44240 f_charbig = 'updated by trigger'
44241       WHERE f_int1 = - old.f_int1;
44242 END|
44243 DELETE FROM t0_aux
44244 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44245         
44246 # check trigger-7 success:      1
44247 DROP TRIGGER trg_1;
44248 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44249 f_int2 = CAST(f_char1 AS SIGNED INT),
44250 f_charbig = 'just inserted'
44251    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44252 DELETE FROM t0_aux
44253 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44254 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44255 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44256 'just inserted' FROM t0_template
44257 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44258 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
44259 BEGIN
44260 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44261 f_charbig = 'updated by trigger'
44262       WHERE f_int1 = - old.f_int1;
44263 END|
44264 DELETE FROM t0_aux
44265 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44266         
44267 # check trigger-8 success:      1
44268 DROP TRIGGER trg_1;
44269 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44270 f_int2 = CAST(f_char1 AS SIGNED INT),
44271 f_charbig = 'just inserted'
44272    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44273 DELETE FROM t0_aux
44274 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44275 DELETE FROM t1
44276 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44277 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
44278 BEGIN
44279 SET new.f_int1 = old.f_int1 + @max_row,
44280 new.f_int2 = old.f_int2 - @max_row,
44281 new.f_charbig = '####updated per update trigger####';
44282 END|
44283 UPDATE t1
44284 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
44285 f_charbig = '####updated per update statement itself####';
44286         
44287 # check trigger-9 success:      1
44288 DROP TRIGGER trg_2;
44289 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44290 f_int2 = CAST(f_char1 AS SIGNED INT),
44291 f_charbig = CONCAT('===',f_char1,'===');
44292 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
44293 BEGIN
44294 SET new.f_int1 = new.f_int1 + @max_row,
44295 new.f_int2 = new.f_int2 - @max_row,
44296 new.f_charbig = '####updated per update trigger####';
44297 END|
44298 UPDATE t1
44299 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
44300 f_charbig = '####updated per update statement itself####';
44301         
44302 # check trigger-10 success:     1
44303 DROP TRIGGER trg_2;
44304 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44305 f_int2 = CAST(f_char1 AS SIGNED INT),
44306 f_charbig = CONCAT('===',f_char1,'===');
44307 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
44308 BEGIN
44309 SET new.f_int1 = @my_max1 + @counter,
44310 new.f_int2 = @my_min2 - @counter,
44311 new.f_charbig = '####updated per insert trigger####';
44312 SET @counter = @counter + 1;
44313 END|
44314 SET @counter = 1;
44315 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
44316 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44317 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
44318 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
44319 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
44320 ORDER BY f_int1;
44321 DROP TRIGGER trg_3;
44322         
44323 # check trigger-11 success:     1
44324 DELETE FROM t1
44325 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
44326 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
44327 AND f_charbig = '####updated per insert trigger####';
44328 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
44329 BEGIN
44330 SET new.f_int1 = @my_max1 + @counter,
44331 new.f_int2 = @my_min2 - @counter,
44332 new.f_charbig = '####updated per insert trigger####';
44333 SET @counter = @counter + 1;
44334 END|
44335 SET @counter = 1;
44336 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
44337 INSERT INTO t1 (f_char1, f_char2, f_charbig)
44338 SELECT CAST(f_int1 AS CHAR),
44339 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
44340 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
44341 ORDER BY f_int1;
44342 DROP TRIGGER trg_3;
44343         
44344 # check trigger-12 success:     1
44345 DELETE FROM t1
44346 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
44347 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
44348 AND f_charbig = '####updated per insert trigger####';
44349 ANALYZE  TABLE t1;
44350 Table   Op      Msg_type        Msg_text
44351 test.t1 analyze status  OK
44352 CHECK    TABLE t1 EXTENDED;
44353 Table   Op      Msg_type        Msg_text
44354 test.t1 check   status  OK
44355 CHECKSUM TABLE t1 EXTENDED;
44356 Table   Checksum
44357 test.t1 <some_value>
44358 OPTIMIZE TABLE t1;
44359 Table   Op      Msg_type        Msg_text
44360 test.t1 optimize        status  OK
44361 # check layout success:    1
44362 REPAIR   TABLE t1 EXTENDED;
44363 Table   Op      Msg_type        Msg_text
44364 test.t1 repair  status  OK
44365 # check layout success:    1
44366 TRUNCATE t1;
44367         
44368 # check TRUNCATE success:       1
44369 # check layout success:    1
44370 # End usability test (inc/partition_check.inc)
44371 DROP TABLE t1;
44372 CREATE TABLE t1 (
44373 f_int1 INTEGER,
44374 f_int2 INTEGER,
44375 f_char1 CHAR(20),
44376 f_char2 CHAR(20),
44377 f_charbig VARCHAR(1000)
44380 PARTITION BY RANGE(f_int1)
44381 (PARTITION parta VALUES LESS THAN (0),
44382 PARTITION part_1 VALUES LESS THAN (5),
44383 PARTITION part_2 VALUES LESS THAN (10),
44384 PARTITION part_3 VALUES LESS THAN (10 + 5),
44385 PARTITION part_4 VALUES LESS THAN (20),
44386 PARTITION part_5 VALUES LESS THAN (2147483646));
44387 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
44388 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
44389 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
44390 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
44391 Table   Op      Msg_type        Msg_text
44392 test.t1 optimize        status  OK
44393 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
44394 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
44395 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
44396 # Start usability test (inc/partition_check.inc)
44397 create_command
44398 SHOW CREATE TABLE t1;
44399 Table   Create Table
44400 t1      CREATE TABLE `t1` (
44401   `f_int1` int(11) DEFAULT NULL,
44402   `f_int2` int(11) DEFAULT NULL,
44403   `f_char1` char(20) DEFAULT NULL,
44404   `f_char2` char(20) DEFAULT NULL,
44405   `f_charbig` varchar(1000) DEFAULT NULL
44406 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
44407 /*!50100 PARTITION BY RANGE (f_int1)
44408 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
44409  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
44410  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
44411  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
44412  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
44413  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
44415 unified filelist
44416 t1#P#part_1.MYD
44417 t1#P#part_1.MYI
44418 t1#P#part_2.MYD
44419 t1#P#part_2.MYI
44420 t1#P#part_3.MYD
44421 t1#P#part_3.MYI
44422 t1#P#part_4.MYD
44423 t1#P#part_4.MYI
44424 t1#P#part_5.MYD
44425 t1#P#part_5.MYI
44426 t1#P#parta.MYD
44427 t1#P#parta.MYI
44428 t1.frm
44429 t1.par
44431 # check prerequisites-1 success:    1
44432 # check COUNT(*) success:    1
44433 # check MIN/MAX(f_int1) success:    1
44434 # check MIN/MAX(f_int2) success:    1
44435 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44436 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
44437 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
44438 WHERE f_int1 IN (2,3);
44439 # check prerequisites-3 success:    1
44440 DELETE FROM t1 WHERE f_charbig = 'delete me';
44441 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
44442 # check read via f_int1 success: 1
44443 # check read via f_int2 success: 1
44444         
44445 # check multiple-1 success:     1
44446 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
44447         
44448 # check multiple-2 success:     1
44449 INSERT INTO t1 SELECT * FROM t0_template
44450 WHERE MOD(f_int1,3) = 0;
44451         
44452 # check multiple-3 success:     1
44453 UPDATE t1 SET f_int1 = f_int1 + @max_row
44454 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
44455 AND @max_row_div2 + @max_row_div4;
44456         
44457 # check multiple-4 success:     1
44458 DELETE FROM t1
44459 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
44460 AND @max_row_div2 + @max_row_div4 + @max_row;
44461         
44462 # check multiple-5 success:     1
44463 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
44464 INSERT INTO t1
44465 SET f_int1 = @cur_value , f_int2 = @cur_value,
44466 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
44467 f_charbig = '#SINGLE#';
44468         
44469 # check single-1 success:       1
44470 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
44471 INSERT INTO t1
44472 SET f_int1 = @cur_value , f_int2 = @cur_value,
44473 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
44474 f_charbig = '#SINGLE#';
44475         
44476 # check single-2 success:       1
44477 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
44478 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
44479 UPDATE t1 SET f_int1 = @cur_value2
44480 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
44481         
44482 # check single-3 success:       1
44483 SET @cur_value1= -1;
44484 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
44485 UPDATE t1 SET f_int1 = @cur_value1
44486 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
44487         
44488 # check single-4 success:       1
44489 SELECT MAX(f_int1) INTO @cur_value FROM t1;
44490 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
44491         
44492 # check single-5 success:       1
44493 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
44494         
44495 # check single-6 success:       1
44496 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
44497 ERROR HY000: Table has no partition for value 2147483647
44498 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
44499 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
44500 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
44501 f_charbig = '#NULL#';
44502 INSERT INTO t1
44503 SET f_int1 = NULL , f_int2 = -@max_row,
44504 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
44505 f_charbig = '#NULL#';
44506 # check null success:    1
44507         
44508 # check null-1 success:         1
44509 UPDATE t1 SET f_int1 = -@max_row
44510 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
44511 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
44512         
44513 # check null-2 success:         1
44514 UPDATE t1 SET f_int1 = NULL
44515 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
44516 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
44517         
44518 # check null-3 success:         1
44519 DELETE FROM t1
44520 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
44521 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
44522         
44523 # check null-4 success:         1
44524 DELETE FROM t1
44525 WHERE f_int1 = 0 AND f_int2 = 0
44526 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
44527 AND f_charbig = '#NULL#';
44528 SET AUTOCOMMIT= 0;
44529 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44530 SELECT f_int1, f_int1, '', '', 'was inserted'
44531 FROM t0_template source_tab
44532 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
44533         
44534 # check transactions-1 success:         1
44535 COMMIT WORK;
44536         
44537 # check transactions-2 success:         1
44538 ROLLBACK WORK;
44539         
44540 # check transactions-3 success:         1
44541 DELETE FROM t1 WHERE f_charbig = 'was inserted';
44542 COMMIT WORK;
44543 ROLLBACK WORK;
44544         
44545 # check transactions-4 success:         1
44546 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44547 SELECT f_int1, f_int1, '', '', 'was inserted'
44548 FROM t0_template source_tab
44549 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
44550         
44551 # check transactions-5 success:         1
44552 ROLLBACK WORK;
44553 Warnings:
44554 Warning 1196    Some non-transactional changed tables couldn't be rolled back
44555         
44556 # check transactions-6 success:         1
44557 # INFO: Storage engine used for t1 seems to be not transactional.
44558 COMMIT;
44559         
44560 # check transactions-7 success:         1
44561 DELETE FROM t1 WHERE f_charbig = 'was inserted';
44562 COMMIT WORK;
44563 SET @@session.sql_mode = 'traditional';
44564 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
44565 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44566 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
44567 '', '', 'was inserted' FROM t0_template
44568 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
44569 ERROR 22012: Division by 0
44570 COMMIT;
44571         
44572 # check transactions-8 success:         1
44573 # INFO: Storage engine used for t1 seems to be unable to revert
44574 #       changes made by the failing statement.
44575 SET @@session.sql_mode = '';
44576 SET AUTOCOMMIT= 1;
44577 DELETE FROM t1 WHERE f_charbig = 'was inserted';
44578 COMMIT WORK;
44579 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
44580         
44581 # check special-1 success:      1
44582 UPDATE t1 SET f_charbig = '';
44583         
44584 # check special-2 success:      1
44585 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
44586 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
44587 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
44588 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44589 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44590 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44591 'just inserted' FROM t0_template
44592 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44593 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
44594 BEGIN
44595 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44596 f_charbig = 'updated by trigger'
44597       WHERE f_int1 = new.f_int1;
44598 END|
44599 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44600 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
44601 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44602         
44603 # check trigger-1 success:      1
44604 DROP TRIGGER trg_1;
44605 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44606 f_int2 = CAST(f_char1 AS SIGNED INT),
44607 f_charbig = 'just inserted'
44608    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44609 DELETE FROM t0_aux
44610 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44611 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44612 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44613 'just inserted' FROM t0_template
44614 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44615 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
44616 BEGIN
44617 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44618 f_charbig = 'updated by trigger'
44619       WHERE f_int1 = new.f_int1;
44620 END|
44621 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44622 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
44623 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44624         
44625 # check trigger-2 success:      1
44626 DROP TRIGGER trg_1;
44627 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44628 f_int2 = CAST(f_char1 AS SIGNED INT),
44629 f_charbig = 'just inserted'
44630    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44631 DELETE FROM t0_aux
44632 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44633 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44634 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44635 'just inserted' FROM t0_template
44636 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44637 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
44638 BEGIN
44639 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44640 f_charbig = 'updated by trigger'
44641       WHERE f_int1 = new.f_int1;
44642 END|
44643 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
44644 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44645         
44646 # check trigger-3 success:      1
44647 DROP TRIGGER trg_1;
44648 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44649 f_int2 = CAST(f_char1 AS SIGNED INT),
44650 f_charbig = 'just inserted'
44651    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44652 DELETE FROM t0_aux
44653 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44654 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44655 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44656 'just inserted' FROM t0_template
44657 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44658 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
44659 BEGIN
44660 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44661 f_charbig = 'updated by trigger'
44662       WHERE f_int1 = - old.f_int1;
44663 END|
44664 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
44665 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44666         
44667 # check trigger-4 success:      1
44668 DROP TRIGGER trg_1;
44669 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44670 f_int2 = CAST(f_char1 AS SIGNED INT),
44671 f_charbig = 'just inserted'
44672    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44673 DELETE FROM t0_aux
44674 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44675 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44676 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44677 'just inserted' FROM t0_template
44678 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44679 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
44680 BEGIN
44681 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44682 f_charbig = 'updated by trigger'
44683       WHERE f_int1 = new.f_int1;
44684 END|
44685 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
44686 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44687         
44688 # check trigger-5 success:      1
44689 DROP TRIGGER trg_1;
44690 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44691 f_int2 = CAST(f_char1 AS SIGNED INT),
44692 f_charbig = 'just inserted'
44693    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44694 DELETE FROM t0_aux
44695 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44696 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44697 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44698 'just inserted' FROM t0_template
44699 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44700 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
44701 BEGIN
44702 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44703 f_charbig = 'updated by trigger'
44704       WHERE f_int1 = - old.f_int1;
44705 END|
44706 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
44707 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44708         
44709 # check trigger-6 success:      1
44710 DROP TRIGGER trg_1;
44711 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44712 f_int2 = CAST(f_char1 AS SIGNED INT),
44713 f_charbig = 'just inserted'
44714    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44715 DELETE FROM t0_aux
44716 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44717 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44718 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44719 'just inserted' FROM t0_template
44720 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44721 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
44722 BEGIN
44723 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44724 f_charbig = 'updated by trigger'
44725       WHERE f_int1 = - old.f_int1;
44726 END|
44727 DELETE FROM t0_aux
44728 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44729         
44730 # check trigger-7 success:      1
44731 DROP TRIGGER trg_1;
44732 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44733 f_int2 = CAST(f_char1 AS SIGNED INT),
44734 f_charbig = 'just inserted'
44735    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44736 DELETE FROM t0_aux
44737 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44738 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44739 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44740 'just inserted' FROM t0_template
44741 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44742 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
44743 BEGIN
44744 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44745 f_charbig = 'updated by trigger'
44746       WHERE f_int1 = - old.f_int1;
44747 END|
44748 DELETE FROM t0_aux
44749 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44750         
44751 # check trigger-8 success:      1
44752 DROP TRIGGER trg_1;
44753 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44754 f_int2 = CAST(f_char1 AS SIGNED INT),
44755 f_charbig = 'just inserted'
44756    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44757 DELETE FROM t0_aux
44758 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44759 DELETE FROM t1
44760 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44761 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
44762 BEGIN
44763 SET new.f_int1 = old.f_int1 + @max_row,
44764 new.f_int2 = old.f_int2 - @max_row,
44765 new.f_charbig = '####updated per update trigger####';
44766 END|
44767 UPDATE t1
44768 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
44769 f_charbig = '####updated per update statement itself####';
44770         
44771 # check trigger-9 success:      1
44772 DROP TRIGGER trg_2;
44773 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44774 f_int2 = CAST(f_char1 AS SIGNED INT),
44775 f_charbig = CONCAT('===',f_char1,'===');
44776 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
44777 BEGIN
44778 SET new.f_int1 = new.f_int1 + @max_row,
44779 new.f_int2 = new.f_int2 - @max_row,
44780 new.f_charbig = '####updated per update trigger####';
44781 END|
44782 UPDATE t1
44783 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
44784 f_charbig = '####updated per update statement itself####';
44785         
44786 # check trigger-10 success:     1
44787 DROP TRIGGER trg_2;
44788 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44789 f_int2 = CAST(f_char1 AS SIGNED INT),
44790 f_charbig = CONCAT('===',f_char1,'===');
44791 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
44792 BEGIN
44793 SET new.f_int1 = @my_max1 + @counter,
44794 new.f_int2 = @my_min2 - @counter,
44795 new.f_charbig = '####updated per insert trigger####';
44796 SET @counter = @counter + 1;
44797 END|
44798 SET @counter = 1;
44799 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
44800 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44801 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
44802 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
44803 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
44804 ORDER BY f_int1;
44805 DROP TRIGGER trg_3;
44806         
44807 # check trigger-11 success:     1
44808 DELETE FROM t1
44809 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
44810 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
44811 AND f_charbig = '####updated per insert trigger####';
44812 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
44813 BEGIN
44814 SET new.f_int1 = @my_max1 + @counter,
44815 new.f_int2 = @my_min2 - @counter,
44816 new.f_charbig = '####updated per insert trigger####';
44817 SET @counter = @counter + 1;
44818 END|
44819 SET @counter = 1;
44820 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
44821 INSERT INTO t1 (f_char1, f_char2, f_charbig)
44822 SELECT CAST(f_int1 AS CHAR),
44823 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
44824 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
44825 ORDER BY f_int1;
44826 DROP TRIGGER trg_3;
44827         
44828 # check trigger-12 success:     1
44829 DELETE FROM t1
44830 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
44831 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
44832 AND f_charbig = '####updated per insert trigger####';
44833 ANALYZE  TABLE t1;
44834 Table   Op      Msg_type        Msg_text
44835 test.t1 analyze status  OK
44836 CHECK    TABLE t1 EXTENDED;
44837 Table   Op      Msg_type        Msg_text
44838 test.t1 check   status  OK
44839 CHECKSUM TABLE t1 EXTENDED;
44840 Table   Checksum
44841 test.t1 <some_value>
44842 OPTIMIZE TABLE t1;
44843 Table   Op      Msg_type        Msg_text
44844 test.t1 optimize        status  OK
44845 # check layout success:    1
44846 REPAIR   TABLE t1 EXTENDED;
44847 Table   Op      Msg_type        Msg_text
44848 test.t1 repair  status  OK
44849 # check layout success:    1
44850 TRUNCATE t1;
44851         
44852 # check TRUNCATE success:       1
44853 # check layout success:    1
44854 # End usability test (inc/partition_check.inc)
44855 DROP TABLE t1;
44856 CREATE TABLE t1 (
44857 f_int1 INTEGER,
44858 f_int2 INTEGER,
44859 f_char1 CHAR(20),
44860 f_char2 CHAR(20),
44861 f_charbig VARCHAR(1000)
44864 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
44865 (PARTITION part_1 VALUES LESS THAN (0),
44866 PARTITION part_2 VALUES LESS THAN (5),
44867 PARTITION part_3 VALUES LESS THAN (10),
44868 PARTITION part_4 VALUES LESS THAN (2147483646));
44869 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
44870 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
44871 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
44872 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
44873 Table   Op      Msg_type        Msg_text
44874 test.t1 optimize        status  OK
44875 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
44876 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
44877 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
44878 # Start usability test (inc/partition_check.inc)
44879 create_command
44880 SHOW CREATE TABLE t1;
44881 Table   Create Table
44882 t1      CREATE TABLE `t1` (
44883   `f_int1` int(11) DEFAULT NULL,
44884   `f_int2` int(11) DEFAULT NULL,
44885   `f_char1` char(20) DEFAULT NULL,
44886   `f_char2` char(20) DEFAULT NULL,
44887   `f_charbig` varchar(1000) DEFAULT NULL
44888 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
44889 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
44890 SUBPARTITION BY HASH (f_int1)
44891 SUBPARTITIONS 2
44892 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
44893  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
44894  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
44895  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
44897 unified filelist
44898 t1#P#part_1#SP#part_1sp0.MYD
44899 t1#P#part_1#SP#part_1sp0.MYI
44900 t1#P#part_1#SP#part_1sp1.MYD
44901 t1#P#part_1#SP#part_1sp1.MYI
44902 t1#P#part_2#SP#part_2sp0.MYD
44903 t1#P#part_2#SP#part_2sp0.MYI
44904 t1#P#part_2#SP#part_2sp1.MYD
44905 t1#P#part_2#SP#part_2sp1.MYI
44906 t1#P#part_3#SP#part_3sp0.MYD
44907 t1#P#part_3#SP#part_3sp0.MYI
44908 t1#P#part_3#SP#part_3sp1.MYD
44909 t1#P#part_3#SP#part_3sp1.MYI
44910 t1#P#part_4#SP#part_4sp0.MYD
44911 t1#P#part_4#SP#part_4sp0.MYI
44912 t1#P#part_4#SP#part_4sp1.MYD
44913 t1#P#part_4#SP#part_4sp1.MYI
44914 t1.frm
44915 t1.par
44917 # check prerequisites-1 success:    1
44918 # check COUNT(*) success:    1
44919 # check MIN/MAX(f_int1) success:    1
44920 # check MIN/MAX(f_int2) success:    1
44921 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44922 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
44923 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
44924 WHERE f_int1 IN (2,3);
44925 # check prerequisites-3 success:    1
44926 DELETE FROM t1 WHERE f_charbig = 'delete me';
44927 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
44928 # check read via f_int1 success: 1
44929 # check read via f_int2 success: 1
44930         
44931 # check multiple-1 success:     1
44932 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
44933         
44934 # check multiple-2 success:     1
44935 INSERT INTO t1 SELECT * FROM t0_template
44936 WHERE MOD(f_int1,3) = 0;
44937         
44938 # check multiple-3 success:     1
44939 UPDATE t1 SET f_int1 = f_int1 + @max_row
44940 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
44941 AND @max_row_div2 + @max_row_div4;
44942         
44943 # check multiple-4 success:     1
44944 DELETE FROM t1
44945 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
44946 AND @max_row_div2 + @max_row_div4 + @max_row;
44947         
44948 # check multiple-5 success:     1
44949 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
44950 INSERT INTO t1
44951 SET f_int1 = @cur_value , f_int2 = @cur_value,
44952 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
44953 f_charbig = '#SINGLE#';
44954         
44955 # check single-1 success:       1
44956 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
44957 INSERT INTO t1
44958 SET f_int1 = @cur_value , f_int2 = @cur_value,
44959 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
44960 f_charbig = '#SINGLE#';
44961         
44962 # check single-2 success:       1
44963 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
44964 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
44965 UPDATE t1 SET f_int1 = @cur_value2
44966 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
44967         
44968 # check single-3 success:       1
44969 SET @cur_value1= -1;
44970 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
44971 UPDATE t1 SET f_int1 = @cur_value1
44972 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
44973         
44974 # check single-4 success:       1
44975 SELECT MAX(f_int1) INTO @cur_value FROM t1;
44976 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
44977         
44978 # check single-5 success:       1
44979 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
44980         
44981 # check single-6 success:       1
44982 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
44983         
44984 # check single-7 success:       1
44985 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
44986 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
44987 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
44988 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
44989 f_charbig = '#NULL#';
44990 INSERT INTO t1
44991 SET f_int1 = NULL , f_int2 = -@max_row,
44992 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
44993 f_charbig = '#NULL#';
44994 # check null success:    1
44995         
44996 # check null-1 success:         1
44997 UPDATE t1 SET f_int1 = -@max_row
44998 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
44999 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
45000         
45001 # check null-2 success:         1
45002 UPDATE t1 SET f_int1 = NULL
45003 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
45004 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
45005         
45006 # check null-3 success:         1
45007 DELETE FROM t1
45008 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
45009 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
45010         
45011 # check null-4 success:         1
45012 DELETE FROM t1
45013 WHERE f_int1 = 0 AND f_int2 = 0
45014 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
45015 AND f_charbig = '#NULL#';
45016 SET AUTOCOMMIT= 0;
45017 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45018 SELECT f_int1, f_int1, '', '', 'was inserted'
45019 FROM t0_template source_tab
45020 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
45021         
45022 # check transactions-1 success:         1
45023 COMMIT WORK;
45024         
45025 # check transactions-2 success:         1
45026 ROLLBACK WORK;
45027         
45028 # check transactions-3 success:         1
45029 DELETE FROM t1 WHERE f_charbig = 'was inserted';
45030 COMMIT WORK;
45031 ROLLBACK WORK;
45032         
45033 # check transactions-4 success:         1
45034 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45035 SELECT f_int1, f_int1, '', '', 'was inserted'
45036 FROM t0_template source_tab
45037 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
45038         
45039 # check transactions-5 success:         1
45040 ROLLBACK WORK;
45041 Warnings:
45042 Warning 1196    Some non-transactional changed tables couldn't be rolled back
45043         
45044 # check transactions-6 success:         1
45045 # INFO: Storage engine used for t1 seems to be not transactional.
45046 COMMIT;
45047         
45048 # check transactions-7 success:         1
45049 DELETE FROM t1 WHERE f_charbig = 'was inserted';
45050 COMMIT WORK;
45051 SET @@session.sql_mode = 'traditional';
45052 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
45053 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45054 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
45055 '', '', 'was inserted' FROM t0_template
45056 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
45057 ERROR 22012: Division by 0
45058 COMMIT;
45059         
45060 # check transactions-8 success:         1
45061 # INFO: Storage engine used for t1 seems to be unable to revert
45062 #       changes made by the failing statement.
45063 SET @@session.sql_mode = '';
45064 SET AUTOCOMMIT= 1;
45065 DELETE FROM t1 WHERE f_charbig = 'was inserted';
45066 COMMIT WORK;
45067 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
45068         
45069 # check special-1 success:      1
45070 UPDATE t1 SET f_charbig = '';
45071         
45072 # check special-2 success:      1
45073 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
45074 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
45075 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
45076 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45077 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45078 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45079 'just inserted' FROM t0_template
45080 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45081 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
45082 BEGIN
45083 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45084 f_charbig = 'updated by trigger'
45085       WHERE f_int1 = new.f_int1;
45086 END|
45087 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45088 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
45089 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45090         
45091 # check trigger-1 success:      1
45092 DROP TRIGGER trg_1;
45093 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45094 f_int2 = CAST(f_char1 AS SIGNED INT),
45095 f_charbig = 'just inserted'
45096    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45097 DELETE FROM t0_aux
45098 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45099 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45100 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45101 'just inserted' FROM t0_template
45102 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45103 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
45104 BEGIN
45105 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45106 f_charbig = 'updated by trigger'
45107       WHERE f_int1 = new.f_int1;
45108 END|
45109 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45110 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
45111 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45112         
45113 # check trigger-2 success:      1
45114 DROP TRIGGER trg_1;
45115 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45116 f_int2 = CAST(f_char1 AS SIGNED INT),
45117 f_charbig = 'just inserted'
45118    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45119 DELETE FROM t0_aux
45120 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45121 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45122 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45123 'just inserted' FROM t0_template
45124 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45125 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
45126 BEGIN
45127 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45128 f_charbig = 'updated by trigger'
45129       WHERE f_int1 = new.f_int1;
45130 END|
45131 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
45132 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45133         
45134 # check trigger-3 success:      1
45135 DROP TRIGGER trg_1;
45136 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45137 f_int2 = CAST(f_char1 AS SIGNED INT),
45138 f_charbig = 'just inserted'
45139    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45140 DELETE FROM t0_aux
45141 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45142 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45143 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45144 'just inserted' FROM t0_template
45145 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45146 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
45147 BEGIN
45148 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45149 f_charbig = 'updated by trigger'
45150       WHERE f_int1 = - old.f_int1;
45151 END|
45152 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
45153 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45154         
45155 # check trigger-4 success:      1
45156 DROP TRIGGER trg_1;
45157 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45158 f_int2 = CAST(f_char1 AS SIGNED INT),
45159 f_charbig = 'just inserted'
45160    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45161 DELETE FROM t0_aux
45162 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45163 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45164 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45165 'just inserted' FROM t0_template
45166 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45167 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
45168 BEGIN
45169 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45170 f_charbig = 'updated by trigger'
45171       WHERE f_int1 = new.f_int1;
45172 END|
45173 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
45174 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45175         
45176 # check trigger-5 success:      1
45177 DROP TRIGGER trg_1;
45178 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45179 f_int2 = CAST(f_char1 AS SIGNED INT),
45180 f_charbig = 'just inserted'
45181    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45182 DELETE FROM t0_aux
45183 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45184 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45185 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45186 'just inserted' FROM t0_template
45187 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45188 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
45189 BEGIN
45190 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45191 f_charbig = 'updated by trigger'
45192       WHERE f_int1 = - old.f_int1;
45193 END|
45194 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
45195 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45196         
45197 # check trigger-6 success:      1
45198 DROP TRIGGER trg_1;
45199 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45200 f_int2 = CAST(f_char1 AS SIGNED INT),
45201 f_charbig = 'just inserted'
45202    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45203 DELETE FROM t0_aux
45204 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45205 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45206 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45207 'just inserted' FROM t0_template
45208 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45209 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
45210 BEGIN
45211 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45212 f_charbig = 'updated by trigger'
45213       WHERE f_int1 = - old.f_int1;
45214 END|
45215 DELETE FROM t0_aux
45216 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45217         
45218 # check trigger-7 success:      1
45219 DROP TRIGGER trg_1;
45220 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45221 f_int2 = CAST(f_char1 AS SIGNED INT),
45222 f_charbig = 'just inserted'
45223    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45224 DELETE FROM t0_aux
45225 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45226 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45227 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45228 'just inserted' FROM t0_template
45229 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45230 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
45231 BEGIN
45232 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45233 f_charbig = 'updated by trigger'
45234       WHERE f_int1 = - old.f_int1;
45235 END|
45236 DELETE FROM t0_aux
45237 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45238         
45239 # check trigger-8 success:      1
45240 DROP TRIGGER trg_1;
45241 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45242 f_int2 = CAST(f_char1 AS SIGNED INT),
45243 f_charbig = 'just inserted'
45244    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45245 DELETE FROM t0_aux
45246 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45247 DELETE FROM t1
45248 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45249 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
45250 BEGIN
45251 SET new.f_int1 = old.f_int1 + @max_row,
45252 new.f_int2 = old.f_int2 - @max_row,
45253 new.f_charbig = '####updated per update trigger####';
45254 END|
45255 UPDATE t1
45256 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
45257 f_charbig = '####updated per update statement itself####';
45258         
45259 # check trigger-9 success:      1
45260 DROP TRIGGER trg_2;
45261 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45262 f_int2 = CAST(f_char1 AS SIGNED INT),
45263 f_charbig = CONCAT('===',f_char1,'===');
45264 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
45265 BEGIN
45266 SET new.f_int1 = new.f_int1 + @max_row,
45267 new.f_int2 = new.f_int2 - @max_row,
45268 new.f_charbig = '####updated per update trigger####';
45269 END|
45270 UPDATE t1
45271 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
45272 f_charbig = '####updated per update statement itself####';
45273         
45274 # check trigger-10 success:     1
45275 DROP TRIGGER trg_2;
45276 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45277 f_int2 = CAST(f_char1 AS SIGNED INT),
45278 f_charbig = CONCAT('===',f_char1,'===');
45279 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
45280 BEGIN
45281 SET new.f_int1 = @my_max1 + @counter,
45282 new.f_int2 = @my_min2 - @counter,
45283 new.f_charbig = '####updated per insert trigger####';
45284 SET @counter = @counter + 1;
45285 END|
45286 SET @counter = 1;
45287 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
45288 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45289 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
45290 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
45291 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
45292 ORDER BY f_int1;
45293 DROP TRIGGER trg_3;
45294         
45295 # check trigger-11 success:     1
45296 DELETE FROM t1
45297 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
45298 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
45299 AND f_charbig = '####updated per insert trigger####';
45300 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
45301 BEGIN
45302 SET new.f_int1 = @my_max1 + @counter,
45303 new.f_int2 = @my_min2 - @counter,
45304 new.f_charbig = '####updated per insert trigger####';
45305 SET @counter = @counter + 1;
45306 END|
45307 SET @counter = 1;
45308 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
45309 INSERT INTO t1 (f_char1, f_char2, f_charbig)
45310 SELECT CAST(f_int1 AS CHAR),
45311 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
45312 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
45313 ORDER BY f_int1;
45314 DROP TRIGGER trg_3;
45315         
45316 # check trigger-12 success:     1
45317 DELETE FROM t1
45318 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
45319 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
45320 AND f_charbig = '####updated per insert trigger####';
45321 ANALYZE  TABLE t1;
45322 Table   Op      Msg_type        Msg_text
45323 test.t1 analyze status  OK
45324 CHECK    TABLE t1 EXTENDED;
45325 Table   Op      Msg_type        Msg_text
45326 test.t1 check   status  OK
45327 CHECKSUM TABLE t1 EXTENDED;
45328 Table   Checksum
45329 test.t1 <some_value>
45330 OPTIMIZE TABLE t1;
45331 Table   Op      Msg_type        Msg_text
45332 test.t1 optimize        status  OK
45333 # check layout success:    1
45334 REPAIR   TABLE t1 EXTENDED;
45335 Table   Op      Msg_type        Msg_text
45336 test.t1 repair  status  OK
45337 # check layout success:    1
45338 TRUNCATE t1;
45339         
45340 # check TRUNCATE success:       1
45341 # check layout success:    1
45342 # End usability test (inc/partition_check.inc)
45343 DROP TABLE t1;
45344 CREATE TABLE t1 (
45345 f_int1 INTEGER,
45346 f_int2 INTEGER,
45347 f_char1 CHAR(20),
45348 f_char2 CHAR(20),
45349 f_charbig VARCHAR(1000)
45352 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
45353 (PARTITION part_1 VALUES LESS THAN (0)
45354 (SUBPARTITION subpart11, SUBPARTITION subpart12),
45355 PARTITION part_2 VALUES LESS THAN (5)
45356 (SUBPARTITION subpart21, SUBPARTITION subpart22),
45357 PARTITION part_3 VALUES LESS THAN (10)
45358 (SUBPARTITION subpart31, SUBPARTITION subpart32),
45359 PARTITION part_4 VALUES LESS THAN (2147483646)
45360 (SUBPARTITION subpart41, SUBPARTITION subpart42));
45361 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
45362 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
45363 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
45364 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
45365 Table   Op      Msg_type        Msg_text
45366 test.t1 optimize        status  OK
45367 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
45368 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
45369 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
45370 # Start usability test (inc/partition_check.inc)
45371 create_command
45372 SHOW CREATE TABLE t1;
45373 Table   Create Table
45374 t1      CREATE TABLE `t1` (
45375   `f_int1` int(11) DEFAULT NULL,
45376   `f_int2` int(11) DEFAULT NULL,
45377   `f_char1` char(20) DEFAULT NULL,
45378   `f_char2` char(20) DEFAULT NULL,
45379   `f_charbig` varchar(1000) DEFAULT NULL
45380 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
45381 /*!50100 PARTITION BY RANGE (f_int1)
45382 SUBPARTITION BY KEY (f_int1)
45383 (PARTITION part_1 VALUES LESS THAN (0)
45384  (SUBPARTITION subpart11 ENGINE = MyISAM,
45385   SUBPARTITION subpart12 ENGINE = MyISAM),
45386  PARTITION part_2 VALUES LESS THAN (5)
45387  (SUBPARTITION subpart21 ENGINE = MyISAM,
45388   SUBPARTITION subpart22 ENGINE = MyISAM),
45389  PARTITION part_3 VALUES LESS THAN (10)
45390  (SUBPARTITION subpart31 ENGINE = MyISAM,
45391   SUBPARTITION subpart32 ENGINE = MyISAM),
45392  PARTITION part_4 VALUES LESS THAN (2147483646)
45393  (SUBPARTITION subpart41 ENGINE = MyISAM,
45394   SUBPARTITION subpart42 ENGINE = MyISAM)) */
45396 unified filelist
45397 t1#P#part_1#SP#subpart11.MYD
45398 t1#P#part_1#SP#subpart11.MYI
45399 t1#P#part_1#SP#subpart12.MYD
45400 t1#P#part_1#SP#subpart12.MYI
45401 t1#P#part_2#SP#subpart21.MYD
45402 t1#P#part_2#SP#subpart21.MYI
45403 t1#P#part_2#SP#subpart22.MYD
45404 t1#P#part_2#SP#subpart22.MYI
45405 t1#P#part_3#SP#subpart31.MYD
45406 t1#P#part_3#SP#subpart31.MYI
45407 t1#P#part_3#SP#subpart32.MYD
45408 t1#P#part_3#SP#subpart32.MYI
45409 t1#P#part_4#SP#subpart41.MYD
45410 t1#P#part_4#SP#subpart41.MYI
45411 t1#P#part_4#SP#subpart42.MYD
45412 t1#P#part_4#SP#subpart42.MYI
45413 t1.frm
45414 t1.par
45416 # check prerequisites-1 success:    1
45417 # check COUNT(*) success:    1
45418 # check MIN/MAX(f_int1) success:    1
45419 # check MIN/MAX(f_int2) success:    1
45420 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45421 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
45422 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
45423 WHERE f_int1 IN (2,3);
45424 # check prerequisites-3 success:    1
45425 DELETE FROM t1 WHERE f_charbig = 'delete me';
45426 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
45427 # check read via f_int1 success: 1
45428 # check read via f_int2 success: 1
45429         
45430 # check multiple-1 success:     1
45431 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
45432         
45433 # check multiple-2 success:     1
45434 INSERT INTO t1 SELECT * FROM t0_template
45435 WHERE MOD(f_int1,3) = 0;
45436         
45437 # check multiple-3 success:     1
45438 UPDATE t1 SET f_int1 = f_int1 + @max_row
45439 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
45440 AND @max_row_div2 + @max_row_div4;
45441         
45442 # check multiple-4 success:     1
45443 DELETE FROM t1
45444 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
45445 AND @max_row_div2 + @max_row_div4 + @max_row;
45446         
45447 # check multiple-5 success:     1
45448 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
45449 INSERT INTO t1
45450 SET f_int1 = @cur_value , f_int2 = @cur_value,
45451 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
45452 f_charbig = '#SINGLE#';
45453         
45454 # check single-1 success:       1
45455 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
45456 INSERT INTO t1
45457 SET f_int1 = @cur_value , f_int2 = @cur_value,
45458 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
45459 f_charbig = '#SINGLE#';
45460         
45461 # check single-2 success:       1
45462 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
45463 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
45464 UPDATE t1 SET f_int1 = @cur_value2
45465 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
45466         
45467 # check single-3 success:       1
45468 SET @cur_value1= -1;
45469 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
45470 UPDATE t1 SET f_int1 = @cur_value1
45471 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
45472         
45473 # check single-4 success:       1
45474 SELECT MAX(f_int1) INTO @cur_value FROM t1;
45475 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
45476         
45477 # check single-5 success:       1
45478 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
45479         
45480 # check single-6 success:       1
45481 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
45482 ERROR HY000: Table has no partition for value 2147483647
45483 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
45484 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
45485 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
45486 f_charbig = '#NULL#';
45487 INSERT INTO t1
45488 SET f_int1 = NULL , f_int2 = -@max_row,
45489 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
45490 f_charbig = '#NULL#';
45491 # check null success:    1
45492         
45493 # check null-1 success:         1
45494 UPDATE t1 SET f_int1 = -@max_row
45495 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
45496 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
45497         
45498 # check null-2 success:         1
45499 UPDATE t1 SET f_int1 = NULL
45500 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
45501 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
45502         
45503 # check null-3 success:         1
45504 DELETE FROM t1
45505 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
45506 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
45507         
45508 # check null-4 success:         1
45509 DELETE FROM t1
45510 WHERE f_int1 = 0 AND f_int2 = 0
45511 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
45512 AND f_charbig = '#NULL#';
45513 SET AUTOCOMMIT= 0;
45514 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45515 SELECT f_int1, f_int1, '', '', 'was inserted'
45516 FROM t0_template source_tab
45517 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
45518         
45519 # check transactions-1 success:         1
45520 COMMIT WORK;
45521         
45522 # check transactions-2 success:         1
45523 ROLLBACK WORK;
45524         
45525 # check transactions-3 success:         1
45526 DELETE FROM t1 WHERE f_charbig = 'was inserted';
45527 COMMIT WORK;
45528 ROLLBACK WORK;
45529         
45530 # check transactions-4 success:         1
45531 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45532 SELECT f_int1, f_int1, '', '', 'was inserted'
45533 FROM t0_template source_tab
45534 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
45535         
45536 # check transactions-5 success:         1
45537 ROLLBACK WORK;
45538 Warnings:
45539 Warning 1196    Some non-transactional changed tables couldn't be rolled back
45540         
45541 # check transactions-6 success:         1
45542 # INFO: Storage engine used for t1 seems to be not transactional.
45543 COMMIT;
45544         
45545 # check transactions-7 success:         1
45546 DELETE FROM t1 WHERE f_charbig = 'was inserted';
45547 COMMIT WORK;
45548 SET @@session.sql_mode = 'traditional';
45549 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
45550 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45551 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
45552 '', '', 'was inserted' FROM t0_template
45553 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
45554 ERROR 22012: Division by 0
45555 COMMIT;
45556         
45557 # check transactions-8 success:         1
45558 # INFO: Storage engine used for t1 seems to be unable to revert
45559 #       changes made by the failing statement.
45560 SET @@session.sql_mode = '';
45561 SET AUTOCOMMIT= 1;
45562 DELETE FROM t1 WHERE f_charbig = 'was inserted';
45563 COMMIT WORK;
45564 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
45565         
45566 # check special-1 success:      1
45567 UPDATE t1 SET f_charbig = '';
45568         
45569 # check special-2 success:      1
45570 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
45571 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
45572 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
45573 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45574 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45575 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45576 'just inserted' FROM t0_template
45577 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45578 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
45579 BEGIN
45580 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45581 f_charbig = 'updated by trigger'
45582       WHERE f_int1 = new.f_int1;
45583 END|
45584 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45585 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
45586 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45587         
45588 # check trigger-1 success:      1
45589 DROP TRIGGER trg_1;
45590 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45591 f_int2 = CAST(f_char1 AS SIGNED INT),
45592 f_charbig = 'just inserted'
45593    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45594 DELETE FROM t0_aux
45595 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45596 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45597 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45598 'just inserted' FROM t0_template
45599 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45600 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
45601 BEGIN
45602 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45603 f_charbig = 'updated by trigger'
45604       WHERE f_int1 = new.f_int1;
45605 END|
45606 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45607 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
45608 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45609         
45610 # check trigger-2 success:      1
45611 DROP TRIGGER trg_1;
45612 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45613 f_int2 = CAST(f_char1 AS SIGNED INT),
45614 f_charbig = 'just inserted'
45615    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45616 DELETE FROM t0_aux
45617 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45618 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45619 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45620 'just inserted' FROM t0_template
45621 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45622 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
45623 BEGIN
45624 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45625 f_charbig = 'updated by trigger'
45626       WHERE f_int1 = new.f_int1;
45627 END|
45628 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
45629 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45630         
45631 # check trigger-3 success:      1
45632 DROP TRIGGER trg_1;
45633 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45634 f_int2 = CAST(f_char1 AS SIGNED INT),
45635 f_charbig = 'just inserted'
45636    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45637 DELETE FROM t0_aux
45638 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45639 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45640 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45641 'just inserted' FROM t0_template
45642 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45643 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
45644 BEGIN
45645 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45646 f_charbig = 'updated by trigger'
45647       WHERE f_int1 = - old.f_int1;
45648 END|
45649 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
45650 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45651         
45652 # check trigger-4 success:      1
45653 DROP TRIGGER trg_1;
45654 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45655 f_int2 = CAST(f_char1 AS SIGNED INT),
45656 f_charbig = 'just inserted'
45657    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45658 DELETE FROM t0_aux
45659 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45660 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45661 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45662 'just inserted' FROM t0_template
45663 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45664 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
45665 BEGIN
45666 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45667 f_charbig = 'updated by trigger'
45668       WHERE f_int1 = new.f_int1;
45669 END|
45670 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
45671 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45672         
45673 # check trigger-5 success:      1
45674 DROP TRIGGER trg_1;
45675 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45676 f_int2 = CAST(f_char1 AS SIGNED INT),
45677 f_charbig = 'just inserted'
45678    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45679 DELETE FROM t0_aux
45680 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45681 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45682 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45683 'just inserted' FROM t0_template
45684 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45685 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
45686 BEGIN
45687 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45688 f_charbig = 'updated by trigger'
45689       WHERE f_int1 = - old.f_int1;
45690 END|
45691 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
45692 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45693         
45694 # check trigger-6 success:      1
45695 DROP TRIGGER trg_1;
45696 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45697 f_int2 = CAST(f_char1 AS SIGNED INT),
45698 f_charbig = 'just inserted'
45699    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45700 DELETE FROM t0_aux
45701 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45702 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45703 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45704 'just inserted' FROM t0_template
45705 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45706 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
45707 BEGIN
45708 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45709 f_charbig = 'updated by trigger'
45710       WHERE f_int1 = - old.f_int1;
45711 END|
45712 DELETE FROM t0_aux
45713 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45714         
45715 # check trigger-7 success:      1
45716 DROP TRIGGER trg_1;
45717 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45718 f_int2 = CAST(f_char1 AS SIGNED INT),
45719 f_charbig = 'just inserted'
45720    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45721 DELETE FROM t0_aux
45722 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45723 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45724 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45725 'just inserted' FROM t0_template
45726 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45727 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
45728 BEGIN
45729 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45730 f_charbig = 'updated by trigger'
45731       WHERE f_int1 = - old.f_int1;
45732 END|
45733 DELETE FROM t0_aux
45734 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45735         
45736 # check trigger-8 success:      1
45737 DROP TRIGGER trg_1;
45738 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45739 f_int2 = CAST(f_char1 AS SIGNED INT),
45740 f_charbig = 'just inserted'
45741    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45742 DELETE FROM t0_aux
45743 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45744 DELETE FROM t1
45745 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45746 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
45747 BEGIN
45748 SET new.f_int1 = old.f_int1 + @max_row,
45749 new.f_int2 = old.f_int2 - @max_row,
45750 new.f_charbig = '####updated per update trigger####';
45751 END|
45752 UPDATE t1
45753 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
45754 f_charbig = '####updated per update statement itself####';
45755         
45756 # check trigger-9 success:      1
45757 DROP TRIGGER trg_2;
45758 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45759 f_int2 = CAST(f_char1 AS SIGNED INT),
45760 f_charbig = CONCAT('===',f_char1,'===');
45761 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
45762 BEGIN
45763 SET new.f_int1 = new.f_int1 + @max_row,
45764 new.f_int2 = new.f_int2 - @max_row,
45765 new.f_charbig = '####updated per update trigger####';
45766 END|
45767 UPDATE t1
45768 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
45769 f_charbig = '####updated per update statement itself####';
45770         
45771 # check trigger-10 success:     1
45772 DROP TRIGGER trg_2;
45773 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45774 f_int2 = CAST(f_char1 AS SIGNED INT),
45775 f_charbig = CONCAT('===',f_char1,'===');
45776 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
45777 BEGIN
45778 SET new.f_int1 = @my_max1 + @counter,
45779 new.f_int2 = @my_min2 - @counter,
45780 new.f_charbig = '####updated per insert trigger####';
45781 SET @counter = @counter + 1;
45782 END|
45783 SET @counter = 1;
45784 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
45785 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45786 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
45787 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
45788 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
45789 ORDER BY f_int1;
45790 DROP TRIGGER trg_3;
45791         
45792 # check trigger-11 success:     1
45793 DELETE FROM t1
45794 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
45795 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
45796 AND f_charbig = '####updated per insert trigger####';
45797 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
45798 BEGIN
45799 SET new.f_int1 = @my_max1 + @counter,
45800 new.f_int2 = @my_min2 - @counter,
45801 new.f_charbig = '####updated per insert trigger####';
45802 SET @counter = @counter + 1;
45803 END|
45804 SET @counter = 1;
45805 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
45806 INSERT INTO t1 (f_char1, f_char2, f_charbig)
45807 SELECT CAST(f_int1 AS CHAR),
45808 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
45809 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
45810 ORDER BY f_int1;
45811 DROP TRIGGER trg_3;
45812         
45813 # check trigger-12 success:     1
45814 DELETE FROM t1
45815 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
45816 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
45817 AND f_charbig = '####updated per insert trigger####';
45818 ANALYZE  TABLE t1;
45819 Table   Op      Msg_type        Msg_text
45820 test.t1 analyze status  OK
45821 CHECK    TABLE t1 EXTENDED;
45822 Table   Op      Msg_type        Msg_text
45823 test.t1 check   status  OK
45824 CHECKSUM TABLE t1 EXTENDED;
45825 Table   Checksum
45826 test.t1 <some_value>
45827 OPTIMIZE TABLE t1;
45828 Table   Op      Msg_type        Msg_text
45829 test.t1 optimize        status  OK
45830 # check layout success:    1
45831 REPAIR   TABLE t1 EXTENDED;
45832 Table   Op      Msg_type        Msg_text
45833 test.t1 repair  status  OK
45834 # check layout success:    1
45835 TRUNCATE t1;
45836         
45837 # check TRUNCATE success:       1
45838 # check layout success:    1
45839 # End usability test (inc/partition_check.inc)
45840 DROP TABLE t1;
45841 CREATE TABLE t1 (
45842 f_int1 INTEGER,
45843 f_int2 INTEGER,
45844 f_char1 CHAR(20),
45845 f_char2 CHAR(20),
45846 f_charbig VARCHAR(1000)
45849 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
45850 (PARTITION part_1 VALUES IN (0)
45851 (SUBPARTITION sp11, SUBPARTITION sp12),
45852 PARTITION part_2 VALUES IN (1)
45853 (SUBPARTITION sp21, SUBPARTITION sp22),
45854 PARTITION part_3 VALUES IN (2)
45855 (SUBPARTITION sp31, SUBPARTITION sp32),
45856 PARTITION part_4 VALUES IN (NULL)
45857 (SUBPARTITION sp41, SUBPARTITION sp42));
45858 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
45859 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
45860 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
45861 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
45862 Table   Op      Msg_type        Msg_text
45863 test.t1 optimize        status  OK
45864 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
45865 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
45866 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
45867 # Start usability test (inc/partition_check.inc)
45868 create_command
45869 SHOW CREATE TABLE t1;
45870 Table   Create Table
45871 t1      CREATE TABLE `t1` (
45872   `f_int1` int(11) DEFAULT NULL,
45873   `f_int2` int(11) DEFAULT NULL,
45874   `f_char1` char(20) DEFAULT NULL,
45875   `f_char2` char(20) DEFAULT NULL,
45876   `f_charbig` varchar(1000) DEFAULT NULL
45877 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
45878 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
45879 SUBPARTITION BY HASH (f_int1 + 1)
45880 (PARTITION part_1 VALUES IN (0)
45881  (SUBPARTITION sp11 ENGINE = MyISAM,
45882   SUBPARTITION sp12 ENGINE = MyISAM),
45883  PARTITION part_2 VALUES IN (1)
45884  (SUBPARTITION sp21 ENGINE = MyISAM,
45885   SUBPARTITION sp22 ENGINE = MyISAM),
45886  PARTITION part_3 VALUES IN (2)
45887  (SUBPARTITION sp31 ENGINE = MyISAM,
45888   SUBPARTITION sp32 ENGINE = MyISAM),
45889  PARTITION part_4 VALUES IN (NULL)
45890  (SUBPARTITION sp41 ENGINE = MyISAM,
45891   SUBPARTITION sp42 ENGINE = MyISAM)) */
45893 unified filelist
45894 t1#P#part_1#SP#sp11.MYD
45895 t1#P#part_1#SP#sp11.MYI
45896 t1#P#part_1#SP#sp12.MYD
45897 t1#P#part_1#SP#sp12.MYI
45898 t1#P#part_2#SP#sp21.MYD
45899 t1#P#part_2#SP#sp21.MYI
45900 t1#P#part_2#SP#sp22.MYD
45901 t1#P#part_2#SP#sp22.MYI
45902 t1#P#part_3#SP#sp31.MYD
45903 t1#P#part_3#SP#sp31.MYI
45904 t1#P#part_3#SP#sp32.MYD
45905 t1#P#part_3#SP#sp32.MYI
45906 t1#P#part_4#SP#sp41.MYD
45907 t1#P#part_4#SP#sp41.MYI
45908 t1#P#part_4#SP#sp42.MYD
45909 t1#P#part_4#SP#sp42.MYI
45910 t1.frm
45911 t1.par
45913 # check prerequisites-1 success:    1
45914 # check COUNT(*) success:    1
45915 # check MIN/MAX(f_int1) success:    1
45916 # check MIN/MAX(f_int2) success:    1
45917 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45918 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
45919 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
45920 WHERE f_int1 IN (2,3);
45921 # check prerequisites-3 success:    1
45922 DELETE FROM t1 WHERE f_charbig = 'delete me';
45923 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
45924 # check read via f_int1 success: 1
45925 # check read via f_int2 success: 1
45926         
45927 # check multiple-1 success:     1
45928 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
45929         
45930 # check multiple-2 success:     1
45931 INSERT INTO t1 SELECT * FROM t0_template
45932 WHERE MOD(f_int1,3) = 0;
45933         
45934 # check multiple-3 success:     1
45935 UPDATE t1 SET f_int1 = f_int1 + @max_row
45936 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
45937 AND @max_row_div2 + @max_row_div4;
45938         
45939 # check multiple-4 success:     1
45940 DELETE FROM t1
45941 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
45942 AND @max_row_div2 + @max_row_div4 + @max_row;
45943         
45944 # check multiple-5 success:     1
45945 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
45946 INSERT INTO t1
45947 SET f_int1 = @cur_value , f_int2 = @cur_value,
45948 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
45949 f_charbig = '#SINGLE#';
45950         
45951 # check single-1 success:       1
45952 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
45953 INSERT INTO t1
45954 SET f_int1 = @cur_value , f_int2 = @cur_value,
45955 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
45956 f_charbig = '#SINGLE#';
45957         
45958 # check single-2 success:       1
45959 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
45960 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
45961 UPDATE t1 SET f_int1 = @cur_value2
45962 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
45963         
45964 # check single-3 success:       1
45965 SET @cur_value1= -1;
45966 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
45967 UPDATE t1 SET f_int1 = @cur_value1
45968 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
45969         
45970 # check single-4 success:       1
45971 SELECT MAX(f_int1) INTO @cur_value FROM t1;
45972 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
45973         
45974 # check single-5 success:       1
45975 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
45976         
45977 # check single-6 success:       1
45978 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
45979         
45980 # check single-7 success:       1
45981 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
45982 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
45983 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
45984 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
45985 f_charbig = '#NULL#';
45986 INSERT INTO t1
45987 SET f_int1 = NULL , f_int2 = -@max_row,
45988 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
45989 f_charbig = '#NULL#';
45990 # check null success:    1
45991         
45992 # check null-1 success:         1
45993 UPDATE t1 SET f_int1 = -@max_row
45994 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
45995 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
45996         
45997 # check null-2 success:         1
45998 UPDATE t1 SET f_int1 = NULL
45999 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
46000 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
46001         
46002 # check null-3 success:         1
46003 DELETE FROM t1
46004 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
46005 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
46006         
46007 # check null-4 success:         1
46008 DELETE FROM t1
46009 WHERE f_int1 = 0 AND f_int2 = 0
46010 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
46011 AND f_charbig = '#NULL#';
46012 SET AUTOCOMMIT= 0;
46013 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46014 SELECT f_int1, f_int1, '', '', 'was inserted'
46015 FROM t0_template source_tab
46016 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
46017         
46018 # check transactions-1 success:         1
46019 COMMIT WORK;
46020         
46021 # check transactions-2 success:         1
46022 ROLLBACK WORK;
46023         
46024 # check transactions-3 success:         1
46025 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46026 COMMIT WORK;
46027 ROLLBACK WORK;
46028         
46029 # check transactions-4 success:         1
46030 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46031 SELECT f_int1, f_int1, '', '', 'was inserted'
46032 FROM t0_template source_tab
46033 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
46034         
46035 # check transactions-5 success:         1
46036 ROLLBACK WORK;
46037 Warnings:
46038 Warning 1196    Some non-transactional changed tables couldn't be rolled back
46039         
46040 # check transactions-6 success:         1
46041 # INFO: Storage engine used for t1 seems to be not transactional.
46042 COMMIT;
46043         
46044 # check transactions-7 success:         1
46045 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46046 COMMIT WORK;
46047 SET @@session.sql_mode = 'traditional';
46048 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
46049 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46050 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
46051 '', '', 'was inserted' FROM t0_template
46052 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
46053 ERROR 22012: Division by 0
46054 COMMIT;
46055         
46056 # check transactions-8 success:         1
46057 # INFO: Storage engine used for t1 seems to be unable to revert
46058 #       changes made by the failing statement.
46059 SET @@session.sql_mode = '';
46060 SET AUTOCOMMIT= 1;
46061 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46062 COMMIT WORK;
46063 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
46064         
46065 # check special-1 success:      1
46066 UPDATE t1 SET f_charbig = '';
46067         
46068 # check special-2 success:      1
46069 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
46070 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
46071 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
46072 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46073 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46074 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46075 'just inserted' FROM t0_template
46076 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46077 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
46078 BEGIN
46079 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46080 f_charbig = 'updated by trigger'
46081       WHERE f_int1 = new.f_int1;
46082 END|
46083 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46084 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
46085 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46086         
46087 # check trigger-1 success:      1
46088 DROP TRIGGER trg_1;
46089 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46090 f_int2 = CAST(f_char1 AS SIGNED INT),
46091 f_charbig = 'just inserted'
46092    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46093 DELETE FROM t0_aux
46094 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46095 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46096 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46097 'just inserted' FROM t0_template
46098 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46099 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
46100 BEGIN
46101 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46102 f_charbig = 'updated by trigger'
46103       WHERE f_int1 = new.f_int1;
46104 END|
46105 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46106 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
46107 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46108         
46109 # check trigger-2 success:      1
46110 DROP TRIGGER trg_1;
46111 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46112 f_int2 = CAST(f_char1 AS SIGNED INT),
46113 f_charbig = 'just inserted'
46114    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46115 DELETE FROM t0_aux
46116 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46117 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46118 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46119 'just inserted' FROM t0_template
46120 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46121 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
46122 BEGIN
46123 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46124 f_charbig = 'updated by trigger'
46125       WHERE f_int1 = new.f_int1;
46126 END|
46127 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
46128 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46129         
46130 # check trigger-3 success:      1
46131 DROP TRIGGER trg_1;
46132 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46133 f_int2 = CAST(f_char1 AS SIGNED INT),
46134 f_charbig = 'just inserted'
46135    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46136 DELETE FROM t0_aux
46137 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46138 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46139 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46140 'just inserted' FROM t0_template
46141 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46142 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
46143 BEGIN
46144 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46145 f_charbig = 'updated by trigger'
46146       WHERE f_int1 = - old.f_int1;
46147 END|
46148 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
46149 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46150         
46151 # check trigger-4 success:      1
46152 DROP TRIGGER trg_1;
46153 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46154 f_int2 = CAST(f_char1 AS SIGNED INT),
46155 f_charbig = 'just inserted'
46156    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46157 DELETE FROM t0_aux
46158 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46159 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46160 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46161 'just inserted' FROM t0_template
46162 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46163 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
46164 BEGIN
46165 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46166 f_charbig = 'updated by trigger'
46167       WHERE f_int1 = new.f_int1;
46168 END|
46169 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
46170 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46171         
46172 # check trigger-5 success:      1
46173 DROP TRIGGER trg_1;
46174 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46175 f_int2 = CAST(f_char1 AS SIGNED INT),
46176 f_charbig = 'just inserted'
46177    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46178 DELETE FROM t0_aux
46179 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46180 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46181 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46182 'just inserted' FROM t0_template
46183 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46184 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
46185 BEGIN
46186 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46187 f_charbig = 'updated by trigger'
46188       WHERE f_int1 = - old.f_int1;
46189 END|
46190 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
46191 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46192         
46193 # check trigger-6 success:      1
46194 DROP TRIGGER trg_1;
46195 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46196 f_int2 = CAST(f_char1 AS SIGNED INT),
46197 f_charbig = 'just inserted'
46198    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46199 DELETE FROM t0_aux
46200 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46201 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46202 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46203 'just inserted' FROM t0_template
46204 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46205 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
46206 BEGIN
46207 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46208 f_charbig = 'updated by trigger'
46209       WHERE f_int1 = - old.f_int1;
46210 END|
46211 DELETE FROM t0_aux
46212 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46213         
46214 # check trigger-7 success:      1
46215 DROP TRIGGER trg_1;
46216 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46217 f_int2 = CAST(f_char1 AS SIGNED INT),
46218 f_charbig = 'just inserted'
46219    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46220 DELETE FROM t0_aux
46221 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46222 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46223 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46224 'just inserted' FROM t0_template
46225 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46226 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
46227 BEGIN
46228 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46229 f_charbig = 'updated by trigger'
46230       WHERE f_int1 = - old.f_int1;
46231 END|
46232 DELETE FROM t0_aux
46233 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46234         
46235 # check trigger-8 success:      1
46236 DROP TRIGGER trg_1;
46237 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46238 f_int2 = CAST(f_char1 AS SIGNED INT),
46239 f_charbig = 'just inserted'
46240    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46241 DELETE FROM t0_aux
46242 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46243 DELETE FROM t1
46244 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46245 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
46246 BEGIN
46247 SET new.f_int1 = old.f_int1 + @max_row,
46248 new.f_int2 = old.f_int2 - @max_row,
46249 new.f_charbig = '####updated per update trigger####';
46250 END|
46251 UPDATE t1
46252 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
46253 f_charbig = '####updated per update statement itself####';
46254         
46255 # check trigger-9 success:      1
46256 DROP TRIGGER trg_2;
46257 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46258 f_int2 = CAST(f_char1 AS SIGNED INT),
46259 f_charbig = CONCAT('===',f_char1,'===');
46260 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
46261 BEGIN
46262 SET new.f_int1 = new.f_int1 + @max_row,
46263 new.f_int2 = new.f_int2 - @max_row,
46264 new.f_charbig = '####updated per update trigger####';
46265 END|
46266 UPDATE t1
46267 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
46268 f_charbig = '####updated per update statement itself####';
46269         
46270 # check trigger-10 success:     1
46271 DROP TRIGGER trg_2;
46272 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46273 f_int2 = CAST(f_char1 AS SIGNED INT),
46274 f_charbig = CONCAT('===',f_char1,'===');
46275 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
46276 BEGIN
46277 SET new.f_int1 = @my_max1 + @counter,
46278 new.f_int2 = @my_min2 - @counter,
46279 new.f_charbig = '####updated per insert trigger####';
46280 SET @counter = @counter + 1;
46281 END|
46282 SET @counter = 1;
46283 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
46284 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46285 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
46286 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
46287 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
46288 ORDER BY f_int1;
46289 DROP TRIGGER trg_3;
46290         
46291 # check trigger-11 success:     1
46292 DELETE FROM t1
46293 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
46294 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
46295 AND f_charbig = '####updated per insert trigger####';
46296 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
46297 BEGIN
46298 SET new.f_int1 = @my_max1 + @counter,
46299 new.f_int2 = @my_min2 - @counter,
46300 new.f_charbig = '####updated per insert trigger####';
46301 SET @counter = @counter + 1;
46302 END|
46303 SET @counter = 1;
46304 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
46305 INSERT INTO t1 (f_char1, f_char2, f_charbig)
46306 SELECT CAST(f_int1 AS CHAR),
46307 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
46308 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
46309 ORDER BY f_int1;
46310 DROP TRIGGER trg_3;
46311         
46312 # check trigger-12 success:     1
46313 DELETE FROM t1
46314 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
46315 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
46316 AND f_charbig = '####updated per insert trigger####';
46317 ANALYZE  TABLE t1;
46318 Table   Op      Msg_type        Msg_text
46319 test.t1 analyze status  OK
46320 CHECK    TABLE t1 EXTENDED;
46321 Table   Op      Msg_type        Msg_text
46322 test.t1 check   status  OK
46323 CHECKSUM TABLE t1 EXTENDED;
46324 Table   Checksum
46325 test.t1 <some_value>
46326 OPTIMIZE TABLE t1;
46327 Table   Op      Msg_type        Msg_text
46328 test.t1 optimize        status  OK
46329 # check layout success:    1
46330 REPAIR   TABLE t1 EXTENDED;
46331 Table   Op      Msg_type        Msg_text
46332 test.t1 repair  status  OK
46333 # check layout success:    1
46334 TRUNCATE t1;
46335         
46336 # check TRUNCATE success:       1
46337 # check layout success:    1
46338 # End usability test (inc/partition_check.inc)
46339 DROP TABLE t1;
46340 CREATE TABLE t1 (
46341 f_int1 INTEGER,
46342 f_int2 INTEGER,
46343 f_char1 CHAR(20),
46344 f_char2 CHAR(20),
46345 f_charbig VARCHAR(1000)
46348 PARTITION BY LIST(ABS(MOD(f_int1,2)))
46349 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
46350 (PARTITION part_1 VALUES IN (0),
46351  PARTITION part_2 VALUES IN (1),
46352  PARTITION part_3 VALUES IN (NULL));
46353 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
46354 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
46355 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
46356 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
46357 Table   Op      Msg_type        Msg_text
46358 test.t1 optimize        status  OK
46359 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
46360 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
46361 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
46362 # Start usability test (inc/partition_check.inc)
46363 create_command
46364 SHOW CREATE TABLE t1;
46365 Table   Create Table
46366 t1      CREATE TABLE `t1` (
46367   `f_int1` int(11) DEFAULT NULL,
46368   `f_int2` int(11) DEFAULT NULL,
46369   `f_char1` char(20) DEFAULT NULL,
46370   `f_char2` char(20) DEFAULT NULL,
46371   `f_charbig` varchar(1000) DEFAULT NULL
46372 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
46373 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
46374 SUBPARTITION BY KEY (f_int1)
46375 SUBPARTITIONS 3
46376 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
46377  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
46378  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
46380 unified filelist
46381 t1#P#part_1#SP#part_1sp0.MYD
46382 t1#P#part_1#SP#part_1sp0.MYI
46383 t1#P#part_1#SP#part_1sp1.MYD
46384 t1#P#part_1#SP#part_1sp1.MYI
46385 t1#P#part_1#SP#part_1sp2.MYD
46386 t1#P#part_1#SP#part_1sp2.MYI
46387 t1#P#part_2#SP#part_2sp0.MYD
46388 t1#P#part_2#SP#part_2sp0.MYI
46389 t1#P#part_2#SP#part_2sp1.MYD
46390 t1#P#part_2#SP#part_2sp1.MYI
46391 t1#P#part_2#SP#part_2sp2.MYD
46392 t1#P#part_2#SP#part_2sp2.MYI
46393 t1#P#part_3#SP#part_3sp0.MYD
46394 t1#P#part_3#SP#part_3sp0.MYI
46395 t1#P#part_3#SP#part_3sp1.MYD
46396 t1#P#part_3#SP#part_3sp1.MYI
46397 t1#P#part_3#SP#part_3sp2.MYD
46398 t1#P#part_3#SP#part_3sp2.MYI
46399 t1.frm
46400 t1.par
46402 # check prerequisites-1 success:    1
46403 # check COUNT(*) success:    1
46404 # check MIN/MAX(f_int1) success:    1
46405 # check MIN/MAX(f_int2) success:    1
46406 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46407 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
46408 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
46409 WHERE f_int1 IN (2,3);
46410 # check prerequisites-3 success:    1
46411 DELETE FROM t1 WHERE f_charbig = 'delete me';
46412 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
46413 # check read via f_int1 success: 1
46414 # check read via f_int2 success: 1
46415         
46416 # check multiple-1 success:     1
46417 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
46418         
46419 # check multiple-2 success:     1
46420 INSERT INTO t1 SELECT * FROM t0_template
46421 WHERE MOD(f_int1,3) = 0;
46422         
46423 # check multiple-3 success:     1
46424 UPDATE t1 SET f_int1 = f_int1 + @max_row
46425 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
46426 AND @max_row_div2 + @max_row_div4;
46427         
46428 # check multiple-4 success:     1
46429 DELETE FROM t1
46430 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
46431 AND @max_row_div2 + @max_row_div4 + @max_row;
46432         
46433 # check multiple-5 success:     1
46434 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
46435 INSERT INTO t1
46436 SET f_int1 = @cur_value , f_int2 = @cur_value,
46437 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
46438 f_charbig = '#SINGLE#';
46439         
46440 # check single-1 success:       1
46441 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
46442 INSERT INTO t1
46443 SET f_int1 = @cur_value , f_int2 = @cur_value,
46444 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
46445 f_charbig = '#SINGLE#';
46446         
46447 # check single-2 success:       1
46448 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
46449 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
46450 UPDATE t1 SET f_int1 = @cur_value2
46451 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
46452         
46453 # check single-3 success:       1
46454 SET @cur_value1= -1;
46455 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
46456 UPDATE t1 SET f_int1 = @cur_value1
46457 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
46458         
46459 # check single-4 success:       1
46460 SELECT MAX(f_int1) INTO @cur_value FROM t1;
46461 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
46462         
46463 # check single-5 success:       1
46464 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
46465         
46466 # check single-6 success:       1
46467 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
46468         
46469 # check single-7 success:       1
46470 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
46471 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
46472 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
46473 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
46474 f_charbig = '#NULL#';
46475 INSERT INTO t1
46476 SET f_int1 = NULL , f_int2 = -@max_row,
46477 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
46478 f_charbig = '#NULL#';
46479 # check null success:    1
46480         
46481 # check null-1 success:         1
46482 UPDATE t1 SET f_int1 = -@max_row
46483 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
46484 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
46485         
46486 # check null-2 success:         1
46487 UPDATE t1 SET f_int1 = NULL
46488 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
46489 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
46490         
46491 # check null-3 success:         1
46492 DELETE FROM t1
46493 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
46494 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
46495         
46496 # check null-4 success:         1
46497 DELETE FROM t1
46498 WHERE f_int1 = 0 AND f_int2 = 0
46499 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
46500 AND f_charbig = '#NULL#';
46501 SET AUTOCOMMIT= 0;
46502 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46503 SELECT f_int1, f_int1, '', '', 'was inserted'
46504 FROM t0_template source_tab
46505 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
46506         
46507 # check transactions-1 success:         1
46508 COMMIT WORK;
46509         
46510 # check transactions-2 success:         1
46511 ROLLBACK WORK;
46512         
46513 # check transactions-3 success:         1
46514 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46515 COMMIT WORK;
46516 ROLLBACK WORK;
46517         
46518 # check transactions-4 success:         1
46519 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46520 SELECT f_int1, f_int1, '', '', 'was inserted'
46521 FROM t0_template source_tab
46522 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
46523         
46524 # check transactions-5 success:         1
46525 ROLLBACK WORK;
46526 Warnings:
46527 Warning 1196    Some non-transactional changed tables couldn't be rolled back
46528         
46529 # check transactions-6 success:         1
46530 # INFO: Storage engine used for t1 seems to be not transactional.
46531 COMMIT;
46532         
46533 # check transactions-7 success:         1
46534 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46535 COMMIT WORK;
46536 SET @@session.sql_mode = 'traditional';
46537 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
46538 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46539 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
46540 '', '', 'was inserted' FROM t0_template
46541 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
46542 ERROR 22012: Division by 0
46543 COMMIT;
46544         
46545 # check transactions-8 success:         1
46546 # INFO: Storage engine used for t1 seems to be unable to revert
46547 #       changes made by the failing statement.
46548 SET @@session.sql_mode = '';
46549 SET AUTOCOMMIT= 1;
46550 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46551 COMMIT WORK;
46552 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
46553         
46554 # check special-1 success:      1
46555 UPDATE t1 SET f_charbig = '';
46556         
46557 # check special-2 success:      1
46558 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
46559 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
46560 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
46561 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46562 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46563 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46564 'just inserted' FROM t0_template
46565 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46566 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
46567 BEGIN
46568 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46569 f_charbig = 'updated by trigger'
46570       WHERE f_int1 = new.f_int1;
46571 END|
46572 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46573 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
46574 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46575         
46576 # check trigger-1 success:      1
46577 DROP TRIGGER trg_1;
46578 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46579 f_int2 = CAST(f_char1 AS SIGNED INT),
46580 f_charbig = 'just inserted'
46581    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46582 DELETE FROM t0_aux
46583 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46584 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46585 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46586 'just inserted' FROM t0_template
46587 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46588 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
46589 BEGIN
46590 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46591 f_charbig = 'updated by trigger'
46592       WHERE f_int1 = new.f_int1;
46593 END|
46594 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46595 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
46596 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46597         
46598 # check trigger-2 success:      1
46599 DROP TRIGGER trg_1;
46600 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46601 f_int2 = CAST(f_char1 AS SIGNED INT),
46602 f_charbig = 'just inserted'
46603    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46604 DELETE FROM t0_aux
46605 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46606 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46607 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46608 'just inserted' FROM t0_template
46609 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46610 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
46611 BEGIN
46612 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46613 f_charbig = 'updated by trigger'
46614       WHERE f_int1 = new.f_int1;
46615 END|
46616 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
46617 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46618         
46619 # check trigger-3 success:      1
46620 DROP TRIGGER trg_1;
46621 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46622 f_int2 = CAST(f_char1 AS SIGNED INT),
46623 f_charbig = 'just inserted'
46624    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46625 DELETE FROM t0_aux
46626 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46627 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46628 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46629 'just inserted' FROM t0_template
46630 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46631 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
46632 BEGIN
46633 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46634 f_charbig = 'updated by trigger'
46635       WHERE f_int1 = - old.f_int1;
46636 END|
46637 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
46638 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46639         
46640 # check trigger-4 success:      1
46641 DROP TRIGGER trg_1;
46642 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46643 f_int2 = CAST(f_char1 AS SIGNED INT),
46644 f_charbig = 'just inserted'
46645    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46646 DELETE FROM t0_aux
46647 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46648 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46649 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46650 'just inserted' FROM t0_template
46651 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46652 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
46653 BEGIN
46654 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46655 f_charbig = 'updated by trigger'
46656       WHERE f_int1 = new.f_int1;
46657 END|
46658 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
46659 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46660         
46661 # check trigger-5 success:      1
46662 DROP TRIGGER trg_1;
46663 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46664 f_int2 = CAST(f_char1 AS SIGNED INT),
46665 f_charbig = 'just inserted'
46666    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46667 DELETE FROM t0_aux
46668 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46669 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46670 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46671 'just inserted' FROM t0_template
46672 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46673 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
46674 BEGIN
46675 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46676 f_charbig = 'updated by trigger'
46677       WHERE f_int1 = - old.f_int1;
46678 END|
46679 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
46680 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46681         
46682 # check trigger-6 success:      1
46683 DROP TRIGGER trg_1;
46684 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46685 f_int2 = CAST(f_char1 AS SIGNED INT),
46686 f_charbig = 'just inserted'
46687    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46688 DELETE FROM t0_aux
46689 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46690 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46691 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46692 'just inserted' FROM t0_template
46693 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46694 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
46695 BEGIN
46696 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46697 f_charbig = 'updated by trigger'
46698       WHERE f_int1 = - old.f_int1;
46699 END|
46700 DELETE FROM t0_aux
46701 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46702         
46703 # check trigger-7 success:      1
46704 DROP TRIGGER trg_1;
46705 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46706 f_int2 = CAST(f_char1 AS SIGNED INT),
46707 f_charbig = 'just inserted'
46708    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46709 DELETE FROM t0_aux
46710 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46711 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46712 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46713 'just inserted' FROM t0_template
46714 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46715 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
46716 BEGIN
46717 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46718 f_charbig = 'updated by trigger'
46719       WHERE f_int1 = - old.f_int1;
46720 END|
46721 DELETE FROM t0_aux
46722 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46723         
46724 # check trigger-8 success:      1
46725 DROP TRIGGER trg_1;
46726 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46727 f_int2 = CAST(f_char1 AS SIGNED INT),
46728 f_charbig = 'just inserted'
46729    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46730 DELETE FROM t0_aux
46731 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46732 DELETE FROM t1
46733 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46734 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
46735 BEGIN
46736 SET new.f_int1 = old.f_int1 + @max_row,
46737 new.f_int2 = old.f_int2 - @max_row,
46738 new.f_charbig = '####updated per update trigger####';
46739 END|
46740 UPDATE t1
46741 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
46742 f_charbig = '####updated per update statement itself####';
46743         
46744 # check trigger-9 success:      1
46745 DROP TRIGGER trg_2;
46746 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46747 f_int2 = CAST(f_char1 AS SIGNED INT),
46748 f_charbig = CONCAT('===',f_char1,'===');
46749 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
46750 BEGIN
46751 SET new.f_int1 = new.f_int1 + @max_row,
46752 new.f_int2 = new.f_int2 - @max_row,
46753 new.f_charbig = '####updated per update trigger####';
46754 END|
46755 UPDATE t1
46756 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
46757 f_charbig = '####updated per update statement itself####';
46758         
46759 # check trigger-10 success:     1
46760 DROP TRIGGER trg_2;
46761 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46762 f_int2 = CAST(f_char1 AS SIGNED INT),
46763 f_charbig = CONCAT('===',f_char1,'===');
46764 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
46765 BEGIN
46766 SET new.f_int1 = @my_max1 + @counter,
46767 new.f_int2 = @my_min2 - @counter,
46768 new.f_charbig = '####updated per insert trigger####';
46769 SET @counter = @counter + 1;
46770 END|
46771 SET @counter = 1;
46772 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
46773 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46774 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
46775 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
46776 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
46777 ORDER BY f_int1;
46778 DROP TRIGGER trg_3;
46779         
46780 # check trigger-11 success:     1
46781 DELETE FROM t1
46782 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
46783 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
46784 AND f_charbig = '####updated per insert trigger####';
46785 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
46786 BEGIN
46787 SET new.f_int1 = @my_max1 + @counter,
46788 new.f_int2 = @my_min2 - @counter,
46789 new.f_charbig = '####updated per insert trigger####';
46790 SET @counter = @counter + 1;
46791 END|
46792 SET @counter = 1;
46793 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
46794 INSERT INTO t1 (f_char1, f_char2, f_charbig)
46795 SELECT CAST(f_int1 AS CHAR),
46796 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
46797 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
46798 ORDER BY f_int1;
46799 DROP TRIGGER trg_3;
46800         
46801 # check trigger-12 success:     1
46802 DELETE FROM t1
46803 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
46804 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
46805 AND f_charbig = '####updated per insert trigger####';
46806 ANALYZE  TABLE t1;
46807 Table   Op      Msg_type        Msg_text
46808 test.t1 analyze status  OK
46809 CHECK    TABLE t1 EXTENDED;
46810 Table   Op      Msg_type        Msg_text
46811 test.t1 check   status  OK
46812 CHECKSUM TABLE t1 EXTENDED;
46813 Table   Checksum
46814 test.t1 <some_value>
46815 OPTIMIZE TABLE t1;
46816 Table   Op      Msg_type        Msg_text
46817 test.t1 optimize        status  OK
46818 # check layout success:    1
46819 REPAIR   TABLE t1 EXTENDED;
46820 Table   Op      Msg_type        Msg_text
46821 test.t1 repair  status  OK
46822 # check layout success:    1
46823 TRUNCATE t1;
46824         
46825 # check TRUNCATE success:       1
46826 # check layout success:    1
46827 # End usability test (inc/partition_check.inc)
46828 DROP TABLE t1;
46829 #  3.3 ALTER ... OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
46830 DROP TABLE IF EXISTS t1;
46831 CREATE TABLE t1 (
46832 f_int1 INTEGER,
46833 f_int2 INTEGER,
46834 f_char1 CHAR(20),
46835 f_char2 CHAR(20),
46836 f_charbig VARCHAR(1000)
46839 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
46840 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
46841 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
46842 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
46843 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
46844 Table   Op      Msg_type        Msg_text
46845 test.t1 optimize        error   Error in list of partitions to test.t1
46846 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
46847 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
46848 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
46849 # Start usability test (inc/partition_check.inc)
46850 create_command
46851 SHOW CREATE TABLE t1;
46852 Table   Create Table
46853 t1      CREATE TABLE `t1` (
46854   `f_int1` int(11) DEFAULT NULL,
46855   `f_int2` int(11) DEFAULT NULL,
46856   `f_char1` char(20) DEFAULT NULL,
46857   `f_char2` char(20) DEFAULT NULL,
46858   `f_charbig` varchar(1000) DEFAULT NULL
46859 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
46860 /*!50100 PARTITION BY HASH (f_int1)
46861 (PARTITION part_1 ENGINE = MyISAM,
46862  PARTITION part_2 ENGINE = MyISAM) */
46864 unified filelist
46865 t1#P#part_1.MYD
46866 t1#P#part_1.MYI
46867 t1#P#part_2.MYD
46868 t1#P#part_2.MYI
46869 t1.frm
46870 t1.par
46872 # check prerequisites-1 success:    1
46873 # check COUNT(*) success:    1
46874 # check MIN/MAX(f_int1) success:    1
46875 # check MIN/MAX(f_int2) success:    1
46876 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46877 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
46878 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
46879 WHERE f_int1 IN (2,3);
46880 # check prerequisites-3 success:    1
46881 DELETE FROM t1 WHERE f_charbig = 'delete me';
46882 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
46883 # check read via f_int1 success: 1
46884 # check read via f_int2 success: 1
46885         
46886 # check multiple-1 success:     1
46887 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
46888         
46889 # check multiple-2 success:     1
46890 INSERT INTO t1 SELECT * FROM t0_template
46891 WHERE MOD(f_int1,3) = 0;
46892         
46893 # check multiple-3 success:     1
46894 UPDATE t1 SET f_int1 = f_int1 + @max_row
46895 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
46896 AND @max_row_div2 + @max_row_div4;
46897         
46898 # check multiple-4 success:     1
46899 DELETE FROM t1
46900 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
46901 AND @max_row_div2 + @max_row_div4 + @max_row;
46902         
46903 # check multiple-5 success:     1
46904 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
46905 INSERT INTO t1
46906 SET f_int1 = @cur_value , f_int2 = @cur_value,
46907 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
46908 f_charbig = '#SINGLE#';
46909         
46910 # check single-1 success:       1
46911 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
46912 INSERT INTO t1
46913 SET f_int1 = @cur_value , f_int2 = @cur_value,
46914 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
46915 f_charbig = '#SINGLE#';
46916         
46917 # check single-2 success:       1
46918 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
46919 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
46920 UPDATE t1 SET f_int1 = @cur_value2
46921 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
46922         
46923 # check single-3 success:       1
46924 SET @cur_value1= -1;
46925 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
46926 UPDATE t1 SET f_int1 = @cur_value1
46927 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
46928         
46929 # check single-4 success:       1
46930 SELECT MAX(f_int1) INTO @cur_value FROM t1;
46931 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
46932         
46933 # check single-5 success:       1
46934 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
46935         
46936 # check single-6 success:       1
46937 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
46938         
46939 # check single-7 success:       1
46940 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
46941 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
46942 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
46943 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
46944 f_charbig = '#NULL#';
46945 INSERT INTO t1
46946 SET f_int1 = NULL , f_int2 = -@max_row,
46947 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
46948 f_charbig = '#NULL#';
46949 # check null success:    1
46950         
46951 # check null-1 success:         1
46952 UPDATE t1 SET f_int1 = -@max_row
46953 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
46954 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
46955         
46956 # check null-2 success:         1
46957 UPDATE t1 SET f_int1 = NULL
46958 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
46959 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
46960         
46961 # check null-3 success:         1
46962 DELETE FROM t1
46963 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
46964 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
46965         
46966 # check null-4 success:         1
46967 DELETE FROM t1
46968 WHERE f_int1 = 0 AND f_int2 = 0
46969 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
46970 AND f_charbig = '#NULL#';
46971 SET AUTOCOMMIT= 0;
46972 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46973 SELECT f_int1, f_int1, '', '', 'was inserted'
46974 FROM t0_template source_tab
46975 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
46976         
46977 # check transactions-1 success:         1
46978 COMMIT WORK;
46979         
46980 # check transactions-2 success:         1
46981 ROLLBACK WORK;
46982         
46983 # check transactions-3 success:         1
46984 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46985 COMMIT WORK;
46986 ROLLBACK WORK;
46987         
46988 # check transactions-4 success:         1
46989 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46990 SELECT f_int1, f_int1, '', '', 'was inserted'
46991 FROM t0_template source_tab
46992 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
46993         
46994 # check transactions-5 success:         1
46995 ROLLBACK WORK;
46996 Warnings:
46997 Warning 1196    Some non-transactional changed tables couldn't be rolled back
46998         
46999 # check transactions-6 success:         1
47000 # INFO: Storage engine used for t1 seems to be not transactional.
47001 COMMIT;
47002         
47003 # check transactions-7 success:         1
47004 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47005 COMMIT WORK;
47006 SET @@session.sql_mode = 'traditional';
47007 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
47008 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47009 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
47010 '', '', 'was inserted' FROM t0_template
47011 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
47012 ERROR 22012: Division by 0
47013 COMMIT;
47014         
47015 # check transactions-8 success:         1
47016 # INFO: Storage engine used for t1 seems to be unable to revert
47017 #       changes made by the failing statement.
47018 SET @@session.sql_mode = '';
47019 SET AUTOCOMMIT= 1;
47020 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47021 COMMIT WORK;
47022 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
47023         
47024 # check special-1 success:      1
47025 UPDATE t1 SET f_charbig = '';
47026         
47027 # check special-2 success:      1
47028 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
47029 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
47030 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
47031 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47032 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47033 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47034 'just inserted' FROM t0_template
47035 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47036 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
47037 BEGIN
47038 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47039 f_charbig = 'updated by trigger'
47040       WHERE f_int1 = new.f_int1;
47041 END|
47042 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47043 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
47044 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47045         
47046 # check trigger-1 success:      1
47047 DROP TRIGGER trg_1;
47048 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47049 f_int2 = CAST(f_char1 AS SIGNED INT),
47050 f_charbig = 'just inserted'
47051    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47052 DELETE FROM t0_aux
47053 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47054 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47055 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47056 'just inserted' FROM t0_template
47057 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47058 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
47059 BEGIN
47060 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47061 f_charbig = 'updated by trigger'
47062       WHERE f_int1 = new.f_int1;
47063 END|
47064 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47065 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
47066 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47067         
47068 # check trigger-2 success:      1
47069 DROP TRIGGER trg_1;
47070 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47071 f_int2 = CAST(f_char1 AS SIGNED INT),
47072 f_charbig = 'just inserted'
47073    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47074 DELETE FROM t0_aux
47075 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47076 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47077 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47078 'just inserted' FROM t0_template
47079 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47080 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
47081 BEGIN
47082 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47083 f_charbig = 'updated by trigger'
47084       WHERE f_int1 = new.f_int1;
47085 END|
47086 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
47087 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47088         
47089 # check trigger-3 success:      1
47090 DROP TRIGGER trg_1;
47091 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47092 f_int2 = CAST(f_char1 AS SIGNED INT),
47093 f_charbig = 'just inserted'
47094    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47095 DELETE FROM t0_aux
47096 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47097 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47098 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47099 'just inserted' FROM t0_template
47100 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47101 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
47102 BEGIN
47103 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47104 f_charbig = 'updated by trigger'
47105       WHERE f_int1 = - old.f_int1;
47106 END|
47107 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
47108 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47109         
47110 # check trigger-4 success:      1
47111 DROP TRIGGER trg_1;
47112 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47113 f_int2 = CAST(f_char1 AS SIGNED INT),
47114 f_charbig = 'just inserted'
47115    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47116 DELETE FROM t0_aux
47117 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47118 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47119 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47120 'just inserted' FROM t0_template
47121 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47122 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
47123 BEGIN
47124 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47125 f_charbig = 'updated by trigger'
47126       WHERE f_int1 = new.f_int1;
47127 END|
47128 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
47129 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47130         
47131 # check trigger-5 success:      1
47132 DROP TRIGGER trg_1;
47133 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47134 f_int2 = CAST(f_char1 AS SIGNED INT),
47135 f_charbig = 'just inserted'
47136    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47137 DELETE FROM t0_aux
47138 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47139 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47140 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47141 'just inserted' FROM t0_template
47142 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47143 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
47144 BEGIN
47145 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47146 f_charbig = 'updated by trigger'
47147       WHERE f_int1 = - old.f_int1;
47148 END|
47149 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
47150 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47151         
47152 # check trigger-6 success:      1
47153 DROP TRIGGER trg_1;
47154 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47155 f_int2 = CAST(f_char1 AS SIGNED INT),
47156 f_charbig = 'just inserted'
47157    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47158 DELETE FROM t0_aux
47159 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47160 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47161 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47162 'just inserted' FROM t0_template
47163 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47164 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
47165 BEGIN
47166 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47167 f_charbig = 'updated by trigger'
47168       WHERE f_int1 = - old.f_int1;
47169 END|
47170 DELETE FROM t0_aux
47171 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47172         
47173 # check trigger-7 success:      1
47174 DROP TRIGGER trg_1;
47175 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47176 f_int2 = CAST(f_char1 AS SIGNED INT),
47177 f_charbig = 'just inserted'
47178    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47179 DELETE FROM t0_aux
47180 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47181 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47182 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47183 'just inserted' FROM t0_template
47184 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47185 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
47186 BEGIN
47187 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47188 f_charbig = 'updated by trigger'
47189       WHERE f_int1 = - old.f_int1;
47190 END|
47191 DELETE FROM t0_aux
47192 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47193         
47194 # check trigger-8 success:      1
47195 DROP TRIGGER trg_1;
47196 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47197 f_int2 = CAST(f_char1 AS SIGNED INT),
47198 f_charbig = 'just inserted'
47199    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47200 DELETE FROM t0_aux
47201 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47202 DELETE FROM t1
47203 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47204 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
47205 BEGIN
47206 SET new.f_int1 = old.f_int1 + @max_row,
47207 new.f_int2 = old.f_int2 - @max_row,
47208 new.f_charbig = '####updated per update trigger####';
47209 END|
47210 UPDATE t1
47211 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
47212 f_charbig = '####updated per update statement itself####';
47213         
47214 # check trigger-9 success:      1
47215 DROP TRIGGER trg_2;
47216 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47217 f_int2 = CAST(f_char1 AS SIGNED INT),
47218 f_charbig = CONCAT('===',f_char1,'===');
47219 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
47220 BEGIN
47221 SET new.f_int1 = new.f_int1 + @max_row,
47222 new.f_int2 = new.f_int2 - @max_row,
47223 new.f_charbig = '####updated per update trigger####';
47224 END|
47225 UPDATE t1
47226 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
47227 f_charbig = '####updated per update statement itself####';
47228         
47229 # check trigger-10 success:     1
47230 DROP TRIGGER trg_2;
47231 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47232 f_int2 = CAST(f_char1 AS SIGNED INT),
47233 f_charbig = CONCAT('===',f_char1,'===');
47234 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
47235 BEGIN
47236 SET new.f_int1 = @my_max1 + @counter,
47237 new.f_int2 = @my_min2 - @counter,
47238 new.f_charbig = '####updated per insert trigger####';
47239 SET @counter = @counter + 1;
47240 END|
47241 SET @counter = 1;
47242 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
47243 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47244 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
47245 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
47246 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
47247 ORDER BY f_int1;
47248 DROP TRIGGER trg_3;
47249         
47250 # check trigger-11 success:     1
47251 DELETE FROM t1
47252 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
47253 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
47254 AND f_charbig = '####updated per insert trigger####';
47255 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
47256 BEGIN
47257 SET new.f_int1 = @my_max1 + @counter,
47258 new.f_int2 = @my_min2 - @counter,
47259 new.f_charbig = '####updated per insert trigger####';
47260 SET @counter = @counter + 1;
47261 END|
47262 SET @counter = 1;
47263 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
47264 INSERT INTO t1 (f_char1, f_char2, f_charbig)
47265 SELECT CAST(f_int1 AS CHAR),
47266 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
47267 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
47268 ORDER BY f_int1;
47269 DROP TRIGGER trg_3;
47270         
47271 # check trigger-12 success:     1
47272 DELETE FROM t1
47273 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
47274 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
47275 AND f_charbig = '####updated per insert trigger####';
47276 ANALYZE  TABLE t1;
47277 Table   Op      Msg_type        Msg_text
47278 test.t1 analyze status  OK
47279 CHECK    TABLE t1 EXTENDED;
47280 Table   Op      Msg_type        Msg_text
47281 test.t1 check   status  OK
47282 CHECKSUM TABLE t1 EXTENDED;
47283 Table   Checksum
47284 test.t1 <some_value>
47285 OPTIMIZE TABLE t1;
47286 Table   Op      Msg_type        Msg_text
47287 test.t1 optimize        status  OK
47288 # check layout success:    1
47289 REPAIR   TABLE t1 EXTENDED;
47290 Table   Op      Msg_type        Msg_text
47291 test.t1 repair  status  OK
47292 # check layout success:    1
47293 TRUNCATE t1;
47294         
47295 # check TRUNCATE success:       1
47296 # check layout success:    1
47297 # End usability test (inc/partition_check.inc)
47298 DROP TABLE t1;
47299 CREATE TABLE t1 (
47300 f_int1 INTEGER,
47301 f_int2 INTEGER,
47302 f_char1 CHAR(20),
47303 f_char2 CHAR(20),
47304 f_charbig VARCHAR(1000)
47307 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
47308 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
47309 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
47310 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
47311 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
47312 Table   Op      Msg_type        Msg_text
47313 test.t1 optimize        error   Error in list of partitions to test.t1
47314 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
47315 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
47316 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
47317 # Start usability test (inc/partition_check.inc)
47318 create_command
47319 SHOW CREATE TABLE t1;
47320 Table   Create Table
47321 t1      CREATE TABLE `t1` (
47322   `f_int1` int(11) DEFAULT NULL,
47323   `f_int2` int(11) DEFAULT NULL,
47324   `f_char1` char(20) DEFAULT NULL,
47325   `f_char2` char(20) DEFAULT NULL,
47326   `f_charbig` varchar(1000) DEFAULT NULL
47327 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
47328 /*!50100 PARTITION BY KEY (f_int1)
47329 (PARTITION part_1 ENGINE = MyISAM,
47330  PARTITION part_2 ENGINE = MyISAM,
47331  PARTITION part_3 ENGINE = MyISAM,
47332  PARTITION part_4 ENGINE = MyISAM,
47333  PARTITION part_5 ENGINE = MyISAM) */
47335 unified filelist
47336 t1#P#part_1.MYD
47337 t1#P#part_1.MYI
47338 t1#P#part_2.MYD
47339 t1#P#part_2.MYI
47340 t1#P#part_3.MYD
47341 t1#P#part_3.MYI
47342 t1#P#part_4.MYD
47343 t1#P#part_4.MYI
47344 t1#P#part_5.MYD
47345 t1#P#part_5.MYI
47346 t1.frm
47347 t1.par
47349 # check prerequisites-1 success:    1
47350 # check COUNT(*) success:    1
47351 # check MIN/MAX(f_int1) success:    1
47352 # check MIN/MAX(f_int2) success:    1
47353 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47354 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
47355 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
47356 WHERE f_int1 IN (2,3);
47357 # check prerequisites-3 success:    1
47358 DELETE FROM t1 WHERE f_charbig = 'delete me';
47359 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
47360 # check read via f_int1 success: 1
47361 # check read via f_int2 success: 1
47362         
47363 # check multiple-1 success:     1
47364 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
47365         
47366 # check multiple-2 success:     1
47367 INSERT INTO t1 SELECT * FROM t0_template
47368 WHERE MOD(f_int1,3) = 0;
47369         
47370 # check multiple-3 success:     1
47371 UPDATE t1 SET f_int1 = f_int1 + @max_row
47372 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
47373 AND @max_row_div2 + @max_row_div4;
47374         
47375 # check multiple-4 success:     1
47376 DELETE FROM t1
47377 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
47378 AND @max_row_div2 + @max_row_div4 + @max_row;
47379         
47380 # check multiple-5 success:     1
47381 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
47382 INSERT INTO t1
47383 SET f_int1 = @cur_value , f_int2 = @cur_value,
47384 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
47385 f_charbig = '#SINGLE#';
47386         
47387 # check single-1 success:       1
47388 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
47389 INSERT INTO t1
47390 SET f_int1 = @cur_value , f_int2 = @cur_value,
47391 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
47392 f_charbig = '#SINGLE#';
47393         
47394 # check single-2 success:       1
47395 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
47396 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
47397 UPDATE t1 SET f_int1 = @cur_value2
47398 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
47399         
47400 # check single-3 success:       1
47401 SET @cur_value1= -1;
47402 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
47403 UPDATE t1 SET f_int1 = @cur_value1
47404 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
47405         
47406 # check single-4 success:       1
47407 SELECT MAX(f_int1) INTO @cur_value FROM t1;
47408 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
47409         
47410 # check single-5 success:       1
47411 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
47412         
47413 # check single-6 success:       1
47414 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
47415         
47416 # check single-7 success:       1
47417 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
47418 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
47419 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
47420 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
47421 f_charbig = '#NULL#';
47422 INSERT INTO t1
47423 SET f_int1 = NULL , f_int2 = -@max_row,
47424 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
47425 f_charbig = '#NULL#';
47426 # check null success:    1
47427         
47428 # check null-1 success:         1
47429 UPDATE t1 SET f_int1 = -@max_row
47430 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
47431 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
47432         
47433 # check null-2 success:         1
47434 UPDATE t1 SET f_int1 = NULL
47435 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
47436 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
47437         
47438 # check null-3 success:         1
47439 DELETE FROM t1
47440 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
47441 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
47442         
47443 # check null-4 success:         1
47444 DELETE FROM t1
47445 WHERE f_int1 = 0 AND f_int2 = 0
47446 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
47447 AND f_charbig = '#NULL#';
47448 SET AUTOCOMMIT= 0;
47449 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47450 SELECT f_int1, f_int1, '', '', 'was inserted'
47451 FROM t0_template source_tab
47452 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
47453         
47454 # check transactions-1 success:         1
47455 COMMIT WORK;
47456         
47457 # check transactions-2 success:         1
47458 ROLLBACK WORK;
47459         
47460 # check transactions-3 success:         1
47461 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47462 COMMIT WORK;
47463 ROLLBACK WORK;
47464         
47465 # check transactions-4 success:         1
47466 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47467 SELECT f_int1, f_int1, '', '', 'was inserted'
47468 FROM t0_template source_tab
47469 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
47470         
47471 # check transactions-5 success:         1
47472 ROLLBACK WORK;
47473 Warnings:
47474 Warning 1196    Some non-transactional changed tables couldn't be rolled back
47475         
47476 # check transactions-6 success:         1
47477 # INFO: Storage engine used for t1 seems to be not transactional.
47478 COMMIT;
47479         
47480 # check transactions-7 success:         1
47481 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47482 COMMIT WORK;
47483 SET @@session.sql_mode = 'traditional';
47484 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
47485 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47486 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
47487 '', '', 'was inserted' FROM t0_template
47488 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
47489 ERROR 22012: Division by 0
47490 COMMIT;
47491         
47492 # check transactions-8 success:         1
47493 # INFO: Storage engine used for t1 seems to be unable to revert
47494 #       changes made by the failing statement.
47495 SET @@session.sql_mode = '';
47496 SET AUTOCOMMIT= 1;
47497 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47498 COMMIT WORK;
47499 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
47500         
47501 # check special-1 success:      1
47502 UPDATE t1 SET f_charbig = '';
47503         
47504 # check special-2 success:      1
47505 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
47506 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
47507 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
47508 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47509 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47510 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47511 'just inserted' FROM t0_template
47512 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47513 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
47514 BEGIN
47515 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47516 f_charbig = 'updated by trigger'
47517       WHERE f_int1 = new.f_int1;
47518 END|
47519 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47520 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
47521 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47522         
47523 # check trigger-1 success:      1
47524 DROP TRIGGER trg_1;
47525 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47526 f_int2 = CAST(f_char1 AS SIGNED INT),
47527 f_charbig = 'just inserted'
47528    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47529 DELETE FROM t0_aux
47530 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47531 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47532 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47533 'just inserted' FROM t0_template
47534 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47535 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
47536 BEGIN
47537 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47538 f_charbig = 'updated by trigger'
47539       WHERE f_int1 = new.f_int1;
47540 END|
47541 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47542 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
47543 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47544         
47545 # check trigger-2 success:      1
47546 DROP TRIGGER trg_1;
47547 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47548 f_int2 = CAST(f_char1 AS SIGNED INT),
47549 f_charbig = 'just inserted'
47550    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47551 DELETE FROM t0_aux
47552 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47553 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47554 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47555 'just inserted' FROM t0_template
47556 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47557 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
47558 BEGIN
47559 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47560 f_charbig = 'updated by trigger'
47561       WHERE f_int1 = new.f_int1;
47562 END|
47563 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
47564 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47565         
47566 # check trigger-3 success:      1
47567 DROP TRIGGER trg_1;
47568 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47569 f_int2 = CAST(f_char1 AS SIGNED INT),
47570 f_charbig = 'just inserted'
47571    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47572 DELETE FROM t0_aux
47573 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47574 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47575 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47576 'just inserted' FROM t0_template
47577 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47578 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
47579 BEGIN
47580 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47581 f_charbig = 'updated by trigger'
47582       WHERE f_int1 = - old.f_int1;
47583 END|
47584 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
47585 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47586         
47587 # check trigger-4 success:      1
47588 DROP TRIGGER trg_1;
47589 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47590 f_int2 = CAST(f_char1 AS SIGNED INT),
47591 f_charbig = 'just inserted'
47592    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47593 DELETE FROM t0_aux
47594 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47595 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47596 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47597 'just inserted' FROM t0_template
47598 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47599 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
47600 BEGIN
47601 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47602 f_charbig = 'updated by trigger'
47603       WHERE f_int1 = new.f_int1;
47604 END|
47605 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
47606 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47607         
47608 # check trigger-5 success:      1
47609 DROP TRIGGER trg_1;
47610 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47611 f_int2 = CAST(f_char1 AS SIGNED INT),
47612 f_charbig = 'just inserted'
47613    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47614 DELETE FROM t0_aux
47615 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47616 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47617 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47618 'just inserted' FROM t0_template
47619 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47620 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
47621 BEGIN
47622 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47623 f_charbig = 'updated by trigger'
47624       WHERE f_int1 = - old.f_int1;
47625 END|
47626 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
47627 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47628         
47629 # check trigger-6 success:      1
47630 DROP TRIGGER trg_1;
47631 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47632 f_int2 = CAST(f_char1 AS SIGNED INT),
47633 f_charbig = 'just inserted'
47634    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47635 DELETE FROM t0_aux
47636 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47637 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47638 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47639 'just inserted' FROM t0_template
47640 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47641 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
47642 BEGIN
47643 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47644 f_charbig = 'updated by trigger'
47645       WHERE f_int1 = - old.f_int1;
47646 END|
47647 DELETE FROM t0_aux
47648 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47649         
47650 # check trigger-7 success:      1
47651 DROP TRIGGER trg_1;
47652 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47653 f_int2 = CAST(f_char1 AS SIGNED INT),
47654 f_charbig = 'just inserted'
47655    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47656 DELETE FROM t0_aux
47657 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47658 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47659 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47660 'just inserted' FROM t0_template
47661 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47662 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
47663 BEGIN
47664 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47665 f_charbig = 'updated by trigger'
47666       WHERE f_int1 = - old.f_int1;
47667 END|
47668 DELETE FROM t0_aux
47669 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47670         
47671 # check trigger-8 success:      1
47672 DROP TRIGGER trg_1;
47673 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47674 f_int2 = CAST(f_char1 AS SIGNED INT),
47675 f_charbig = 'just inserted'
47676    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47677 DELETE FROM t0_aux
47678 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47679 DELETE FROM t1
47680 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47681 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
47682 BEGIN
47683 SET new.f_int1 = old.f_int1 + @max_row,
47684 new.f_int2 = old.f_int2 - @max_row,
47685 new.f_charbig = '####updated per update trigger####';
47686 END|
47687 UPDATE t1
47688 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
47689 f_charbig = '####updated per update statement itself####';
47690         
47691 # check trigger-9 success:      1
47692 DROP TRIGGER trg_2;
47693 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47694 f_int2 = CAST(f_char1 AS SIGNED INT),
47695 f_charbig = CONCAT('===',f_char1,'===');
47696 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
47697 BEGIN
47698 SET new.f_int1 = new.f_int1 + @max_row,
47699 new.f_int2 = new.f_int2 - @max_row,
47700 new.f_charbig = '####updated per update trigger####';
47701 END|
47702 UPDATE t1
47703 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
47704 f_charbig = '####updated per update statement itself####';
47705         
47706 # check trigger-10 success:     1
47707 DROP TRIGGER trg_2;
47708 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47709 f_int2 = CAST(f_char1 AS SIGNED INT),
47710 f_charbig = CONCAT('===',f_char1,'===');
47711 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
47712 BEGIN
47713 SET new.f_int1 = @my_max1 + @counter,
47714 new.f_int2 = @my_min2 - @counter,
47715 new.f_charbig = '####updated per insert trigger####';
47716 SET @counter = @counter + 1;
47717 END|
47718 SET @counter = 1;
47719 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
47720 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47721 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
47722 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
47723 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
47724 ORDER BY f_int1;
47725 DROP TRIGGER trg_3;
47726         
47727 # check trigger-11 success:     1
47728 DELETE FROM t1
47729 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
47730 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
47731 AND f_charbig = '####updated per insert trigger####';
47732 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
47733 BEGIN
47734 SET new.f_int1 = @my_max1 + @counter,
47735 new.f_int2 = @my_min2 - @counter,
47736 new.f_charbig = '####updated per insert trigger####';
47737 SET @counter = @counter + 1;
47738 END|
47739 SET @counter = 1;
47740 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
47741 INSERT INTO t1 (f_char1, f_char2, f_charbig)
47742 SELECT CAST(f_int1 AS CHAR),
47743 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
47744 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
47745 ORDER BY f_int1;
47746 DROP TRIGGER trg_3;
47747         
47748 # check trigger-12 success:     1
47749 DELETE FROM t1
47750 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
47751 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
47752 AND f_charbig = '####updated per insert trigger####';
47753 ANALYZE  TABLE t1;
47754 Table   Op      Msg_type        Msg_text
47755 test.t1 analyze status  OK
47756 CHECK    TABLE t1 EXTENDED;
47757 Table   Op      Msg_type        Msg_text
47758 test.t1 check   status  OK
47759 CHECKSUM TABLE t1 EXTENDED;
47760 Table   Checksum
47761 test.t1 <some_value>
47762 OPTIMIZE TABLE t1;
47763 Table   Op      Msg_type        Msg_text
47764 test.t1 optimize        status  OK
47765 # check layout success:    1
47766 REPAIR   TABLE t1 EXTENDED;
47767 Table   Op      Msg_type        Msg_text
47768 test.t1 repair  status  OK
47769 # check layout success:    1
47770 TRUNCATE t1;
47771         
47772 # check TRUNCATE success:       1
47773 # check layout success:    1
47774 # End usability test (inc/partition_check.inc)
47775 DROP TABLE t1;
47776 CREATE TABLE t1 (
47777 f_int1 INTEGER,
47778 f_int2 INTEGER,
47779 f_char1 CHAR(20),
47780 f_char2 CHAR(20),
47781 f_charbig VARCHAR(1000)
47784 PARTITION BY LIST(MOD(f_int1,4))
47785 (PARTITION part_3 VALUES IN (-3),
47786 PARTITION part_2 VALUES IN (-2),
47787 PARTITION part_1 VALUES IN (-1),
47788 PARTITION part_N VALUES IN (NULL),
47789 PARTITION part0 VALUES IN (0),
47790 PARTITION part1 VALUES IN (1),
47791 PARTITION part2 VALUES IN (2),
47792 PARTITION part3 VALUES IN (3));
47793 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
47794 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
47795 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
47796 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
47797 Table   Op      Msg_type        Msg_text
47798 test.t1 optimize        error   Error in list of partitions to test.t1
47799 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
47800 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
47801 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
47802 # Start usability test (inc/partition_check.inc)
47803 create_command
47804 SHOW CREATE TABLE t1;
47805 Table   Create Table
47806 t1      CREATE TABLE `t1` (
47807   `f_int1` int(11) DEFAULT NULL,
47808   `f_int2` int(11) DEFAULT NULL,
47809   `f_char1` char(20) DEFAULT NULL,
47810   `f_char2` char(20) DEFAULT NULL,
47811   `f_charbig` varchar(1000) DEFAULT NULL
47812 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
47813 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
47814 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
47815  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
47816  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
47817  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
47818  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
47819  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
47820  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
47821  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
47823 unified filelist
47824 t1#P#part0.MYD
47825 t1#P#part0.MYI
47826 t1#P#part1.MYD
47827 t1#P#part1.MYI
47828 t1#P#part2.MYD
47829 t1#P#part2.MYI
47830 t1#P#part3.MYD
47831 t1#P#part3.MYI
47832 t1#P#part_1.MYD
47833 t1#P#part_1.MYI
47834 t1#P#part_2.MYD
47835 t1#P#part_2.MYI
47836 t1#P#part_3.MYD
47837 t1#P#part_3.MYI
47838 t1#P#part_N.MYD
47839 t1#P#part_N.MYI
47840 t1.frm
47841 t1.par
47843 # check prerequisites-1 success:    1
47844 # check COUNT(*) success:    1
47845 # check MIN/MAX(f_int1) success:    1
47846 # check MIN/MAX(f_int2) success:    1
47847 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47848 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
47849 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
47850 WHERE f_int1 IN (2,3);
47851 # check prerequisites-3 success:    1
47852 DELETE FROM t1 WHERE f_charbig = 'delete me';
47853 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
47854 # check read via f_int1 success: 1
47855 # check read via f_int2 success: 1
47856         
47857 # check multiple-1 success:     1
47858 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
47859         
47860 # check multiple-2 success:     1
47861 INSERT INTO t1 SELECT * FROM t0_template
47862 WHERE MOD(f_int1,3) = 0;
47863         
47864 # check multiple-3 success:     1
47865 UPDATE t1 SET f_int1 = f_int1 + @max_row
47866 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
47867 AND @max_row_div2 + @max_row_div4;
47868         
47869 # check multiple-4 success:     1
47870 DELETE FROM t1
47871 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
47872 AND @max_row_div2 + @max_row_div4 + @max_row;
47873         
47874 # check multiple-5 success:     1
47875 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
47876 INSERT INTO t1
47877 SET f_int1 = @cur_value , f_int2 = @cur_value,
47878 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
47879 f_charbig = '#SINGLE#';
47880         
47881 # check single-1 success:       1
47882 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
47883 INSERT INTO t1
47884 SET f_int1 = @cur_value , f_int2 = @cur_value,
47885 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
47886 f_charbig = '#SINGLE#';
47887         
47888 # check single-2 success:       1
47889 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
47890 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
47891 UPDATE t1 SET f_int1 = @cur_value2
47892 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
47893         
47894 # check single-3 success:       1
47895 SET @cur_value1= -1;
47896 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
47897 UPDATE t1 SET f_int1 = @cur_value1
47898 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
47899         
47900 # check single-4 success:       1
47901 SELECT MAX(f_int1) INTO @cur_value FROM t1;
47902 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
47903         
47904 # check single-5 success:       1
47905 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
47906         
47907 # check single-6 success:       1
47908 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
47909         
47910 # check single-7 success:       1
47911 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
47912 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
47913 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
47914 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
47915 f_charbig = '#NULL#';
47916 INSERT INTO t1
47917 SET f_int1 = NULL , f_int2 = -@max_row,
47918 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
47919 f_charbig = '#NULL#';
47920 # check null success:    1
47921         
47922 # check null-1 success:         1
47923 UPDATE t1 SET f_int1 = -@max_row
47924 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
47925 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
47926         
47927 # check null-2 success:         1
47928 UPDATE t1 SET f_int1 = NULL
47929 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
47930 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
47931         
47932 # check null-3 success:         1
47933 DELETE FROM t1
47934 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
47935 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
47936         
47937 # check null-4 success:         1
47938 DELETE FROM t1
47939 WHERE f_int1 = 0 AND f_int2 = 0
47940 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
47941 AND f_charbig = '#NULL#';
47942 SET AUTOCOMMIT= 0;
47943 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47944 SELECT f_int1, f_int1, '', '', 'was inserted'
47945 FROM t0_template source_tab
47946 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
47947         
47948 # check transactions-1 success:         1
47949 COMMIT WORK;
47950         
47951 # check transactions-2 success:         1
47952 ROLLBACK WORK;
47953         
47954 # check transactions-3 success:         1
47955 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47956 COMMIT WORK;
47957 ROLLBACK WORK;
47958         
47959 # check transactions-4 success:         1
47960 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47961 SELECT f_int1, f_int1, '', '', 'was inserted'
47962 FROM t0_template source_tab
47963 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
47964         
47965 # check transactions-5 success:         1
47966 ROLLBACK WORK;
47967 Warnings:
47968 Warning 1196    Some non-transactional changed tables couldn't be rolled back
47969         
47970 # check transactions-6 success:         1
47971 # INFO: Storage engine used for t1 seems to be not transactional.
47972 COMMIT;
47973         
47974 # check transactions-7 success:         1
47975 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47976 COMMIT WORK;
47977 SET @@session.sql_mode = 'traditional';
47978 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
47979 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47980 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
47981 '', '', 'was inserted' FROM t0_template
47982 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
47983 ERROR 22012: Division by 0
47984 COMMIT;
47985         
47986 # check transactions-8 success:         1
47987 # INFO: Storage engine used for t1 seems to be unable to revert
47988 #       changes made by the failing statement.
47989 SET @@session.sql_mode = '';
47990 SET AUTOCOMMIT= 1;
47991 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47992 COMMIT WORK;
47993 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
47994         
47995 # check special-1 success:      1
47996 UPDATE t1 SET f_charbig = '';
47997         
47998 # check special-2 success:      1
47999 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
48000 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
48001 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
48002 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48003 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48004 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48005 'just inserted' FROM t0_template
48006 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48007 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
48008 BEGIN
48009 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48010 f_charbig = 'updated by trigger'
48011       WHERE f_int1 = new.f_int1;
48012 END|
48013 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48014 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
48015 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48016         
48017 # check trigger-1 success:      1
48018 DROP TRIGGER trg_1;
48019 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48020 f_int2 = CAST(f_char1 AS SIGNED INT),
48021 f_charbig = 'just inserted'
48022    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48023 DELETE FROM t0_aux
48024 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48025 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48026 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48027 'just inserted' FROM t0_template
48028 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48029 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
48030 BEGIN
48031 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48032 f_charbig = 'updated by trigger'
48033       WHERE f_int1 = new.f_int1;
48034 END|
48035 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48036 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
48037 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48038         
48039 # check trigger-2 success:      1
48040 DROP TRIGGER trg_1;
48041 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48042 f_int2 = CAST(f_char1 AS SIGNED INT),
48043 f_charbig = 'just inserted'
48044    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48045 DELETE FROM t0_aux
48046 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48047 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48048 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48049 'just inserted' FROM t0_template
48050 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48051 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
48052 BEGIN
48053 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48054 f_charbig = 'updated by trigger'
48055       WHERE f_int1 = new.f_int1;
48056 END|
48057 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
48058 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48059         
48060 # check trigger-3 success:      1
48061 DROP TRIGGER trg_1;
48062 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48063 f_int2 = CAST(f_char1 AS SIGNED INT),
48064 f_charbig = 'just inserted'
48065    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48066 DELETE FROM t0_aux
48067 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48068 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48069 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48070 'just inserted' FROM t0_template
48071 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48072 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
48073 BEGIN
48074 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48075 f_charbig = 'updated by trigger'
48076       WHERE f_int1 = - old.f_int1;
48077 END|
48078 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
48079 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48080         
48081 # check trigger-4 success:      1
48082 DROP TRIGGER trg_1;
48083 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48084 f_int2 = CAST(f_char1 AS SIGNED INT),
48085 f_charbig = 'just inserted'
48086    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48087 DELETE FROM t0_aux
48088 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48089 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48090 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48091 'just inserted' FROM t0_template
48092 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48093 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
48094 BEGIN
48095 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48096 f_charbig = 'updated by trigger'
48097       WHERE f_int1 = new.f_int1;
48098 END|
48099 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
48100 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48101         
48102 # check trigger-5 success:      1
48103 DROP TRIGGER trg_1;
48104 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48105 f_int2 = CAST(f_char1 AS SIGNED INT),
48106 f_charbig = 'just inserted'
48107    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48108 DELETE FROM t0_aux
48109 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48110 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48111 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48112 'just inserted' FROM t0_template
48113 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48114 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
48115 BEGIN
48116 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48117 f_charbig = 'updated by trigger'
48118       WHERE f_int1 = - old.f_int1;
48119 END|
48120 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
48121 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48122         
48123 # check trigger-6 success:      1
48124 DROP TRIGGER trg_1;
48125 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48126 f_int2 = CAST(f_char1 AS SIGNED INT),
48127 f_charbig = 'just inserted'
48128    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48129 DELETE FROM t0_aux
48130 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48131 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48132 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48133 'just inserted' FROM t0_template
48134 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48135 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
48136 BEGIN
48137 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48138 f_charbig = 'updated by trigger'
48139       WHERE f_int1 = - old.f_int1;
48140 END|
48141 DELETE FROM t0_aux
48142 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48143         
48144 # check trigger-7 success:      1
48145 DROP TRIGGER trg_1;
48146 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48147 f_int2 = CAST(f_char1 AS SIGNED INT),
48148 f_charbig = 'just inserted'
48149    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48150 DELETE FROM t0_aux
48151 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48152 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48153 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48154 'just inserted' FROM t0_template
48155 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48156 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
48157 BEGIN
48158 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48159 f_charbig = 'updated by trigger'
48160       WHERE f_int1 = - old.f_int1;
48161 END|
48162 DELETE FROM t0_aux
48163 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48164         
48165 # check trigger-8 success:      1
48166 DROP TRIGGER trg_1;
48167 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48168 f_int2 = CAST(f_char1 AS SIGNED INT),
48169 f_charbig = 'just inserted'
48170    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48171 DELETE FROM t0_aux
48172 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48173 DELETE FROM t1
48174 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48175 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
48176 BEGIN
48177 SET new.f_int1 = old.f_int1 + @max_row,
48178 new.f_int2 = old.f_int2 - @max_row,
48179 new.f_charbig = '####updated per update trigger####';
48180 END|
48181 UPDATE t1
48182 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
48183 f_charbig = '####updated per update statement itself####';
48184         
48185 # check trigger-9 success:      1
48186 DROP TRIGGER trg_2;
48187 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48188 f_int2 = CAST(f_char1 AS SIGNED INT),
48189 f_charbig = CONCAT('===',f_char1,'===');
48190 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
48191 BEGIN
48192 SET new.f_int1 = new.f_int1 + @max_row,
48193 new.f_int2 = new.f_int2 - @max_row,
48194 new.f_charbig = '####updated per update trigger####';
48195 END|
48196 UPDATE t1
48197 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
48198 f_charbig = '####updated per update statement itself####';
48199         
48200 # check trigger-10 success:     1
48201 DROP TRIGGER trg_2;
48202 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48203 f_int2 = CAST(f_char1 AS SIGNED INT),
48204 f_charbig = CONCAT('===',f_char1,'===');
48205 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
48206 BEGIN
48207 SET new.f_int1 = @my_max1 + @counter,
48208 new.f_int2 = @my_min2 - @counter,
48209 new.f_charbig = '####updated per insert trigger####';
48210 SET @counter = @counter + 1;
48211 END|
48212 SET @counter = 1;
48213 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
48214 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48215 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
48216 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
48217 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
48218 ORDER BY f_int1;
48219 DROP TRIGGER trg_3;
48220         
48221 # check trigger-11 success:     1
48222 DELETE FROM t1
48223 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
48224 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
48225 AND f_charbig = '####updated per insert trigger####';
48226 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
48227 BEGIN
48228 SET new.f_int1 = @my_max1 + @counter,
48229 new.f_int2 = @my_min2 - @counter,
48230 new.f_charbig = '####updated per insert trigger####';
48231 SET @counter = @counter + 1;
48232 END|
48233 SET @counter = 1;
48234 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
48235 INSERT INTO t1 (f_char1, f_char2, f_charbig)
48236 SELECT CAST(f_int1 AS CHAR),
48237 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
48238 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
48239 ORDER BY f_int1;
48240 DROP TRIGGER trg_3;
48241         
48242 # check trigger-12 success:     1
48243 DELETE FROM t1
48244 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
48245 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
48246 AND f_charbig = '####updated per insert trigger####';
48247 ANALYZE  TABLE t1;
48248 Table   Op      Msg_type        Msg_text
48249 test.t1 analyze status  OK
48250 CHECK    TABLE t1 EXTENDED;
48251 Table   Op      Msg_type        Msg_text
48252 test.t1 check   status  OK
48253 CHECKSUM TABLE t1 EXTENDED;
48254 Table   Checksum
48255 test.t1 <some_value>
48256 OPTIMIZE TABLE t1;
48257 Table   Op      Msg_type        Msg_text
48258 test.t1 optimize        status  OK
48259 # check layout success:    1
48260 REPAIR   TABLE t1 EXTENDED;
48261 Table   Op      Msg_type        Msg_text
48262 test.t1 repair  status  OK
48263 # check layout success:    1
48264 TRUNCATE t1;
48265         
48266 # check TRUNCATE success:       1
48267 # check layout success:    1
48268 # End usability test (inc/partition_check.inc)
48269 DROP TABLE t1;
48270 CREATE TABLE t1 (
48271 f_int1 INTEGER,
48272 f_int2 INTEGER,
48273 f_char1 CHAR(20),
48274 f_char2 CHAR(20),
48275 f_charbig VARCHAR(1000)
48278 PARTITION BY RANGE(f_int1)
48279 (PARTITION parta VALUES LESS THAN (0),
48280 PARTITION part_1 VALUES LESS THAN (5),
48281 PARTITION part_2 VALUES LESS THAN (10),
48282 PARTITION part_3 VALUES LESS THAN (10 + 5),
48283 PARTITION part_4 VALUES LESS THAN (20),
48284 PARTITION part_5 VALUES LESS THAN (2147483646));
48285 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
48286 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
48287 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
48288 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
48289 Table   Op      Msg_type        Msg_text
48290 test.t1 optimize        error   Error in list of partitions to test.t1
48291 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
48292 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
48293 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
48294 # Start usability test (inc/partition_check.inc)
48295 create_command
48296 SHOW CREATE TABLE t1;
48297 Table   Create Table
48298 t1      CREATE TABLE `t1` (
48299   `f_int1` int(11) DEFAULT NULL,
48300   `f_int2` int(11) DEFAULT NULL,
48301   `f_char1` char(20) DEFAULT NULL,
48302   `f_char2` char(20) DEFAULT NULL,
48303   `f_charbig` varchar(1000) DEFAULT NULL
48304 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
48305 /*!50100 PARTITION BY RANGE (f_int1)
48306 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
48307  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
48308  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
48309  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
48310  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
48311  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
48313 unified filelist
48314 t1#P#part_1.MYD
48315 t1#P#part_1.MYI
48316 t1#P#part_2.MYD
48317 t1#P#part_2.MYI
48318 t1#P#part_3.MYD
48319 t1#P#part_3.MYI
48320 t1#P#part_4.MYD
48321 t1#P#part_4.MYI
48322 t1#P#part_5.MYD
48323 t1#P#part_5.MYI
48324 t1#P#parta.MYD
48325 t1#P#parta.MYI
48326 t1.frm
48327 t1.par
48329 # check prerequisites-1 success:    1
48330 # check COUNT(*) success:    1
48331 # check MIN/MAX(f_int1) success:    1
48332 # check MIN/MAX(f_int2) success:    1
48333 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48334 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
48335 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
48336 WHERE f_int1 IN (2,3);
48337 # check prerequisites-3 success:    1
48338 DELETE FROM t1 WHERE f_charbig = 'delete me';
48339 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
48340 # check read via f_int1 success: 1
48341 # check read via f_int2 success: 1
48342         
48343 # check multiple-1 success:     1
48344 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
48345         
48346 # check multiple-2 success:     1
48347 INSERT INTO t1 SELECT * FROM t0_template
48348 WHERE MOD(f_int1,3) = 0;
48349         
48350 # check multiple-3 success:     1
48351 UPDATE t1 SET f_int1 = f_int1 + @max_row
48352 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
48353 AND @max_row_div2 + @max_row_div4;
48354         
48355 # check multiple-4 success:     1
48356 DELETE FROM t1
48357 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
48358 AND @max_row_div2 + @max_row_div4 + @max_row;
48359         
48360 # check multiple-5 success:     1
48361 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
48362 INSERT INTO t1
48363 SET f_int1 = @cur_value , f_int2 = @cur_value,
48364 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
48365 f_charbig = '#SINGLE#';
48366         
48367 # check single-1 success:       1
48368 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
48369 INSERT INTO t1
48370 SET f_int1 = @cur_value , f_int2 = @cur_value,
48371 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
48372 f_charbig = '#SINGLE#';
48373         
48374 # check single-2 success:       1
48375 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
48376 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
48377 UPDATE t1 SET f_int1 = @cur_value2
48378 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
48379         
48380 # check single-3 success:       1
48381 SET @cur_value1= -1;
48382 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
48383 UPDATE t1 SET f_int1 = @cur_value1
48384 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
48385         
48386 # check single-4 success:       1
48387 SELECT MAX(f_int1) INTO @cur_value FROM t1;
48388 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
48389         
48390 # check single-5 success:       1
48391 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
48392         
48393 # check single-6 success:       1
48394 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
48395 ERROR HY000: Table has no partition for value 2147483647
48396 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
48397 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
48398 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
48399 f_charbig = '#NULL#';
48400 INSERT INTO t1
48401 SET f_int1 = NULL , f_int2 = -@max_row,
48402 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
48403 f_charbig = '#NULL#';
48404 # check null success:    1
48405         
48406 # check null-1 success:         1
48407 UPDATE t1 SET f_int1 = -@max_row
48408 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
48409 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
48410         
48411 # check null-2 success:         1
48412 UPDATE t1 SET f_int1 = NULL
48413 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
48414 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
48415         
48416 # check null-3 success:         1
48417 DELETE FROM t1
48418 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
48419 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
48420         
48421 # check null-4 success:         1
48422 DELETE FROM t1
48423 WHERE f_int1 = 0 AND f_int2 = 0
48424 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
48425 AND f_charbig = '#NULL#';
48426 SET AUTOCOMMIT= 0;
48427 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48428 SELECT f_int1, f_int1, '', '', 'was inserted'
48429 FROM t0_template source_tab
48430 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
48431         
48432 # check transactions-1 success:         1
48433 COMMIT WORK;
48434         
48435 # check transactions-2 success:         1
48436 ROLLBACK WORK;
48437         
48438 # check transactions-3 success:         1
48439 DELETE FROM t1 WHERE f_charbig = 'was inserted';
48440 COMMIT WORK;
48441 ROLLBACK WORK;
48442         
48443 # check transactions-4 success:         1
48444 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48445 SELECT f_int1, f_int1, '', '', 'was inserted'
48446 FROM t0_template source_tab
48447 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
48448         
48449 # check transactions-5 success:         1
48450 ROLLBACK WORK;
48451 Warnings:
48452 Warning 1196    Some non-transactional changed tables couldn't be rolled back
48453         
48454 # check transactions-6 success:         1
48455 # INFO: Storage engine used for t1 seems to be not transactional.
48456 COMMIT;
48457         
48458 # check transactions-7 success:         1
48459 DELETE FROM t1 WHERE f_charbig = 'was inserted';
48460 COMMIT WORK;
48461 SET @@session.sql_mode = 'traditional';
48462 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
48463 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48464 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
48465 '', '', 'was inserted' FROM t0_template
48466 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
48467 ERROR 22012: Division by 0
48468 COMMIT;
48469         
48470 # check transactions-8 success:         1
48471 # INFO: Storage engine used for t1 seems to be unable to revert
48472 #       changes made by the failing statement.
48473 SET @@session.sql_mode = '';
48474 SET AUTOCOMMIT= 1;
48475 DELETE FROM t1 WHERE f_charbig = 'was inserted';
48476 COMMIT WORK;
48477 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
48478         
48479 # check special-1 success:      1
48480 UPDATE t1 SET f_charbig = '';
48481         
48482 # check special-2 success:      1
48483 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
48484 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
48485 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
48486 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48487 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48488 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48489 'just inserted' FROM t0_template
48490 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48491 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
48492 BEGIN
48493 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48494 f_charbig = 'updated by trigger'
48495       WHERE f_int1 = new.f_int1;
48496 END|
48497 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48498 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
48499 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48500         
48501 # check trigger-1 success:      1
48502 DROP TRIGGER trg_1;
48503 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48504 f_int2 = CAST(f_char1 AS SIGNED INT),
48505 f_charbig = 'just inserted'
48506    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48507 DELETE FROM t0_aux
48508 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48509 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48510 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48511 'just inserted' FROM t0_template
48512 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48513 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
48514 BEGIN
48515 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48516 f_charbig = 'updated by trigger'
48517       WHERE f_int1 = new.f_int1;
48518 END|
48519 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48520 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
48521 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48522         
48523 # check trigger-2 success:      1
48524 DROP TRIGGER trg_1;
48525 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48526 f_int2 = CAST(f_char1 AS SIGNED INT),
48527 f_charbig = 'just inserted'
48528    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48529 DELETE FROM t0_aux
48530 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48531 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48532 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48533 'just inserted' FROM t0_template
48534 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48535 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
48536 BEGIN
48537 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48538 f_charbig = 'updated by trigger'
48539       WHERE f_int1 = new.f_int1;
48540 END|
48541 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
48542 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48543         
48544 # check trigger-3 success:      1
48545 DROP TRIGGER trg_1;
48546 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48547 f_int2 = CAST(f_char1 AS SIGNED INT),
48548 f_charbig = 'just inserted'
48549    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48550 DELETE FROM t0_aux
48551 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48552 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48553 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48554 'just inserted' FROM t0_template
48555 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48556 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
48557 BEGIN
48558 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48559 f_charbig = 'updated by trigger'
48560       WHERE f_int1 = - old.f_int1;
48561 END|
48562 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
48563 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48564         
48565 # check trigger-4 success:      1
48566 DROP TRIGGER trg_1;
48567 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48568 f_int2 = CAST(f_char1 AS SIGNED INT),
48569 f_charbig = 'just inserted'
48570    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48571 DELETE FROM t0_aux
48572 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48573 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48574 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48575 'just inserted' FROM t0_template
48576 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48577 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
48578 BEGIN
48579 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48580 f_charbig = 'updated by trigger'
48581       WHERE f_int1 = new.f_int1;
48582 END|
48583 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
48584 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48585         
48586 # check trigger-5 success:      1
48587 DROP TRIGGER trg_1;
48588 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48589 f_int2 = CAST(f_char1 AS SIGNED INT),
48590 f_charbig = 'just inserted'
48591    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48592 DELETE FROM t0_aux
48593 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48594 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48595 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48596 'just inserted' FROM t0_template
48597 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48598 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
48599 BEGIN
48600 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48601 f_charbig = 'updated by trigger'
48602       WHERE f_int1 = - old.f_int1;
48603 END|
48604 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
48605 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48606         
48607 # check trigger-6 success:      1
48608 DROP TRIGGER trg_1;
48609 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48610 f_int2 = CAST(f_char1 AS SIGNED INT),
48611 f_charbig = 'just inserted'
48612    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48613 DELETE FROM t0_aux
48614 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48615 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48616 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48617 'just inserted' FROM t0_template
48618 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48619 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
48620 BEGIN
48621 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48622 f_charbig = 'updated by trigger'
48623       WHERE f_int1 = - old.f_int1;
48624 END|
48625 DELETE FROM t0_aux
48626 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48627         
48628 # check trigger-7 success:      1
48629 DROP TRIGGER trg_1;
48630 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48631 f_int2 = CAST(f_char1 AS SIGNED INT),
48632 f_charbig = 'just inserted'
48633    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48634 DELETE FROM t0_aux
48635 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48636 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48637 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48638 'just inserted' FROM t0_template
48639 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48640 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
48641 BEGIN
48642 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48643 f_charbig = 'updated by trigger'
48644       WHERE f_int1 = - old.f_int1;
48645 END|
48646 DELETE FROM t0_aux
48647 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48648         
48649 # check trigger-8 success:      1
48650 DROP TRIGGER trg_1;
48651 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48652 f_int2 = CAST(f_char1 AS SIGNED INT),
48653 f_charbig = 'just inserted'
48654    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48655 DELETE FROM t0_aux
48656 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48657 DELETE FROM t1
48658 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48659 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
48660 BEGIN
48661 SET new.f_int1 = old.f_int1 + @max_row,
48662 new.f_int2 = old.f_int2 - @max_row,
48663 new.f_charbig = '####updated per update trigger####';
48664 END|
48665 UPDATE t1
48666 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
48667 f_charbig = '####updated per update statement itself####';
48668         
48669 # check trigger-9 success:      1
48670 DROP TRIGGER trg_2;
48671 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48672 f_int2 = CAST(f_char1 AS SIGNED INT),
48673 f_charbig = CONCAT('===',f_char1,'===');
48674 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
48675 BEGIN
48676 SET new.f_int1 = new.f_int1 + @max_row,
48677 new.f_int2 = new.f_int2 - @max_row,
48678 new.f_charbig = '####updated per update trigger####';
48679 END|
48680 UPDATE t1
48681 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
48682 f_charbig = '####updated per update statement itself####';
48683         
48684 # check trigger-10 success:     1
48685 DROP TRIGGER trg_2;
48686 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48687 f_int2 = CAST(f_char1 AS SIGNED INT),
48688 f_charbig = CONCAT('===',f_char1,'===');
48689 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
48690 BEGIN
48691 SET new.f_int1 = @my_max1 + @counter,
48692 new.f_int2 = @my_min2 - @counter,
48693 new.f_charbig = '####updated per insert trigger####';
48694 SET @counter = @counter + 1;
48695 END|
48696 SET @counter = 1;
48697 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
48698 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48699 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
48700 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
48701 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
48702 ORDER BY f_int1;
48703 DROP TRIGGER trg_3;
48704         
48705 # check trigger-11 success:     1
48706 DELETE FROM t1
48707 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
48708 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
48709 AND f_charbig = '####updated per insert trigger####';
48710 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
48711 BEGIN
48712 SET new.f_int1 = @my_max1 + @counter,
48713 new.f_int2 = @my_min2 - @counter,
48714 new.f_charbig = '####updated per insert trigger####';
48715 SET @counter = @counter + 1;
48716 END|
48717 SET @counter = 1;
48718 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
48719 INSERT INTO t1 (f_char1, f_char2, f_charbig)
48720 SELECT CAST(f_int1 AS CHAR),
48721 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
48722 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
48723 ORDER BY f_int1;
48724 DROP TRIGGER trg_3;
48725         
48726 # check trigger-12 success:     1
48727 DELETE FROM t1
48728 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
48729 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
48730 AND f_charbig = '####updated per insert trigger####';
48731 ANALYZE  TABLE t1;
48732 Table   Op      Msg_type        Msg_text
48733 test.t1 analyze status  OK
48734 CHECK    TABLE t1 EXTENDED;
48735 Table   Op      Msg_type        Msg_text
48736 test.t1 check   status  OK
48737 CHECKSUM TABLE t1 EXTENDED;
48738 Table   Checksum
48739 test.t1 <some_value>
48740 OPTIMIZE TABLE t1;
48741 Table   Op      Msg_type        Msg_text
48742 test.t1 optimize        status  OK
48743 # check layout success:    1
48744 REPAIR   TABLE t1 EXTENDED;
48745 Table   Op      Msg_type        Msg_text
48746 test.t1 repair  status  OK
48747 # check layout success:    1
48748 TRUNCATE t1;
48749         
48750 # check TRUNCATE success:       1
48751 # check layout success:    1
48752 # End usability test (inc/partition_check.inc)
48753 DROP TABLE t1;
48754 CREATE TABLE t1 (
48755 f_int1 INTEGER,
48756 f_int2 INTEGER,
48757 f_char1 CHAR(20),
48758 f_char2 CHAR(20),
48759 f_charbig VARCHAR(1000)
48762 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
48763 (PARTITION part_1 VALUES LESS THAN (0),
48764 PARTITION part_2 VALUES LESS THAN (5),
48765 PARTITION part_3 VALUES LESS THAN (10),
48766 PARTITION part_4 VALUES LESS THAN (2147483646));
48767 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
48768 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
48769 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
48770 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
48771 Table   Op      Msg_type        Msg_text
48772 test.t1 optimize        error   Error in list of partitions to test.t1
48773 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
48774 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
48775 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
48776 # Start usability test (inc/partition_check.inc)
48777 create_command
48778 SHOW CREATE TABLE t1;
48779 Table   Create Table
48780 t1      CREATE TABLE `t1` (
48781   `f_int1` int(11) DEFAULT NULL,
48782   `f_int2` int(11) DEFAULT NULL,
48783   `f_char1` char(20) DEFAULT NULL,
48784   `f_char2` char(20) DEFAULT NULL,
48785   `f_charbig` varchar(1000) DEFAULT NULL
48786 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
48787 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
48788 SUBPARTITION BY HASH (f_int1)
48789 SUBPARTITIONS 2
48790 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
48791  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
48792  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
48793  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
48795 unified filelist
48796 t1#P#part_1#SP#part_1sp0.MYD
48797 t1#P#part_1#SP#part_1sp0.MYI
48798 t1#P#part_1#SP#part_1sp1.MYD
48799 t1#P#part_1#SP#part_1sp1.MYI
48800 t1#P#part_2#SP#part_2sp0.MYD
48801 t1#P#part_2#SP#part_2sp0.MYI
48802 t1#P#part_2#SP#part_2sp1.MYD
48803 t1#P#part_2#SP#part_2sp1.MYI
48804 t1#P#part_3#SP#part_3sp0.MYD
48805 t1#P#part_3#SP#part_3sp0.MYI
48806 t1#P#part_3#SP#part_3sp1.MYD
48807 t1#P#part_3#SP#part_3sp1.MYI
48808 t1#P#part_4#SP#part_4sp0.MYD
48809 t1#P#part_4#SP#part_4sp0.MYI
48810 t1#P#part_4#SP#part_4sp1.MYD
48811 t1#P#part_4#SP#part_4sp1.MYI
48812 t1.frm
48813 t1.par
48815 # check prerequisites-1 success:    1
48816 # check COUNT(*) success:    1
48817 # check MIN/MAX(f_int1) success:    1
48818 # check MIN/MAX(f_int2) success:    1
48819 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48820 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
48821 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
48822 WHERE f_int1 IN (2,3);
48823 # check prerequisites-3 success:    1
48824 DELETE FROM t1 WHERE f_charbig = 'delete me';
48825 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
48826 # check read via f_int1 success: 1
48827 # check read via f_int2 success: 1
48828         
48829 # check multiple-1 success:     1
48830 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
48831         
48832 # check multiple-2 success:     1
48833 INSERT INTO t1 SELECT * FROM t0_template
48834 WHERE MOD(f_int1,3) = 0;
48835         
48836 # check multiple-3 success:     1
48837 UPDATE t1 SET f_int1 = f_int1 + @max_row
48838 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
48839 AND @max_row_div2 + @max_row_div4;
48840         
48841 # check multiple-4 success:     1
48842 DELETE FROM t1
48843 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
48844 AND @max_row_div2 + @max_row_div4 + @max_row;
48845         
48846 # check multiple-5 success:     1
48847 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
48848 INSERT INTO t1
48849 SET f_int1 = @cur_value , f_int2 = @cur_value,
48850 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
48851 f_charbig = '#SINGLE#';
48852         
48853 # check single-1 success:       1
48854 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
48855 INSERT INTO t1
48856 SET f_int1 = @cur_value , f_int2 = @cur_value,
48857 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
48858 f_charbig = '#SINGLE#';
48859         
48860 # check single-2 success:       1
48861 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
48862 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
48863 UPDATE t1 SET f_int1 = @cur_value2
48864 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
48865         
48866 # check single-3 success:       1
48867 SET @cur_value1= -1;
48868 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
48869 UPDATE t1 SET f_int1 = @cur_value1
48870 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
48871         
48872 # check single-4 success:       1
48873 SELECT MAX(f_int1) INTO @cur_value FROM t1;
48874 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
48875         
48876 # check single-5 success:       1
48877 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
48878         
48879 # check single-6 success:       1
48880 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
48881         
48882 # check single-7 success:       1
48883 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
48884 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
48885 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
48886 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
48887 f_charbig = '#NULL#';
48888 INSERT INTO t1
48889 SET f_int1 = NULL , f_int2 = -@max_row,
48890 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
48891 f_charbig = '#NULL#';
48892 # check null success:    1
48893         
48894 # check null-1 success:         1
48895 UPDATE t1 SET f_int1 = -@max_row
48896 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
48897 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
48898         
48899 # check null-2 success:         1
48900 UPDATE t1 SET f_int1 = NULL
48901 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
48902 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
48903         
48904 # check null-3 success:         1
48905 DELETE FROM t1
48906 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
48907 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
48908         
48909 # check null-4 success:         1
48910 DELETE FROM t1
48911 WHERE f_int1 = 0 AND f_int2 = 0
48912 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
48913 AND f_charbig = '#NULL#';
48914 SET AUTOCOMMIT= 0;
48915 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48916 SELECT f_int1, f_int1, '', '', 'was inserted'
48917 FROM t0_template source_tab
48918 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
48919         
48920 # check transactions-1 success:         1
48921 COMMIT WORK;
48922         
48923 # check transactions-2 success:         1
48924 ROLLBACK WORK;
48925         
48926 # check transactions-3 success:         1
48927 DELETE FROM t1 WHERE f_charbig = 'was inserted';
48928 COMMIT WORK;
48929 ROLLBACK WORK;
48930         
48931 # check transactions-4 success:         1
48932 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48933 SELECT f_int1, f_int1, '', '', 'was inserted'
48934 FROM t0_template source_tab
48935 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
48936         
48937 # check transactions-5 success:         1
48938 ROLLBACK WORK;
48939 Warnings:
48940 Warning 1196    Some non-transactional changed tables couldn't be rolled back
48941         
48942 # check transactions-6 success:         1
48943 # INFO: Storage engine used for t1 seems to be not transactional.
48944 COMMIT;
48945         
48946 # check transactions-7 success:         1
48947 DELETE FROM t1 WHERE f_charbig = 'was inserted';
48948 COMMIT WORK;
48949 SET @@session.sql_mode = 'traditional';
48950 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
48951 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48952 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
48953 '', '', 'was inserted' FROM t0_template
48954 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
48955 ERROR 22012: Division by 0
48956 COMMIT;
48957         
48958 # check transactions-8 success:         1
48959 # INFO: Storage engine used for t1 seems to be unable to revert
48960 #       changes made by the failing statement.
48961 SET @@session.sql_mode = '';
48962 SET AUTOCOMMIT= 1;
48963 DELETE FROM t1 WHERE f_charbig = 'was inserted';
48964 COMMIT WORK;
48965 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
48966         
48967 # check special-1 success:      1
48968 UPDATE t1 SET f_charbig = '';
48969         
48970 # check special-2 success:      1
48971 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
48972 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
48973 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
48974 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48975 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48976 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48977 'just inserted' FROM t0_template
48978 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48979 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
48980 BEGIN
48981 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48982 f_charbig = 'updated by trigger'
48983       WHERE f_int1 = new.f_int1;
48984 END|
48985 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48986 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
48987 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48988         
48989 # check trigger-1 success:      1
48990 DROP TRIGGER trg_1;
48991 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48992 f_int2 = CAST(f_char1 AS SIGNED INT),
48993 f_charbig = 'just inserted'
48994    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48995 DELETE FROM t0_aux
48996 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48997 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48998 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48999 'just inserted' FROM t0_template
49000 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49001 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
49002 BEGIN
49003 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49004 f_charbig = 'updated by trigger'
49005       WHERE f_int1 = new.f_int1;
49006 END|
49007 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49008 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
49009 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49010         
49011 # check trigger-2 success:      1
49012 DROP TRIGGER trg_1;
49013 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49014 f_int2 = CAST(f_char1 AS SIGNED INT),
49015 f_charbig = 'just inserted'
49016    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49017 DELETE FROM t0_aux
49018 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49019 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49020 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49021 'just inserted' FROM t0_template
49022 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49023 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
49024 BEGIN
49025 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49026 f_charbig = 'updated by trigger'
49027       WHERE f_int1 = new.f_int1;
49028 END|
49029 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
49030 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49031         
49032 # check trigger-3 success:      1
49033 DROP TRIGGER trg_1;
49034 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49035 f_int2 = CAST(f_char1 AS SIGNED INT),
49036 f_charbig = 'just inserted'
49037    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49038 DELETE FROM t0_aux
49039 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49040 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49041 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49042 'just inserted' FROM t0_template
49043 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49044 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
49045 BEGIN
49046 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49047 f_charbig = 'updated by trigger'
49048       WHERE f_int1 = - old.f_int1;
49049 END|
49050 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
49051 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49052         
49053 # check trigger-4 success:      1
49054 DROP TRIGGER trg_1;
49055 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49056 f_int2 = CAST(f_char1 AS SIGNED INT),
49057 f_charbig = 'just inserted'
49058    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49059 DELETE FROM t0_aux
49060 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49061 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49062 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49063 'just inserted' FROM t0_template
49064 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49065 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
49066 BEGIN
49067 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49068 f_charbig = 'updated by trigger'
49069       WHERE f_int1 = new.f_int1;
49070 END|
49071 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
49072 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49073         
49074 # check trigger-5 success:      1
49075 DROP TRIGGER trg_1;
49076 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49077 f_int2 = CAST(f_char1 AS SIGNED INT),
49078 f_charbig = 'just inserted'
49079    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49080 DELETE FROM t0_aux
49081 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49082 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49083 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49084 'just inserted' FROM t0_template
49085 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49086 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
49087 BEGIN
49088 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49089 f_charbig = 'updated by trigger'
49090       WHERE f_int1 = - old.f_int1;
49091 END|
49092 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
49093 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49094         
49095 # check trigger-6 success:      1
49096 DROP TRIGGER trg_1;
49097 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49098 f_int2 = CAST(f_char1 AS SIGNED INT),
49099 f_charbig = 'just inserted'
49100    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49101 DELETE FROM t0_aux
49102 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49103 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49104 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49105 'just inserted' FROM t0_template
49106 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49107 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
49108 BEGIN
49109 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49110 f_charbig = 'updated by trigger'
49111       WHERE f_int1 = - old.f_int1;
49112 END|
49113 DELETE FROM t0_aux
49114 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49115         
49116 # check trigger-7 success:      1
49117 DROP TRIGGER trg_1;
49118 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49119 f_int2 = CAST(f_char1 AS SIGNED INT),
49120 f_charbig = 'just inserted'
49121    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49122 DELETE FROM t0_aux
49123 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49124 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49125 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49126 'just inserted' FROM t0_template
49127 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49128 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
49129 BEGIN
49130 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49131 f_charbig = 'updated by trigger'
49132       WHERE f_int1 = - old.f_int1;
49133 END|
49134 DELETE FROM t0_aux
49135 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49136         
49137 # check trigger-8 success:      1
49138 DROP TRIGGER trg_1;
49139 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49140 f_int2 = CAST(f_char1 AS SIGNED INT),
49141 f_charbig = 'just inserted'
49142    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49143 DELETE FROM t0_aux
49144 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49145 DELETE FROM t1
49146 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49147 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
49148 BEGIN
49149 SET new.f_int1 = old.f_int1 + @max_row,
49150 new.f_int2 = old.f_int2 - @max_row,
49151 new.f_charbig = '####updated per update trigger####';
49152 END|
49153 UPDATE t1
49154 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
49155 f_charbig = '####updated per update statement itself####';
49156         
49157 # check trigger-9 success:      1
49158 DROP TRIGGER trg_2;
49159 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49160 f_int2 = CAST(f_char1 AS SIGNED INT),
49161 f_charbig = CONCAT('===',f_char1,'===');
49162 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
49163 BEGIN
49164 SET new.f_int1 = new.f_int1 + @max_row,
49165 new.f_int2 = new.f_int2 - @max_row,
49166 new.f_charbig = '####updated per update trigger####';
49167 END|
49168 UPDATE t1
49169 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
49170 f_charbig = '####updated per update statement itself####';
49171         
49172 # check trigger-10 success:     1
49173 DROP TRIGGER trg_2;
49174 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49175 f_int2 = CAST(f_char1 AS SIGNED INT),
49176 f_charbig = CONCAT('===',f_char1,'===');
49177 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
49178 BEGIN
49179 SET new.f_int1 = @my_max1 + @counter,
49180 new.f_int2 = @my_min2 - @counter,
49181 new.f_charbig = '####updated per insert trigger####';
49182 SET @counter = @counter + 1;
49183 END|
49184 SET @counter = 1;
49185 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
49186 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49187 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
49188 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
49189 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
49190 ORDER BY f_int1;
49191 DROP TRIGGER trg_3;
49192         
49193 # check trigger-11 success:     1
49194 DELETE FROM t1
49195 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
49196 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
49197 AND f_charbig = '####updated per insert trigger####';
49198 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
49199 BEGIN
49200 SET new.f_int1 = @my_max1 + @counter,
49201 new.f_int2 = @my_min2 - @counter,
49202 new.f_charbig = '####updated per insert trigger####';
49203 SET @counter = @counter + 1;
49204 END|
49205 SET @counter = 1;
49206 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
49207 INSERT INTO t1 (f_char1, f_char2, f_charbig)
49208 SELECT CAST(f_int1 AS CHAR),
49209 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
49210 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
49211 ORDER BY f_int1;
49212 DROP TRIGGER trg_3;
49213         
49214 # check trigger-12 success:     1
49215 DELETE FROM t1
49216 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
49217 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
49218 AND f_charbig = '####updated per insert trigger####';
49219 ANALYZE  TABLE t1;
49220 Table   Op      Msg_type        Msg_text
49221 test.t1 analyze status  OK
49222 CHECK    TABLE t1 EXTENDED;
49223 Table   Op      Msg_type        Msg_text
49224 test.t1 check   status  OK
49225 CHECKSUM TABLE t1 EXTENDED;
49226 Table   Checksum
49227 test.t1 <some_value>
49228 OPTIMIZE TABLE t1;
49229 Table   Op      Msg_type        Msg_text
49230 test.t1 optimize        status  OK
49231 # check layout success:    1
49232 REPAIR   TABLE t1 EXTENDED;
49233 Table   Op      Msg_type        Msg_text
49234 test.t1 repair  status  OK
49235 # check layout success:    1
49236 TRUNCATE t1;
49237         
49238 # check TRUNCATE success:       1
49239 # check layout success:    1
49240 # End usability test (inc/partition_check.inc)
49241 DROP TABLE t1;
49242 CREATE TABLE t1 (
49243 f_int1 INTEGER,
49244 f_int2 INTEGER,
49245 f_char1 CHAR(20),
49246 f_char2 CHAR(20),
49247 f_charbig VARCHAR(1000)
49250 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
49251 (PARTITION part_1 VALUES LESS THAN (0)
49252 (SUBPARTITION subpart11, SUBPARTITION subpart12),
49253 PARTITION part_2 VALUES LESS THAN (5)
49254 (SUBPARTITION subpart21, SUBPARTITION subpart22),
49255 PARTITION part_3 VALUES LESS THAN (10)
49256 (SUBPARTITION subpart31, SUBPARTITION subpart32),
49257 PARTITION part_4 VALUES LESS THAN (2147483646)
49258 (SUBPARTITION subpart41, SUBPARTITION subpart42));
49259 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
49260 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
49261 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
49262 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
49263 Table   Op      Msg_type        Msg_text
49264 test.t1 optimize        error   Error in list of partitions to test.t1
49265 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
49266 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
49267 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
49268 # Start usability test (inc/partition_check.inc)
49269 create_command
49270 SHOW CREATE TABLE t1;
49271 Table   Create Table
49272 t1      CREATE TABLE `t1` (
49273   `f_int1` int(11) DEFAULT NULL,
49274   `f_int2` int(11) DEFAULT NULL,
49275   `f_char1` char(20) DEFAULT NULL,
49276   `f_char2` char(20) DEFAULT NULL,
49277   `f_charbig` varchar(1000) DEFAULT NULL
49278 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
49279 /*!50100 PARTITION BY RANGE (f_int1)
49280 SUBPARTITION BY KEY (f_int1)
49281 (PARTITION part_1 VALUES LESS THAN (0)
49282  (SUBPARTITION subpart11 ENGINE = MyISAM,
49283   SUBPARTITION subpart12 ENGINE = MyISAM),
49284  PARTITION part_2 VALUES LESS THAN (5)
49285  (SUBPARTITION subpart21 ENGINE = MyISAM,
49286   SUBPARTITION subpart22 ENGINE = MyISAM),
49287  PARTITION part_3 VALUES LESS THAN (10)
49288  (SUBPARTITION subpart31 ENGINE = MyISAM,
49289   SUBPARTITION subpart32 ENGINE = MyISAM),
49290  PARTITION part_4 VALUES LESS THAN (2147483646)
49291  (SUBPARTITION subpart41 ENGINE = MyISAM,
49292   SUBPARTITION subpart42 ENGINE = MyISAM)) */
49294 unified filelist
49295 t1#P#part_1#SP#subpart11.MYD
49296 t1#P#part_1#SP#subpart11.MYI
49297 t1#P#part_1#SP#subpart12.MYD
49298 t1#P#part_1#SP#subpart12.MYI
49299 t1#P#part_2#SP#subpart21.MYD
49300 t1#P#part_2#SP#subpart21.MYI
49301 t1#P#part_2#SP#subpart22.MYD
49302 t1#P#part_2#SP#subpart22.MYI
49303 t1#P#part_3#SP#subpart31.MYD
49304 t1#P#part_3#SP#subpart31.MYI
49305 t1#P#part_3#SP#subpart32.MYD
49306 t1#P#part_3#SP#subpart32.MYI
49307 t1#P#part_4#SP#subpart41.MYD
49308 t1#P#part_4#SP#subpart41.MYI
49309 t1#P#part_4#SP#subpart42.MYD
49310 t1#P#part_4#SP#subpart42.MYI
49311 t1.frm
49312 t1.par
49314 # check prerequisites-1 success:    1
49315 # check COUNT(*) success:    1
49316 # check MIN/MAX(f_int1) success:    1
49317 # check MIN/MAX(f_int2) success:    1
49318 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49319 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
49320 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
49321 WHERE f_int1 IN (2,3);
49322 # check prerequisites-3 success:    1
49323 DELETE FROM t1 WHERE f_charbig = 'delete me';
49324 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
49325 # check read via f_int1 success: 1
49326 # check read via f_int2 success: 1
49327         
49328 # check multiple-1 success:     1
49329 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
49330         
49331 # check multiple-2 success:     1
49332 INSERT INTO t1 SELECT * FROM t0_template
49333 WHERE MOD(f_int1,3) = 0;
49334         
49335 # check multiple-3 success:     1
49336 UPDATE t1 SET f_int1 = f_int1 + @max_row
49337 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
49338 AND @max_row_div2 + @max_row_div4;
49339         
49340 # check multiple-4 success:     1
49341 DELETE FROM t1
49342 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
49343 AND @max_row_div2 + @max_row_div4 + @max_row;
49344         
49345 # check multiple-5 success:     1
49346 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
49347 INSERT INTO t1
49348 SET f_int1 = @cur_value , f_int2 = @cur_value,
49349 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
49350 f_charbig = '#SINGLE#';
49351         
49352 # check single-1 success:       1
49353 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
49354 INSERT INTO t1
49355 SET f_int1 = @cur_value , f_int2 = @cur_value,
49356 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
49357 f_charbig = '#SINGLE#';
49358         
49359 # check single-2 success:       1
49360 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
49361 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
49362 UPDATE t1 SET f_int1 = @cur_value2
49363 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
49364         
49365 # check single-3 success:       1
49366 SET @cur_value1= -1;
49367 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
49368 UPDATE t1 SET f_int1 = @cur_value1
49369 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
49370         
49371 # check single-4 success:       1
49372 SELECT MAX(f_int1) INTO @cur_value FROM t1;
49373 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
49374         
49375 # check single-5 success:       1
49376 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
49377         
49378 # check single-6 success:       1
49379 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
49380 ERROR HY000: Table has no partition for value 2147483647
49381 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
49382 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
49383 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
49384 f_charbig = '#NULL#';
49385 INSERT INTO t1
49386 SET f_int1 = NULL , f_int2 = -@max_row,
49387 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
49388 f_charbig = '#NULL#';
49389 # check null success:    1
49390         
49391 # check null-1 success:         1
49392 UPDATE t1 SET f_int1 = -@max_row
49393 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
49394 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
49395         
49396 # check null-2 success:         1
49397 UPDATE t1 SET f_int1 = NULL
49398 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
49399 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
49400         
49401 # check null-3 success:         1
49402 DELETE FROM t1
49403 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
49404 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
49405         
49406 # check null-4 success:         1
49407 DELETE FROM t1
49408 WHERE f_int1 = 0 AND f_int2 = 0
49409 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
49410 AND f_charbig = '#NULL#';
49411 SET AUTOCOMMIT= 0;
49412 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49413 SELECT f_int1, f_int1, '', '', 'was inserted'
49414 FROM t0_template source_tab
49415 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
49416         
49417 # check transactions-1 success:         1
49418 COMMIT WORK;
49419         
49420 # check transactions-2 success:         1
49421 ROLLBACK WORK;
49422         
49423 # check transactions-3 success:         1
49424 DELETE FROM t1 WHERE f_charbig = 'was inserted';
49425 COMMIT WORK;
49426 ROLLBACK WORK;
49427         
49428 # check transactions-4 success:         1
49429 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49430 SELECT f_int1, f_int1, '', '', 'was inserted'
49431 FROM t0_template source_tab
49432 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
49433         
49434 # check transactions-5 success:         1
49435 ROLLBACK WORK;
49436 Warnings:
49437 Warning 1196    Some non-transactional changed tables couldn't be rolled back
49438         
49439 # check transactions-6 success:         1
49440 # INFO: Storage engine used for t1 seems to be not transactional.
49441 COMMIT;
49442         
49443 # check transactions-7 success:         1
49444 DELETE FROM t1 WHERE f_charbig = 'was inserted';
49445 COMMIT WORK;
49446 SET @@session.sql_mode = 'traditional';
49447 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
49448 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49449 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
49450 '', '', 'was inserted' FROM t0_template
49451 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
49452 ERROR 22012: Division by 0
49453 COMMIT;
49454         
49455 # check transactions-8 success:         1
49456 # INFO: Storage engine used for t1 seems to be unable to revert
49457 #       changes made by the failing statement.
49458 SET @@session.sql_mode = '';
49459 SET AUTOCOMMIT= 1;
49460 DELETE FROM t1 WHERE f_charbig = 'was inserted';
49461 COMMIT WORK;
49462 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
49463         
49464 # check special-1 success:      1
49465 UPDATE t1 SET f_charbig = '';
49466         
49467 # check special-2 success:      1
49468 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
49469 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
49470 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
49471 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49472 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49473 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49474 'just inserted' FROM t0_template
49475 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49476 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
49477 BEGIN
49478 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49479 f_charbig = 'updated by trigger'
49480       WHERE f_int1 = new.f_int1;
49481 END|
49482 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49483 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
49484 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49485         
49486 # check trigger-1 success:      1
49487 DROP TRIGGER trg_1;
49488 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49489 f_int2 = CAST(f_char1 AS SIGNED INT),
49490 f_charbig = 'just inserted'
49491    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49492 DELETE FROM t0_aux
49493 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49494 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49495 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49496 'just inserted' FROM t0_template
49497 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49498 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
49499 BEGIN
49500 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49501 f_charbig = 'updated by trigger'
49502       WHERE f_int1 = new.f_int1;
49503 END|
49504 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49505 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
49506 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49507         
49508 # check trigger-2 success:      1
49509 DROP TRIGGER trg_1;
49510 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49511 f_int2 = CAST(f_char1 AS SIGNED INT),
49512 f_charbig = 'just inserted'
49513    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49514 DELETE FROM t0_aux
49515 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49516 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49517 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49518 'just inserted' FROM t0_template
49519 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49520 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
49521 BEGIN
49522 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49523 f_charbig = 'updated by trigger'
49524       WHERE f_int1 = new.f_int1;
49525 END|
49526 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
49527 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49528         
49529 # check trigger-3 success:      1
49530 DROP TRIGGER trg_1;
49531 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49532 f_int2 = CAST(f_char1 AS SIGNED INT),
49533 f_charbig = 'just inserted'
49534    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49535 DELETE FROM t0_aux
49536 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49537 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49538 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49539 'just inserted' FROM t0_template
49540 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49541 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
49542 BEGIN
49543 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49544 f_charbig = 'updated by trigger'
49545       WHERE f_int1 = - old.f_int1;
49546 END|
49547 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
49548 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49549         
49550 # check trigger-4 success:      1
49551 DROP TRIGGER trg_1;
49552 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49553 f_int2 = CAST(f_char1 AS SIGNED INT),
49554 f_charbig = 'just inserted'
49555    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49556 DELETE FROM t0_aux
49557 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49558 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49559 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49560 'just inserted' FROM t0_template
49561 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49562 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
49563 BEGIN
49564 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49565 f_charbig = 'updated by trigger'
49566       WHERE f_int1 = new.f_int1;
49567 END|
49568 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
49569 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49570         
49571 # check trigger-5 success:      1
49572 DROP TRIGGER trg_1;
49573 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49574 f_int2 = CAST(f_char1 AS SIGNED INT),
49575 f_charbig = 'just inserted'
49576    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49577 DELETE FROM t0_aux
49578 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49579 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49580 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49581 'just inserted' FROM t0_template
49582 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49583 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
49584 BEGIN
49585 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49586 f_charbig = 'updated by trigger'
49587       WHERE f_int1 = - old.f_int1;
49588 END|
49589 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
49590 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49591         
49592 # check trigger-6 success:      1
49593 DROP TRIGGER trg_1;
49594 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49595 f_int2 = CAST(f_char1 AS SIGNED INT),
49596 f_charbig = 'just inserted'
49597    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49598 DELETE FROM t0_aux
49599 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49600 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49601 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49602 'just inserted' FROM t0_template
49603 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49604 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
49605 BEGIN
49606 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49607 f_charbig = 'updated by trigger'
49608       WHERE f_int1 = - old.f_int1;
49609 END|
49610 DELETE FROM t0_aux
49611 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49612         
49613 # check trigger-7 success:      1
49614 DROP TRIGGER trg_1;
49615 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49616 f_int2 = CAST(f_char1 AS SIGNED INT),
49617 f_charbig = 'just inserted'
49618    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49619 DELETE FROM t0_aux
49620 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49621 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49622 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49623 'just inserted' FROM t0_template
49624 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49625 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
49626 BEGIN
49627 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49628 f_charbig = 'updated by trigger'
49629       WHERE f_int1 = - old.f_int1;
49630 END|
49631 DELETE FROM t0_aux
49632 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49633         
49634 # check trigger-8 success:      1
49635 DROP TRIGGER trg_1;
49636 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49637 f_int2 = CAST(f_char1 AS SIGNED INT),
49638 f_charbig = 'just inserted'
49639    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49640 DELETE FROM t0_aux
49641 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49642 DELETE FROM t1
49643 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49644 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
49645 BEGIN
49646 SET new.f_int1 = old.f_int1 + @max_row,
49647 new.f_int2 = old.f_int2 - @max_row,
49648 new.f_charbig = '####updated per update trigger####';
49649 END|
49650 UPDATE t1
49651 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
49652 f_charbig = '####updated per update statement itself####';
49653         
49654 # check trigger-9 success:      1
49655 DROP TRIGGER trg_2;
49656 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49657 f_int2 = CAST(f_char1 AS SIGNED INT),
49658 f_charbig = CONCAT('===',f_char1,'===');
49659 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
49660 BEGIN
49661 SET new.f_int1 = new.f_int1 + @max_row,
49662 new.f_int2 = new.f_int2 - @max_row,
49663 new.f_charbig = '####updated per update trigger####';
49664 END|
49665 UPDATE t1
49666 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
49667 f_charbig = '####updated per update statement itself####';
49668         
49669 # check trigger-10 success:     1
49670 DROP TRIGGER trg_2;
49671 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49672 f_int2 = CAST(f_char1 AS SIGNED INT),
49673 f_charbig = CONCAT('===',f_char1,'===');
49674 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
49675 BEGIN
49676 SET new.f_int1 = @my_max1 + @counter,
49677 new.f_int2 = @my_min2 - @counter,
49678 new.f_charbig = '####updated per insert trigger####';
49679 SET @counter = @counter + 1;
49680 END|
49681 SET @counter = 1;
49682 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
49683 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49684 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
49685 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
49686 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
49687 ORDER BY f_int1;
49688 DROP TRIGGER trg_3;
49689         
49690 # check trigger-11 success:     1
49691 DELETE FROM t1
49692 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
49693 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
49694 AND f_charbig = '####updated per insert trigger####';
49695 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
49696 BEGIN
49697 SET new.f_int1 = @my_max1 + @counter,
49698 new.f_int2 = @my_min2 - @counter,
49699 new.f_charbig = '####updated per insert trigger####';
49700 SET @counter = @counter + 1;
49701 END|
49702 SET @counter = 1;
49703 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
49704 INSERT INTO t1 (f_char1, f_char2, f_charbig)
49705 SELECT CAST(f_int1 AS CHAR),
49706 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
49707 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
49708 ORDER BY f_int1;
49709 DROP TRIGGER trg_3;
49710         
49711 # check trigger-12 success:     1
49712 DELETE FROM t1
49713 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
49714 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
49715 AND f_charbig = '####updated per insert trigger####';
49716 ANALYZE  TABLE t1;
49717 Table   Op      Msg_type        Msg_text
49718 test.t1 analyze status  OK
49719 CHECK    TABLE t1 EXTENDED;
49720 Table   Op      Msg_type        Msg_text
49721 test.t1 check   status  OK
49722 CHECKSUM TABLE t1 EXTENDED;
49723 Table   Checksum
49724 test.t1 <some_value>
49725 OPTIMIZE TABLE t1;
49726 Table   Op      Msg_type        Msg_text
49727 test.t1 optimize        status  OK
49728 # check layout success:    1
49729 REPAIR   TABLE t1 EXTENDED;
49730 Table   Op      Msg_type        Msg_text
49731 test.t1 repair  status  OK
49732 # check layout success:    1
49733 TRUNCATE t1;
49734         
49735 # check TRUNCATE success:       1
49736 # check layout success:    1
49737 # End usability test (inc/partition_check.inc)
49738 DROP TABLE t1;
49739 CREATE TABLE t1 (
49740 f_int1 INTEGER,
49741 f_int2 INTEGER,
49742 f_char1 CHAR(20),
49743 f_char2 CHAR(20),
49744 f_charbig VARCHAR(1000)
49747 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
49748 (PARTITION part_1 VALUES IN (0)
49749 (SUBPARTITION sp11, SUBPARTITION sp12),
49750 PARTITION part_2 VALUES IN (1)
49751 (SUBPARTITION sp21, SUBPARTITION sp22),
49752 PARTITION part_3 VALUES IN (2)
49753 (SUBPARTITION sp31, SUBPARTITION sp32),
49754 PARTITION part_4 VALUES IN (NULL)
49755 (SUBPARTITION sp41, SUBPARTITION sp42));
49756 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
49757 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
49758 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
49759 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
49760 Table   Op      Msg_type        Msg_text
49761 test.t1 optimize        error   Error in list of partitions to test.t1
49762 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
49763 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
49764 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
49765 # Start usability test (inc/partition_check.inc)
49766 create_command
49767 SHOW CREATE TABLE t1;
49768 Table   Create Table
49769 t1      CREATE TABLE `t1` (
49770   `f_int1` int(11) DEFAULT NULL,
49771   `f_int2` int(11) DEFAULT NULL,
49772   `f_char1` char(20) DEFAULT NULL,
49773   `f_char2` char(20) DEFAULT NULL,
49774   `f_charbig` varchar(1000) DEFAULT NULL
49775 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
49776 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
49777 SUBPARTITION BY HASH (f_int1 + 1)
49778 (PARTITION part_1 VALUES IN (0)
49779  (SUBPARTITION sp11 ENGINE = MyISAM,
49780   SUBPARTITION sp12 ENGINE = MyISAM),
49781  PARTITION part_2 VALUES IN (1)
49782  (SUBPARTITION sp21 ENGINE = MyISAM,
49783   SUBPARTITION sp22 ENGINE = MyISAM),
49784  PARTITION part_3 VALUES IN (2)
49785  (SUBPARTITION sp31 ENGINE = MyISAM,
49786   SUBPARTITION sp32 ENGINE = MyISAM),
49787  PARTITION part_4 VALUES IN (NULL)
49788  (SUBPARTITION sp41 ENGINE = MyISAM,
49789   SUBPARTITION sp42 ENGINE = MyISAM)) */
49791 unified filelist
49792 t1#P#part_1#SP#sp11.MYD
49793 t1#P#part_1#SP#sp11.MYI
49794 t1#P#part_1#SP#sp12.MYD
49795 t1#P#part_1#SP#sp12.MYI
49796 t1#P#part_2#SP#sp21.MYD
49797 t1#P#part_2#SP#sp21.MYI
49798 t1#P#part_2#SP#sp22.MYD
49799 t1#P#part_2#SP#sp22.MYI
49800 t1#P#part_3#SP#sp31.MYD
49801 t1#P#part_3#SP#sp31.MYI
49802 t1#P#part_3#SP#sp32.MYD
49803 t1#P#part_3#SP#sp32.MYI
49804 t1#P#part_4#SP#sp41.MYD
49805 t1#P#part_4#SP#sp41.MYI
49806 t1#P#part_4#SP#sp42.MYD
49807 t1#P#part_4#SP#sp42.MYI
49808 t1.frm
49809 t1.par
49811 # check prerequisites-1 success:    1
49812 # check COUNT(*) success:    1
49813 # check MIN/MAX(f_int1) success:    1
49814 # check MIN/MAX(f_int2) success:    1
49815 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49816 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
49817 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
49818 WHERE f_int1 IN (2,3);
49819 # check prerequisites-3 success:    1
49820 DELETE FROM t1 WHERE f_charbig = 'delete me';
49821 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
49822 # check read via f_int1 success: 1
49823 # check read via f_int2 success: 1
49824         
49825 # check multiple-1 success:     1
49826 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
49827         
49828 # check multiple-2 success:     1
49829 INSERT INTO t1 SELECT * FROM t0_template
49830 WHERE MOD(f_int1,3) = 0;
49831         
49832 # check multiple-3 success:     1
49833 UPDATE t1 SET f_int1 = f_int1 + @max_row
49834 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
49835 AND @max_row_div2 + @max_row_div4;
49836         
49837 # check multiple-4 success:     1
49838 DELETE FROM t1
49839 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
49840 AND @max_row_div2 + @max_row_div4 + @max_row;
49841         
49842 # check multiple-5 success:     1
49843 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
49844 INSERT INTO t1
49845 SET f_int1 = @cur_value , f_int2 = @cur_value,
49846 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
49847 f_charbig = '#SINGLE#';
49848         
49849 # check single-1 success:       1
49850 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
49851 INSERT INTO t1
49852 SET f_int1 = @cur_value , f_int2 = @cur_value,
49853 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
49854 f_charbig = '#SINGLE#';
49855         
49856 # check single-2 success:       1
49857 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
49858 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
49859 UPDATE t1 SET f_int1 = @cur_value2
49860 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
49861         
49862 # check single-3 success:       1
49863 SET @cur_value1= -1;
49864 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
49865 UPDATE t1 SET f_int1 = @cur_value1
49866 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
49867         
49868 # check single-4 success:       1
49869 SELECT MAX(f_int1) INTO @cur_value FROM t1;
49870 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
49871         
49872 # check single-5 success:       1
49873 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
49874         
49875 # check single-6 success:       1
49876 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
49877         
49878 # check single-7 success:       1
49879 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
49880 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
49881 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
49882 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
49883 f_charbig = '#NULL#';
49884 INSERT INTO t1
49885 SET f_int1 = NULL , f_int2 = -@max_row,
49886 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
49887 f_charbig = '#NULL#';
49888 # check null success:    1
49889         
49890 # check null-1 success:         1
49891 UPDATE t1 SET f_int1 = -@max_row
49892 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
49893 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
49894         
49895 # check null-2 success:         1
49896 UPDATE t1 SET f_int1 = NULL
49897 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
49898 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
49899         
49900 # check null-3 success:         1
49901 DELETE FROM t1
49902 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
49903 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
49904         
49905 # check null-4 success:         1
49906 DELETE FROM t1
49907 WHERE f_int1 = 0 AND f_int2 = 0
49908 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
49909 AND f_charbig = '#NULL#';
49910 SET AUTOCOMMIT= 0;
49911 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49912 SELECT f_int1, f_int1, '', '', 'was inserted'
49913 FROM t0_template source_tab
49914 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
49915         
49916 # check transactions-1 success:         1
49917 COMMIT WORK;
49918         
49919 # check transactions-2 success:         1
49920 ROLLBACK WORK;
49921         
49922 # check transactions-3 success:         1
49923 DELETE FROM t1 WHERE f_charbig = 'was inserted';
49924 COMMIT WORK;
49925 ROLLBACK WORK;
49926         
49927 # check transactions-4 success:         1
49928 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49929 SELECT f_int1, f_int1, '', '', 'was inserted'
49930 FROM t0_template source_tab
49931 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
49932         
49933 # check transactions-5 success:         1
49934 ROLLBACK WORK;
49935 Warnings:
49936 Warning 1196    Some non-transactional changed tables couldn't be rolled back
49937         
49938 # check transactions-6 success:         1
49939 # INFO: Storage engine used for t1 seems to be not transactional.
49940 COMMIT;
49941         
49942 # check transactions-7 success:         1
49943 DELETE FROM t1 WHERE f_charbig = 'was inserted';
49944 COMMIT WORK;
49945 SET @@session.sql_mode = 'traditional';
49946 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
49947 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49948 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
49949 '', '', 'was inserted' FROM t0_template
49950 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
49951 ERROR 22012: Division by 0
49952 COMMIT;
49953         
49954 # check transactions-8 success:         1
49955 # INFO: Storage engine used for t1 seems to be unable to revert
49956 #       changes made by the failing statement.
49957 SET @@session.sql_mode = '';
49958 SET AUTOCOMMIT= 1;
49959 DELETE FROM t1 WHERE f_charbig = 'was inserted';
49960 COMMIT WORK;
49961 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
49962         
49963 # check special-1 success:      1
49964 UPDATE t1 SET f_charbig = '';
49965         
49966 # check special-2 success:      1
49967 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
49968 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
49969 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
49970 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49971 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49972 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49973 'just inserted' FROM t0_template
49974 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49975 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
49976 BEGIN
49977 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49978 f_charbig = 'updated by trigger'
49979       WHERE f_int1 = new.f_int1;
49980 END|
49981 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49982 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
49983 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49984         
49985 # check trigger-1 success:      1
49986 DROP TRIGGER trg_1;
49987 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49988 f_int2 = CAST(f_char1 AS SIGNED INT),
49989 f_charbig = 'just inserted'
49990    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49991 DELETE FROM t0_aux
49992 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49993 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49994 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49995 'just inserted' FROM t0_template
49996 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49997 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
49998 BEGIN
49999 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50000 f_charbig = 'updated by trigger'
50001       WHERE f_int1 = new.f_int1;
50002 END|
50003 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50004 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
50005 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50006         
50007 # check trigger-2 success:      1
50008 DROP TRIGGER trg_1;
50009 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50010 f_int2 = CAST(f_char1 AS SIGNED INT),
50011 f_charbig = 'just inserted'
50012    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50013 DELETE FROM t0_aux
50014 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50015 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50016 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50017 'just inserted' FROM t0_template
50018 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50019 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
50020 BEGIN
50021 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50022 f_charbig = 'updated by trigger'
50023       WHERE f_int1 = new.f_int1;
50024 END|
50025 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
50026 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50027         
50028 # check trigger-3 success:      1
50029 DROP TRIGGER trg_1;
50030 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50031 f_int2 = CAST(f_char1 AS SIGNED INT),
50032 f_charbig = 'just inserted'
50033    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50034 DELETE FROM t0_aux
50035 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50036 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50037 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50038 'just inserted' FROM t0_template
50039 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50040 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
50041 BEGIN
50042 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50043 f_charbig = 'updated by trigger'
50044       WHERE f_int1 = - old.f_int1;
50045 END|
50046 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
50047 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50048         
50049 # check trigger-4 success:      1
50050 DROP TRIGGER trg_1;
50051 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50052 f_int2 = CAST(f_char1 AS SIGNED INT),
50053 f_charbig = 'just inserted'
50054    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50055 DELETE FROM t0_aux
50056 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50057 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50058 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50059 'just inserted' FROM t0_template
50060 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50061 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
50062 BEGIN
50063 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50064 f_charbig = 'updated by trigger'
50065       WHERE f_int1 = new.f_int1;
50066 END|
50067 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
50068 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50069         
50070 # check trigger-5 success:      1
50071 DROP TRIGGER trg_1;
50072 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50073 f_int2 = CAST(f_char1 AS SIGNED INT),
50074 f_charbig = 'just inserted'
50075    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50076 DELETE FROM t0_aux
50077 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50078 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50079 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50080 'just inserted' FROM t0_template
50081 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50082 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
50083 BEGIN
50084 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50085 f_charbig = 'updated by trigger'
50086       WHERE f_int1 = - old.f_int1;
50087 END|
50088 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
50089 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50090         
50091 # check trigger-6 success:      1
50092 DROP TRIGGER trg_1;
50093 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50094 f_int2 = CAST(f_char1 AS SIGNED INT),
50095 f_charbig = 'just inserted'
50096    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50097 DELETE FROM t0_aux
50098 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50099 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50100 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50101 'just inserted' FROM t0_template
50102 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50103 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
50104 BEGIN
50105 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50106 f_charbig = 'updated by trigger'
50107       WHERE f_int1 = - old.f_int1;
50108 END|
50109 DELETE FROM t0_aux
50110 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50111         
50112 # check trigger-7 success:      1
50113 DROP TRIGGER trg_1;
50114 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50115 f_int2 = CAST(f_char1 AS SIGNED INT),
50116 f_charbig = 'just inserted'
50117    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50118 DELETE FROM t0_aux
50119 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50120 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50121 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50122 'just inserted' FROM t0_template
50123 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50124 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
50125 BEGIN
50126 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50127 f_charbig = 'updated by trigger'
50128       WHERE f_int1 = - old.f_int1;
50129 END|
50130 DELETE FROM t0_aux
50131 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50132         
50133 # check trigger-8 success:      1
50134 DROP TRIGGER trg_1;
50135 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50136 f_int2 = CAST(f_char1 AS SIGNED INT),
50137 f_charbig = 'just inserted'
50138    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50139 DELETE FROM t0_aux
50140 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50141 DELETE FROM t1
50142 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50143 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
50144 BEGIN
50145 SET new.f_int1 = old.f_int1 + @max_row,
50146 new.f_int2 = old.f_int2 - @max_row,
50147 new.f_charbig = '####updated per update trigger####';
50148 END|
50149 UPDATE t1
50150 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
50151 f_charbig = '####updated per update statement itself####';
50152         
50153 # check trigger-9 success:      1
50154 DROP TRIGGER trg_2;
50155 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50156 f_int2 = CAST(f_char1 AS SIGNED INT),
50157 f_charbig = CONCAT('===',f_char1,'===');
50158 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
50159 BEGIN
50160 SET new.f_int1 = new.f_int1 + @max_row,
50161 new.f_int2 = new.f_int2 - @max_row,
50162 new.f_charbig = '####updated per update trigger####';
50163 END|
50164 UPDATE t1
50165 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
50166 f_charbig = '####updated per update statement itself####';
50167         
50168 # check trigger-10 success:     1
50169 DROP TRIGGER trg_2;
50170 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50171 f_int2 = CAST(f_char1 AS SIGNED INT),
50172 f_charbig = CONCAT('===',f_char1,'===');
50173 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
50174 BEGIN
50175 SET new.f_int1 = @my_max1 + @counter,
50176 new.f_int2 = @my_min2 - @counter,
50177 new.f_charbig = '####updated per insert trigger####';
50178 SET @counter = @counter + 1;
50179 END|
50180 SET @counter = 1;
50181 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
50182 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50183 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
50184 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
50185 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
50186 ORDER BY f_int1;
50187 DROP TRIGGER trg_3;
50188         
50189 # check trigger-11 success:     1
50190 DELETE FROM t1
50191 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
50192 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
50193 AND f_charbig = '####updated per insert trigger####';
50194 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
50195 BEGIN
50196 SET new.f_int1 = @my_max1 + @counter,
50197 new.f_int2 = @my_min2 - @counter,
50198 new.f_charbig = '####updated per insert trigger####';
50199 SET @counter = @counter + 1;
50200 END|
50201 SET @counter = 1;
50202 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
50203 INSERT INTO t1 (f_char1, f_char2, f_charbig)
50204 SELECT CAST(f_int1 AS CHAR),
50205 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
50206 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
50207 ORDER BY f_int1;
50208 DROP TRIGGER trg_3;
50209         
50210 # check trigger-12 success:     1
50211 DELETE FROM t1
50212 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
50213 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
50214 AND f_charbig = '####updated per insert trigger####';
50215 ANALYZE  TABLE t1;
50216 Table   Op      Msg_type        Msg_text
50217 test.t1 analyze status  OK
50218 CHECK    TABLE t1 EXTENDED;
50219 Table   Op      Msg_type        Msg_text
50220 test.t1 check   status  OK
50221 CHECKSUM TABLE t1 EXTENDED;
50222 Table   Checksum
50223 test.t1 <some_value>
50224 OPTIMIZE TABLE t1;
50225 Table   Op      Msg_type        Msg_text
50226 test.t1 optimize        status  OK
50227 # check layout success:    1
50228 REPAIR   TABLE t1 EXTENDED;
50229 Table   Op      Msg_type        Msg_text
50230 test.t1 repair  status  OK
50231 # check layout success:    1
50232 TRUNCATE t1;
50233         
50234 # check TRUNCATE success:       1
50235 # check layout success:    1
50236 # End usability test (inc/partition_check.inc)
50237 DROP TABLE t1;
50238 CREATE TABLE t1 (
50239 f_int1 INTEGER,
50240 f_int2 INTEGER,
50241 f_char1 CHAR(20),
50242 f_char2 CHAR(20),
50243 f_charbig VARCHAR(1000)
50246 PARTITION BY LIST(ABS(MOD(f_int1,2)))
50247 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
50248 (PARTITION part_1 VALUES IN (0),
50249  PARTITION part_2 VALUES IN (1),
50250  PARTITION part_3 VALUES IN (NULL));
50251 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
50252 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
50253 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
50254 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
50255 Table   Op      Msg_type        Msg_text
50256 test.t1 optimize        error   Error in list of partitions to test.t1
50257 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
50258 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
50259 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
50260 # Start usability test (inc/partition_check.inc)
50261 create_command
50262 SHOW CREATE TABLE t1;
50263 Table   Create Table
50264 t1      CREATE TABLE `t1` (
50265   `f_int1` int(11) DEFAULT NULL,
50266   `f_int2` int(11) DEFAULT NULL,
50267   `f_char1` char(20) DEFAULT NULL,
50268   `f_char2` char(20) DEFAULT NULL,
50269   `f_charbig` varchar(1000) DEFAULT NULL
50270 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
50271 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
50272 SUBPARTITION BY KEY (f_int1)
50273 SUBPARTITIONS 3
50274 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
50275  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
50276  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
50278 unified filelist
50279 t1#P#part_1#SP#part_1sp0.MYD
50280 t1#P#part_1#SP#part_1sp0.MYI
50281 t1#P#part_1#SP#part_1sp1.MYD
50282 t1#P#part_1#SP#part_1sp1.MYI
50283 t1#P#part_1#SP#part_1sp2.MYD
50284 t1#P#part_1#SP#part_1sp2.MYI
50285 t1#P#part_2#SP#part_2sp0.MYD
50286 t1#P#part_2#SP#part_2sp0.MYI
50287 t1#P#part_2#SP#part_2sp1.MYD
50288 t1#P#part_2#SP#part_2sp1.MYI
50289 t1#P#part_2#SP#part_2sp2.MYD
50290 t1#P#part_2#SP#part_2sp2.MYI
50291 t1#P#part_3#SP#part_3sp0.MYD
50292 t1#P#part_3#SP#part_3sp0.MYI
50293 t1#P#part_3#SP#part_3sp1.MYD
50294 t1#P#part_3#SP#part_3sp1.MYI
50295 t1#P#part_3#SP#part_3sp2.MYD
50296 t1#P#part_3#SP#part_3sp2.MYI
50297 t1.frm
50298 t1.par
50300 # check prerequisites-1 success:    1
50301 # check COUNT(*) success:    1
50302 # check MIN/MAX(f_int1) success:    1
50303 # check MIN/MAX(f_int2) success:    1
50304 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50305 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
50306 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
50307 WHERE f_int1 IN (2,3);
50308 # check prerequisites-3 success:    1
50309 DELETE FROM t1 WHERE f_charbig = 'delete me';
50310 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
50311 # check read via f_int1 success: 1
50312 # check read via f_int2 success: 1
50313         
50314 # check multiple-1 success:     1
50315 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
50316         
50317 # check multiple-2 success:     1
50318 INSERT INTO t1 SELECT * FROM t0_template
50319 WHERE MOD(f_int1,3) = 0;
50320         
50321 # check multiple-3 success:     1
50322 UPDATE t1 SET f_int1 = f_int1 + @max_row
50323 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
50324 AND @max_row_div2 + @max_row_div4;
50325         
50326 # check multiple-4 success:     1
50327 DELETE FROM t1
50328 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
50329 AND @max_row_div2 + @max_row_div4 + @max_row;
50330         
50331 # check multiple-5 success:     1
50332 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
50333 INSERT INTO t1
50334 SET f_int1 = @cur_value , f_int2 = @cur_value,
50335 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
50336 f_charbig = '#SINGLE#';
50337         
50338 # check single-1 success:       1
50339 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
50340 INSERT INTO t1
50341 SET f_int1 = @cur_value , f_int2 = @cur_value,
50342 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
50343 f_charbig = '#SINGLE#';
50344         
50345 # check single-2 success:       1
50346 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
50347 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
50348 UPDATE t1 SET f_int1 = @cur_value2
50349 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
50350         
50351 # check single-3 success:       1
50352 SET @cur_value1= -1;
50353 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
50354 UPDATE t1 SET f_int1 = @cur_value1
50355 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
50356         
50357 # check single-4 success:       1
50358 SELECT MAX(f_int1) INTO @cur_value FROM t1;
50359 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
50360         
50361 # check single-5 success:       1
50362 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
50363         
50364 # check single-6 success:       1
50365 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
50366         
50367 # check single-7 success:       1
50368 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
50369 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
50370 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
50371 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
50372 f_charbig = '#NULL#';
50373 INSERT INTO t1
50374 SET f_int1 = NULL , f_int2 = -@max_row,
50375 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
50376 f_charbig = '#NULL#';
50377 # check null success:    1
50378         
50379 # check null-1 success:         1
50380 UPDATE t1 SET f_int1 = -@max_row
50381 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
50382 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
50383         
50384 # check null-2 success:         1
50385 UPDATE t1 SET f_int1 = NULL
50386 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
50387 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
50388         
50389 # check null-3 success:         1
50390 DELETE FROM t1
50391 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
50392 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
50393         
50394 # check null-4 success:         1
50395 DELETE FROM t1
50396 WHERE f_int1 = 0 AND f_int2 = 0
50397 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
50398 AND f_charbig = '#NULL#';
50399 SET AUTOCOMMIT= 0;
50400 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50401 SELECT f_int1, f_int1, '', '', 'was inserted'
50402 FROM t0_template source_tab
50403 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
50404         
50405 # check transactions-1 success:         1
50406 COMMIT WORK;
50407         
50408 # check transactions-2 success:         1
50409 ROLLBACK WORK;
50410         
50411 # check transactions-3 success:         1
50412 DELETE FROM t1 WHERE f_charbig = 'was inserted';
50413 COMMIT WORK;
50414 ROLLBACK WORK;
50415         
50416 # check transactions-4 success:         1
50417 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50418 SELECT f_int1, f_int1, '', '', 'was inserted'
50419 FROM t0_template source_tab
50420 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
50421         
50422 # check transactions-5 success:         1
50423 ROLLBACK WORK;
50424 Warnings:
50425 Warning 1196    Some non-transactional changed tables couldn't be rolled back
50426         
50427 # check transactions-6 success:         1
50428 # INFO: Storage engine used for t1 seems to be not transactional.
50429 COMMIT;
50430         
50431 # check transactions-7 success:         1
50432 DELETE FROM t1 WHERE f_charbig = 'was inserted';
50433 COMMIT WORK;
50434 SET @@session.sql_mode = 'traditional';
50435 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
50436 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50437 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
50438 '', '', 'was inserted' FROM t0_template
50439 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
50440 ERROR 22012: Division by 0
50441 COMMIT;
50442         
50443 # check transactions-8 success:         1
50444 # INFO: Storage engine used for t1 seems to be unable to revert
50445 #       changes made by the failing statement.
50446 SET @@session.sql_mode = '';
50447 SET AUTOCOMMIT= 1;
50448 DELETE FROM t1 WHERE f_charbig = 'was inserted';
50449 COMMIT WORK;
50450 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
50451         
50452 # check special-1 success:      1
50453 UPDATE t1 SET f_charbig = '';
50454         
50455 # check special-2 success:      1
50456 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
50457 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
50458 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
50459 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50460 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50461 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50462 'just inserted' FROM t0_template
50463 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50464 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
50465 BEGIN
50466 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50467 f_charbig = 'updated by trigger'
50468       WHERE f_int1 = new.f_int1;
50469 END|
50470 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50471 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
50472 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50473         
50474 # check trigger-1 success:      1
50475 DROP TRIGGER trg_1;
50476 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50477 f_int2 = CAST(f_char1 AS SIGNED INT),
50478 f_charbig = 'just inserted'
50479    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50480 DELETE FROM t0_aux
50481 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50482 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50483 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50484 'just inserted' FROM t0_template
50485 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50486 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
50487 BEGIN
50488 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50489 f_charbig = 'updated by trigger'
50490       WHERE f_int1 = new.f_int1;
50491 END|
50492 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50493 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
50494 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50495         
50496 # check trigger-2 success:      1
50497 DROP TRIGGER trg_1;
50498 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50499 f_int2 = CAST(f_char1 AS SIGNED INT),
50500 f_charbig = 'just inserted'
50501    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50502 DELETE FROM t0_aux
50503 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50504 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50505 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50506 'just inserted' FROM t0_template
50507 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50508 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
50509 BEGIN
50510 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50511 f_charbig = 'updated by trigger'
50512       WHERE f_int1 = new.f_int1;
50513 END|
50514 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
50515 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50516         
50517 # check trigger-3 success:      1
50518 DROP TRIGGER trg_1;
50519 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50520 f_int2 = CAST(f_char1 AS SIGNED INT),
50521 f_charbig = 'just inserted'
50522    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50523 DELETE FROM t0_aux
50524 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50525 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50526 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50527 'just inserted' FROM t0_template
50528 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50529 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
50530 BEGIN
50531 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50532 f_charbig = 'updated by trigger'
50533       WHERE f_int1 = - old.f_int1;
50534 END|
50535 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
50536 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50537         
50538 # check trigger-4 success:      1
50539 DROP TRIGGER trg_1;
50540 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50541 f_int2 = CAST(f_char1 AS SIGNED INT),
50542 f_charbig = 'just inserted'
50543    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50544 DELETE FROM t0_aux
50545 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50546 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50547 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50548 'just inserted' FROM t0_template
50549 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50550 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
50551 BEGIN
50552 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50553 f_charbig = 'updated by trigger'
50554       WHERE f_int1 = new.f_int1;
50555 END|
50556 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
50557 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50558         
50559 # check trigger-5 success:      1
50560 DROP TRIGGER trg_1;
50561 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50562 f_int2 = CAST(f_char1 AS SIGNED INT),
50563 f_charbig = 'just inserted'
50564    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50565 DELETE FROM t0_aux
50566 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50567 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50568 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50569 'just inserted' FROM t0_template
50570 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50571 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
50572 BEGIN
50573 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50574 f_charbig = 'updated by trigger'
50575       WHERE f_int1 = - old.f_int1;
50576 END|
50577 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
50578 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50579         
50580 # check trigger-6 success:      1
50581 DROP TRIGGER trg_1;
50582 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50583 f_int2 = CAST(f_char1 AS SIGNED INT),
50584 f_charbig = 'just inserted'
50585    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50586 DELETE FROM t0_aux
50587 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50588 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50589 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50590 'just inserted' FROM t0_template
50591 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50592 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
50593 BEGIN
50594 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50595 f_charbig = 'updated by trigger'
50596       WHERE f_int1 = - old.f_int1;
50597 END|
50598 DELETE FROM t0_aux
50599 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50600         
50601 # check trigger-7 success:      1
50602 DROP TRIGGER trg_1;
50603 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50604 f_int2 = CAST(f_char1 AS SIGNED INT),
50605 f_charbig = 'just inserted'
50606    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50607 DELETE FROM t0_aux
50608 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50609 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50610 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50611 'just inserted' FROM t0_template
50612 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50613 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
50614 BEGIN
50615 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50616 f_charbig = 'updated by trigger'
50617       WHERE f_int1 = - old.f_int1;
50618 END|
50619 DELETE FROM t0_aux
50620 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50621         
50622 # check trigger-8 success:      1
50623 DROP TRIGGER trg_1;
50624 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50625 f_int2 = CAST(f_char1 AS SIGNED INT),
50626 f_charbig = 'just inserted'
50627    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50628 DELETE FROM t0_aux
50629 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50630 DELETE FROM t1
50631 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50632 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
50633 BEGIN
50634 SET new.f_int1 = old.f_int1 + @max_row,
50635 new.f_int2 = old.f_int2 - @max_row,
50636 new.f_charbig = '####updated per update trigger####';
50637 END|
50638 UPDATE t1
50639 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
50640 f_charbig = '####updated per update statement itself####';
50641         
50642 # check trigger-9 success:      1
50643 DROP TRIGGER trg_2;
50644 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50645 f_int2 = CAST(f_char1 AS SIGNED INT),
50646 f_charbig = CONCAT('===',f_char1,'===');
50647 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
50648 BEGIN
50649 SET new.f_int1 = new.f_int1 + @max_row,
50650 new.f_int2 = new.f_int2 - @max_row,
50651 new.f_charbig = '####updated per update trigger####';
50652 END|
50653 UPDATE t1
50654 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
50655 f_charbig = '####updated per update statement itself####';
50656         
50657 # check trigger-10 success:     1
50658 DROP TRIGGER trg_2;
50659 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50660 f_int2 = CAST(f_char1 AS SIGNED INT),
50661 f_charbig = CONCAT('===',f_char1,'===');
50662 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
50663 BEGIN
50664 SET new.f_int1 = @my_max1 + @counter,
50665 new.f_int2 = @my_min2 - @counter,
50666 new.f_charbig = '####updated per insert trigger####';
50667 SET @counter = @counter + 1;
50668 END|
50669 SET @counter = 1;
50670 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
50671 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50672 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
50673 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
50674 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
50675 ORDER BY f_int1;
50676 DROP TRIGGER trg_3;
50677         
50678 # check trigger-11 success:     1
50679 DELETE FROM t1
50680 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
50681 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
50682 AND f_charbig = '####updated per insert trigger####';
50683 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
50684 BEGIN
50685 SET new.f_int1 = @my_max1 + @counter,
50686 new.f_int2 = @my_min2 - @counter,
50687 new.f_charbig = '####updated per insert trigger####';
50688 SET @counter = @counter + 1;
50689 END|
50690 SET @counter = 1;
50691 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
50692 INSERT INTO t1 (f_char1, f_char2, f_charbig)
50693 SELECT CAST(f_int1 AS CHAR),
50694 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
50695 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
50696 ORDER BY f_int1;
50697 DROP TRIGGER trg_3;
50698         
50699 # check trigger-12 success:     1
50700 DELETE FROM t1
50701 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
50702 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
50703 AND f_charbig = '####updated per insert trigger####';
50704 ANALYZE  TABLE t1;
50705 Table   Op      Msg_type        Msg_text
50706 test.t1 analyze status  OK
50707 CHECK    TABLE t1 EXTENDED;
50708 Table   Op      Msg_type        Msg_text
50709 test.t1 check   status  OK
50710 CHECKSUM TABLE t1 EXTENDED;
50711 Table   Checksum
50712 test.t1 <some_value>
50713 OPTIMIZE TABLE t1;
50714 Table   Op      Msg_type        Msg_text
50715 test.t1 optimize        status  OK
50716 # check layout success:    1
50717 REPAIR   TABLE t1 EXTENDED;
50718 Table   Op      Msg_type        Msg_text
50719 test.t1 repair  status  OK
50720 # check layout success:    1
50721 TRUNCATE t1;
50722         
50723 # check TRUNCATE success:       1
50724 # check layout success:    1
50725 # End usability test (inc/partition_check.inc)
50726 DROP TABLE t1;
50727 #  3.4 ALTER ... OPTIMIZE PARTITION part_1,part_1,part_1;
50728 DROP TABLE IF EXISTS t1;
50729 CREATE TABLE t1 (
50730 f_int1 INTEGER,
50731 f_int2 INTEGER,
50732 f_char1 CHAR(20),
50733 f_char2 CHAR(20),
50734 f_charbig VARCHAR(1000)
50737 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
50738 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
50739 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
50740 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
50741 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
50742 Table   Op      Msg_type        Msg_text
50743 test.t1 optimize        error   Error in list of partitions to test.t1
50744 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
50745 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
50746 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
50747 # Start usability test (inc/partition_check.inc)
50748 create_command
50749 SHOW CREATE TABLE t1;
50750 Table   Create Table
50751 t1      CREATE TABLE `t1` (
50752   `f_int1` int(11) DEFAULT NULL,
50753   `f_int2` int(11) DEFAULT NULL,
50754   `f_char1` char(20) DEFAULT NULL,
50755   `f_char2` char(20) DEFAULT NULL,
50756   `f_charbig` varchar(1000) DEFAULT NULL
50757 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
50758 /*!50100 PARTITION BY HASH (f_int1)
50759 (PARTITION part_1 ENGINE = MyISAM,
50760  PARTITION part_2 ENGINE = MyISAM) */
50762 unified filelist
50763 t1#P#part_1.MYD
50764 t1#P#part_1.MYI
50765 t1#P#part_2.MYD
50766 t1#P#part_2.MYI
50767 t1.frm
50768 t1.par
50770 # check prerequisites-1 success:    1
50771 # check COUNT(*) success:    1
50772 # check MIN/MAX(f_int1) success:    1
50773 # check MIN/MAX(f_int2) success:    1
50774 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50775 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
50776 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
50777 WHERE f_int1 IN (2,3);
50778 # check prerequisites-3 success:    1
50779 DELETE FROM t1 WHERE f_charbig = 'delete me';
50780 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
50781 # check read via f_int1 success: 1
50782 # check read via f_int2 success: 1
50783         
50784 # check multiple-1 success:     1
50785 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
50786         
50787 # check multiple-2 success:     1
50788 INSERT INTO t1 SELECT * FROM t0_template
50789 WHERE MOD(f_int1,3) = 0;
50790         
50791 # check multiple-3 success:     1
50792 UPDATE t1 SET f_int1 = f_int1 + @max_row
50793 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
50794 AND @max_row_div2 + @max_row_div4;
50795         
50796 # check multiple-4 success:     1
50797 DELETE FROM t1
50798 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
50799 AND @max_row_div2 + @max_row_div4 + @max_row;
50800         
50801 # check multiple-5 success:     1
50802 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
50803 INSERT INTO t1
50804 SET f_int1 = @cur_value , f_int2 = @cur_value,
50805 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
50806 f_charbig = '#SINGLE#';
50807         
50808 # check single-1 success:       1
50809 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
50810 INSERT INTO t1
50811 SET f_int1 = @cur_value , f_int2 = @cur_value,
50812 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
50813 f_charbig = '#SINGLE#';
50814         
50815 # check single-2 success:       1
50816 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
50817 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
50818 UPDATE t1 SET f_int1 = @cur_value2
50819 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
50820         
50821 # check single-3 success:       1
50822 SET @cur_value1= -1;
50823 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
50824 UPDATE t1 SET f_int1 = @cur_value1
50825 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
50826         
50827 # check single-4 success:       1
50828 SELECT MAX(f_int1) INTO @cur_value FROM t1;
50829 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
50830         
50831 # check single-5 success:       1
50832 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
50833         
50834 # check single-6 success:       1
50835 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
50836         
50837 # check single-7 success:       1
50838 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
50839 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
50840 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
50841 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
50842 f_charbig = '#NULL#';
50843 INSERT INTO t1
50844 SET f_int1 = NULL , f_int2 = -@max_row,
50845 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
50846 f_charbig = '#NULL#';
50847 # check null success:    1
50848         
50849 # check null-1 success:         1
50850 UPDATE t1 SET f_int1 = -@max_row
50851 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
50852 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
50853         
50854 # check null-2 success:         1
50855 UPDATE t1 SET f_int1 = NULL
50856 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
50857 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
50858         
50859 # check null-3 success:         1
50860 DELETE FROM t1
50861 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
50862 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
50863         
50864 # check null-4 success:         1
50865 DELETE FROM t1
50866 WHERE f_int1 = 0 AND f_int2 = 0
50867 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
50868 AND f_charbig = '#NULL#';
50869 SET AUTOCOMMIT= 0;
50870 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50871 SELECT f_int1, f_int1, '', '', 'was inserted'
50872 FROM t0_template source_tab
50873 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
50874         
50875 # check transactions-1 success:         1
50876 COMMIT WORK;
50877         
50878 # check transactions-2 success:         1
50879 ROLLBACK WORK;
50880         
50881 # check transactions-3 success:         1
50882 DELETE FROM t1 WHERE f_charbig = 'was inserted';
50883 COMMIT WORK;
50884 ROLLBACK WORK;
50885         
50886 # check transactions-4 success:         1
50887 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50888 SELECT f_int1, f_int1, '', '', 'was inserted'
50889 FROM t0_template source_tab
50890 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
50891         
50892 # check transactions-5 success:         1
50893 ROLLBACK WORK;
50894 Warnings:
50895 Warning 1196    Some non-transactional changed tables couldn't be rolled back
50896         
50897 # check transactions-6 success:         1
50898 # INFO: Storage engine used for t1 seems to be not transactional.
50899 COMMIT;
50900         
50901 # check transactions-7 success:         1
50902 DELETE FROM t1 WHERE f_charbig = 'was inserted';
50903 COMMIT WORK;
50904 SET @@session.sql_mode = 'traditional';
50905 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
50906 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50907 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
50908 '', '', 'was inserted' FROM t0_template
50909 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
50910 ERROR 22012: Division by 0
50911 COMMIT;
50912         
50913 # check transactions-8 success:         1
50914 # INFO: Storage engine used for t1 seems to be unable to revert
50915 #       changes made by the failing statement.
50916 SET @@session.sql_mode = '';
50917 SET AUTOCOMMIT= 1;
50918 DELETE FROM t1 WHERE f_charbig = 'was inserted';
50919 COMMIT WORK;
50920 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
50921         
50922 # check special-1 success:      1
50923 UPDATE t1 SET f_charbig = '';
50924         
50925 # check special-2 success:      1
50926 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
50927 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
50928 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
50929 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50930 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50931 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50932 'just inserted' FROM t0_template
50933 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50934 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
50935 BEGIN
50936 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50937 f_charbig = 'updated by trigger'
50938       WHERE f_int1 = new.f_int1;
50939 END|
50940 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50941 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
50942 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50943         
50944 # check trigger-1 success:      1
50945 DROP TRIGGER trg_1;
50946 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50947 f_int2 = CAST(f_char1 AS SIGNED INT),
50948 f_charbig = 'just inserted'
50949    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50950 DELETE FROM t0_aux
50951 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50952 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50953 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50954 'just inserted' FROM t0_template
50955 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50956 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
50957 BEGIN
50958 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50959 f_charbig = 'updated by trigger'
50960       WHERE f_int1 = new.f_int1;
50961 END|
50962 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50963 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
50964 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50965         
50966 # check trigger-2 success:      1
50967 DROP TRIGGER trg_1;
50968 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50969 f_int2 = CAST(f_char1 AS SIGNED INT),
50970 f_charbig = 'just inserted'
50971    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50972 DELETE FROM t0_aux
50973 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50974 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50975 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50976 'just inserted' FROM t0_template
50977 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50978 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
50979 BEGIN
50980 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50981 f_charbig = 'updated by trigger'
50982       WHERE f_int1 = new.f_int1;
50983 END|
50984 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
50985 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50986         
50987 # check trigger-3 success:      1
50988 DROP TRIGGER trg_1;
50989 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50990 f_int2 = CAST(f_char1 AS SIGNED INT),
50991 f_charbig = 'just inserted'
50992    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50993 DELETE FROM t0_aux
50994 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50995 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50996 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50997 'just inserted' FROM t0_template
50998 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50999 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
51000 BEGIN
51001 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51002 f_charbig = 'updated by trigger'
51003       WHERE f_int1 = - old.f_int1;
51004 END|
51005 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
51006 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51007         
51008 # check trigger-4 success:      1
51009 DROP TRIGGER trg_1;
51010 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51011 f_int2 = CAST(f_char1 AS SIGNED INT),
51012 f_charbig = 'just inserted'
51013    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51014 DELETE FROM t0_aux
51015 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51016 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51017 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51018 'just inserted' FROM t0_template
51019 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51020 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
51021 BEGIN
51022 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51023 f_charbig = 'updated by trigger'
51024       WHERE f_int1 = new.f_int1;
51025 END|
51026 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
51027 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51028         
51029 # check trigger-5 success:      1
51030 DROP TRIGGER trg_1;
51031 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51032 f_int2 = CAST(f_char1 AS SIGNED INT),
51033 f_charbig = 'just inserted'
51034    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51035 DELETE FROM t0_aux
51036 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51037 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51038 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51039 'just inserted' FROM t0_template
51040 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51041 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
51042 BEGIN
51043 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51044 f_charbig = 'updated by trigger'
51045       WHERE f_int1 = - old.f_int1;
51046 END|
51047 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
51048 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51049         
51050 # check trigger-6 success:      1
51051 DROP TRIGGER trg_1;
51052 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51053 f_int2 = CAST(f_char1 AS SIGNED INT),
51054 f_charbig = 'just inserted'
51055    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51056 DELETE FROM t0_aux
51057 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51058 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51059 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51060 'just inserted' FROM t0_template
51061 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51062 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
51063 BEGIN
51064 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51065 f_charbig = 'updated by trigger'
51066       WHERE f_int1 = - old.f_int1;
51067 END|
51068 DELETE FROM t0_aux
51069 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51070         
51071 # check trigger-7 success:      1
51072 DROP TRIGGER trg_1;
51073 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51074 f_int2 = CAST(f_char1 AS SIGNED INT),
51075 f_charbig = 'just inserted'
51076    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51077 DELETE FROM t0_aux
51078 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51079 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51080 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51081 'just inserted' FROM t0_template
51082 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51083 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
51084 BEGIN
51085 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51086 f_charbig = 'updated by trigger'
51087       WHERE f_int1 = - old.f_int1;
51088 END|
51089 DELETE FROM t0_aux
51090 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51091         
51092 # check trigger-8 success:      1
51093 DROP TRIGGER trg_1;
51094 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51095 f_int2 = CAST(f_char1 AS SIGNED INT),
51096 f_charbig = 'just inserted'
51097    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51098 DELETE FROM t0_aux
51099 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51100 DELETE FROM t1
51101 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51102 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
51103 BEGIN
51104 SET new.f_int1 = old.f_int1 + @max_row,
51105 new.f_int2 = old.f_int2 - @max_row,
51106 new.f_charbig = '####updated per update trigger####';
51107 END|
51108 UPDATE t1
51109 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
51110 f_charbig = '####updated per update statement itself####';
51111         
51112 # check trigger-9 success:      1
51113 DROP TRIGGER trg_2;
51114 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51115 f_int2 = CAST(f_char1 AS SIGNED INT),
51116 f_charbig = CONCAT('===',f_char1,'===');
51117 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
51118 BEGIN
51119 SET new.f_int1 = new.f_int1 + @max_row,
51120 new.f_int2 = new.f_int2 - @max_row,
51121 new.f_charbig = '####updated per update trigger####';
51122 END|
51123 UPDATE t1
51124 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
51125 f_charbig = '####updated per update statement itself####';
51126         
51127 # check trigger-10 success:     1
51128 DROP TRIGGER trg_2;
51129 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51130 f_int2 = CAST(f_char1 AS SIGNED INT),
51131 f_charbig = CONCAT('===',f_char1,'===');
51132 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
51133 BEGIN
51134 SET new.f_int1 = @my_max1 + @counter,
51135 new.f_int2 = @my_min2 - @counter,
51136 new.f_charbig = '####updated per insert trigger####';
51137 SET @counter = @counter + 1;
51138 END|
51139 SET @counter = 1;
51140 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
51141 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51142 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
51143 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
51144 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
51145 ORDER BY f_int1;
51146 DROP TRIGGER trg_3;
51147         
51148 # check trigger-11 success:     1
51149 DELETE FROM t1
51150 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
51151 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
51152 AND f_charbig = '####updated per insert trigger####';
51153 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
51154 BEGIN
51155 SET new.f_int1 = @my_max1 + @counter,
51156 new.f_int2 = @my_min2 - @counter,
51157 new.f_charbig = '####updated per insert trigger####';
51158 SET @counter = @counter + 1;
51159 END|
51160 SET @counter = 1;
51161 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
51162 INSERT INTO t1 (f_char1, f_char2, f_charbig)
51163 SELECT CAST(f_int1 AS CHAR),
51164 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
51165 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
51166 ORDER BY f_int1;
51167 DROP TRIGGER trg_3;
51168         
51169 # check trigger-12 success:     1
51170 DELETE FROM t1
51171 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
51172 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
51173 AND f_charbig = '####updated per insert trigger####';
51174 ANALYZE  TABLE t1;
51175 Table   Op      Msg_type        Msg_text
51176 test.t1 analyze status  OK
51177 CHECK    TABLE t1 EXTENDED;
51178 Table   Op      Msg_type        Msg_text
51179 test.t1 check   status  OK
51180 CHECKSUM TABLE t1 EXTENDED;
51181 Table   Checksum
51182 test.t1 <some_value>
51183 OPTIMIZE TABLE t1;
51184 Table   Op      Msg_type        Msg_text
51185 test.t1 optimize        status  OK
51186 # check layout success:    1
51187 REPAIR   TABLE t1 EXTENDED;
51188 Table   Op      Msg_type        Msg_text
51189 test.t1 repair  status  OK
51190 # check layout success:    1
51191 TRUNCATE t1;
51192         
51193 # check TRUNCATE success:       1
51194 # check layout success:    1
51195 # End usability test (inc/partition_check.inc)
51196 DROP TABLE t1;
51197 CREATE TABLE t1 (
51198 f_int1 INTEGER,
51199 f_int2 INTEGER,
51200 f_char1 CHAR(20),
51201 f_char2 CHAR(20),
51202 f_charbig VARCHAR(1000)
51205 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
51206 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
51207 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
51208 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
51209 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
51210 Table   Op      Msg_type        Msg_text
51211 test.t1 optimize        error   Error in list of partitions to test.t1
51212 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
51213 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
51214 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
51215 # Start usability test (inc/partition_check.inc)
51216 create_command
51217 SHOW CREATE TABLE t1;
51218 Table   Create Table
51219 t1      CREATE TABLE `t1` (
51220   `f_int1` int(11) DEFAULT NULL,
51221   `f_int2` int(11) DEFAULT NULL,
51222   `f_char1` char(20) DEFAULT NULL,
51223   `f_char2` char(20) DEFAULT NULL,
51224   `f_charbig` varchar(1000) DEFAULT NULL
51225 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
51226 /*!50100 PARTITION BY KEY (f_int1)
51227 (PARTITION part_1 ENGINE = MyISAM,
51228  PARTITION part_2 ENGINE = MyISAM,
51229  PARTITION part_3 ENGINE = MyISAM,
51230  PARTITION part_4 ENGINE = MyISAM,
51231  PARTITION part_5 ENGINE = MyISAM) */
51233 unified filelist
51234 t1#P#part_1.MYD
51235 t1#P#part_1.MYI
51236 t1#P#part_2.MYD
51237 t1#P#part_2.MYI
51238 t1#P#part_3.MYD
51239 t1#P#part_3.MYI
51240 t1#P#part_4.MYD
51241 t1#P#part_4.MYI
51242 t1#P#part_5.MYD
51243 t1#P#part_5.MYI
51244 t1.frm
51245 t1.par
51247 # check prerequisites-1 success:    1
51248 # check COUNT(*) success:    1
51249 # check MIN/MAX(f_int1) success:    1
51250 # check MIN/MAX(f_int2) success:    1
51251 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51252 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
51253 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
51254 WHERE f_int1 IN (2,3);
51255 # check prerequisites-3 success:    1
51256 DELETE FROM t1 WHERE f_charbig = 'delete me';
51257 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
51258 # check read via f_int1 success: 1
51259 # check read via f_int2 success: 1
51260         
51261 # check multiple-1 success:     1
51262 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
51263         
51264 # check multiple-2 success:     1
51265 INSERT INTO t1 SELECT * FROM t0_template
51266 WHERE MOD(f_int1,3) = 0;
51267         
51268 # check multiple-3 success:     1
51269 UPDATE t1 SET f_int1 = f_int1 + @max_row
51270 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
51271 AND @max_row_div2 + @max_row_div4;
51272         
51273 # check multiple-4 success:     1
51274 DELETE FROM t1
51275 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
51276 AND @max_row_div2 + @max_row_div4 + @max_row;
51277         
51278 # check multiple-5 success:     1
51279 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
51280 INSERT INTO t1
51281 SET f_int1 = @cur_value , f_int2 = @cur_value,
51282 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
51283 f_charbig = '#SINGLE#';
51284         
51285 # check single-1 success:       1
51286 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
51287 INSERT INTO t1
51288 SET f_int1 = @cur_value , f_int2 = @cur_value,
51289 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
51290 f_charbig = '#SINGLE#';
51291         
51292 # check single-2 success:       1
51293 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
51294 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
51295 UPDATE t1 SET f_int1 = @cur_value2
51296 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
51297         
51298 # check single-3 success:       1
51299 SET @cur_value1= -1;
51300 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
51301 UPDATE t1 SET f_int1 = @cur_value1
51302 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
51303         
51304 # check single-4 success:       1
51305 SELECT MAX(f_int1) INTO @cur_value FROM t1;
51306 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
51307         
51308 # check single-5 success:       1
51309 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
51310         
51311 # check single-6 success:       1
51312 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
51313         
51314 # check single-7 success:       1
51315 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
51316 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
51317 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
51318 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
51319 f_charbig = '#NULL#';
51320 INSERT INTO t1
51321 SET f_int1 = NULL , f_int2 = -@max_row,
51322 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
51323 f_charbig = '#NULL#';
51324 # check null success:    1
51325         
51326 # check null-1 success:         1
51327 UPDATE t1 SET f_int1 = -@max_row
51328 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
51329 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
51330         
51331 # check null-2 success:         1
51332 UPDATE t1 SET f_int1 = NULL
51333 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
51334 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
51335         
51336 # check null-3 success:         1
51337 DELETE FROM t1
51338 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
51339 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
51340         
51341 # check null-4 success:         1
51342 DELETE FROM t1
51343 WHERE f_int1 = 0 AND f_int2 = 0
51344 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
51345 AND f_charbig = '#NULL#';
51346 SET AUTOCOMMIT= 0;
51347 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51348 SELECT f_int1, f_int1, '', '', 'was inserted'
51349 FROM t0_template source_tab
51350 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
51351         
51352 # check transactions-1 success:         1
51353 COMMIT WORK;
51354         
51355 # check transactions-2 success:         1
51356 ROLLBACK WORK;
51357         
51358 # check transactions-3 success:         1
51359 DELETE FROM t1 WHERE f_charbig = 'was inserted';
51360 COMMIT WORK;
51361 ROLLBACK WORK;
51362         
51363 # check transactions-4 success:         1
51364 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51365 SELECT f_int1, f_int1, '', '', 'was inserted'
51366 FROM t0_template source_tab
51367 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
51368         
51369 # check transactions-5 success:         1
51370 ROLLBACK WORK;
51371 Warnings:
51372 Warning 1196    Some non-transactional changed tables couldn't be rolled back
51373         
51374 # check transactions-6 success:         1
51375 # INFO: Storage engine used for t1 seems to be not transactional.
51376 COMMIT;
51377         
51378 # check transactions-7 success:         1
51379 DELETE FROM t1 WHERE f_charbig = 'was inserted';
51380 COMMIT WORK;
51381 SET @@session.sql_mode = 'traditional';
51382 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
51383 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51384 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
51385 '', '', 'was inserted' FROM t0_template
51386 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
51387 ERROR 22012: Division by 0
51388 COMMIT;
51389         
51390 # check transactions-8 success:         1
51391 # INFO: Storage engine used for t1 seems to be unable to revert
51392 #       changes made by the failing statement.
51393 SET @@session.sql_mode = '';
51394 SET AUTOCOMMIT= 1;
51395 DELETE FROM t1 WHERE f_charbig = 'was inserted';
51396 COMMIT WORK;
51397 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
51398         
51399 # check special-1 success:      1
51400 UPDATE t1 SET f_charbig = '';
51401         
51402 # check special-2 success:      1
51403 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
51404 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
51405 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
51406 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51407 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51408 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51409 'just inserted' FROM t0_template
51410 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51411 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
51412 BEGIN
51413 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51414 f_charbig = 'updated by trigger'
51415       WHERE f_int1 = new.f_int1;
51416 END|
51417 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51418 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
51419 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51420         
51421 # check trigger-1 success:      1
51422 DROP TRIGGER trg_1;
51423 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51424 f_int2 = CAST(f_char1 AS SIGNED INT),
51425 f_charbig = 'just inserted'
51426    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51427 DELETE FROM t0_aux
51428 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51429 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51430 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51431 'just inserted' FROM t0_template
51432 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51433 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
51434 BEGIN
51435 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51436 f_charbig = 'updated by trigger'
51437       WHERE f_int1 = new.f_int1;
51438 END|
51439 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51440 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
51441 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51442         
51443 # check trigger-2 success:      1
51444 DROP TRIGGER trg_1;
51445 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51446 f_int2 = CAST(f_char1 AS SIGNED INT),
51447 f_charbig = 'just inserted'
51448    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51449 DELETE FROM t0_aux
51450 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51451 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51452 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51453 'just inserted' FROM t0_template
51454 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51455 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
51456 BEGIN
51457 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51458 f_charbig = 'updated by trigger'
51459       WHERE f_int1 = new.f_int1;
51460 END|
51461 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
51462 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51463         
51464 # check trigger-3 success:      1
51465 DROP TRIGGER trg_1;
51466 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51467 f_int2 = CAST(f_char1 AS SIGNED INT),
51468 f_charbig = 'just inserted'
51469    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51470 DELETE FROM t0_aux
51471 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51472 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51473 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51474 'just inserted' FROM t0_template
51475 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51476 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
51477 BEGIN
51478 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51479 f_charbig = 'updated by trigger'
51480       WHERE f_int1 = - old.f_int1;
51481 END|
51482 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
51483 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51484         
51485 # check trigger-4 success:      1
51486 DROP TRIGGER trg_1;
51487 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51488 f_int2 = CAST(f_char1 AS SIGNED INT),
51489 f_charbig = 'just inserted'
51490    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51491 DELETE FROM t0_aux
51492 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51493 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51494 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51495 'just inserted' FROM t0_template
51496 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51497 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
51498 BEGIN
51499 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51500 f_charbig = 'updated by trigger'
51501       WHERE f_int1 = new.f_int1;
51502 END|
51503 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
51504 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51505         
51506 # check trigger-5 success:      1
51507 DROP TRIGGER trg_1;
51508 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51509 f_int2 = CAST(f_char1 AS SIGNED INT),
51510 f_charbig = 'just inserted'
51511    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51512 DELETE FROM t0_aux
51513 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51514 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51515 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51516 'just inserted' FROM t0_template
51517 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51518 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
51519 BEGIN
51520 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51521 f_charbig = 'updated by trigger'
51522       WHERE f_int1 = - old.f_int1;
51523 END|
51524 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
51525 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51526         
51527 # check trigger-6 success:      1
51528 DROP TRIGGER trg_1;
51529 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51530 f_int2 = CAST(f_char1 AS SIGNED INT),
51531 f_charbig = 'just inserted'
51532    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51533 DELETE FROM t0_aux
51534 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51535 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51536 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51537 'just inserted' FROM t0_template
51538 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51539 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
51540 BEGIN
51541 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51542 f_charbig = 'updated by trigger'
51543       WHERE f_int1 = - old.f_int1;
51544 END|
51545 DELETE FROM t0_aux
51546 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51547         
51548 # check trigger-7 success:      1
51549 DROP TRIGGER trg_1;
51550 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51551 f_int2 = CAST(f_char1 AS SIGNED INT),
51552 f_charbig = 'just inserted'
51553    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51554 DELETE FROM t0_aux
51555 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51556 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51557 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51558 'just inserted' FROM t0_template
51559 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51560 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
51561 BEGIN
51562 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51563 f_charbig = 'updated by trigger'
51564       WHERE f_int1 = - old.f_int1;
51565 END|
51566 DELETE FROM t0_aux
51567 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51568         
51569 # check trigger-8 success:      1
51570 DROP TRIGGER trg_1;
51571 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51572 f_int2 = CAST(f_char1 AS SIGNED INT),
51573 f_charbig = 'just inserted'
51574    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51575 DELETE FROM t0_aux
51576 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51577 DELETE FROM t1
51578 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51579 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
51580 BEGIN
51581 SET new.f_int1 = old.f_int1 + @max_row,
51582 new.f_int2 = old.f_int2 - @max_row,
51583 new.f_charbig = '####updated per update trigger####';
51584 END|
51585 UPDATE t1
51586 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
51587 f_charbig = '####updated per update statement itself####';
51588         
51589 # check trigger-9 success:      1
51590 DROP TRIGGER trg_2;
51591 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51592 f_int2 = CAST(f_char1 AS SIGNED INT),
51593 f_charbig = CONCAT('===',f_char1,'===');
51594 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
51595 BEGIN
51596 SET new.f_int1 = new.f_int1 + @max_row,
51597 new.f_int2 = new.f_int2 - @max_row,
51598 new.f_charbig = '####updated per update trigger####';
51599 END|
51600 UPDATE t1
51601 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
51602 f_charbig = '####updated per update statement itself####';
51603         
51604 # check trigger-10 success:     1
51605 DROP TRIGGER trg_2;
51606 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51607 f_int2 = CAST(f_char1 AS SIGNED INT),
51608 f_charbig = CONCAT('===',f_char1,'===');
51609 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
51610 BEGIN
51611 SET new.f_int1 = @my_max1 + @counter,
51612 new.f_int2 = @my_min2 - @counter,
51613 new.f_charbig = '####updated per insert trigger####';
51614 SET @counter = @counter + 1;
51615 END|
51616 SET @counter = 1;
51617 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
51618 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51619 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
51620 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
51621 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
51622 ORDER BY f_int1;
51623 DROP TRIGGER trg_3;
51624         
51625 # check trigger-11 success:     1
51626 DELETE FROM t1
51627 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
51628 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
51629 AND f_charbig = '####updated per insert trigger####';
51630 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
51631 BEGIN
51632 SET new.f_int1 = @my_max1 + @counter,
51633 new.f_int2 = @my_min2 - @counter,
51634 new.f_charbig = '####updated per insert trigger####';
51635 SET @counter = @counter + 1;
51636 END|
51637 SET @counter = 1;
51638 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
51639 INSERT INTO t1 (f_char1, f_char2, f_charbig)
51640 SELECT CAST(f_int1 AS CHAR),
51641 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
51642 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
51643 ORDER BY f_int1;
51644 DROP TRIGGER trg_3;
51645         
51646 # check trigger-12 success:     1
51647 DELETE FROM t1
51648 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
51649 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
51650 AND f_charbig = '####updated per insert trigger####';
51651 ANALYZE  TABLE t1;
51652 Table   Op      Msg_type        Msg_text
51653 test.t1 analyze status  OK
51654 CHECK    TABLE t1 EXTENDED;
51655 Table   Op      Msg_type        Msg_text
51656 test.t1 check   status  OK
51657 CHECKSUM TABLE t1 EXTENDED;
51658 Table   Checksum
51659 test.t1 <some_value>
51660 OPTIMIZE TABLE t1;
51661 Table   Op      Msg_type        Msg_text
51662 test.t1 optimize        status  OK
51663 # check layout success:    1
51664 REPAIR   TABLE t1 EXTENDED;
51665 Table   Op      Msg_type        Msg_text
51666 test.t1 repair  status  OK
51667 # check layout success:    1
51668 TRUNCATE t1;
51669         
51670 # check TRUNCATE success:       1
51671 # check layout success:    1
51672 # End usability test (inc/partition_check.inc)
51673 DROP TABLE t1;
51674 CREATE TABLE t1 (
51675 f_int1 INTEGER,
51676 f_int2 INTEGER,
51677 f_char1 CHAR(20),
51678 f_char2 CHAR(20),
51679 f_charbig VARCHAR(1000)
51682 PARTITION BY LIST(MOD(f_int1,4))
51683 (PARTITION part_3 VALUES IN (-3),
51684 PARTITION part_2 VALUES IN (-2),
51685 PARTITION part_1 VALUES IN (-1),
51686 PARTITION part_N VALUES IN (NULL),
51687 PARTITION part0 VALUES IN (0),
51688 PARTITION part1 VALUES IN (1),
51689 PARTITION part2 VALUES IN (2),
51690 PARTITION part3 VALUES IN (3));
51691 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
51692 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
51693 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
51694 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
51695 Table   Op      Msg_type        Msg_text
51696 test.t1 optimize        error   Error in list of partitions to test.t1
51697 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
51698 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
51699 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
51700 # Start usability test (inc/partition_check.inc)
51701 create_command
51702 SHOW CREATE TABLE t1;
51703 Table   Create Table
51704 t1      CREATE TABLE `t1` (
51705   `f_int1` int(11) DEFAULT NULL,
51706   `f_int2` int(11) DEFAULT NULL,
51707   `f_char1` char(20) DEFAULT NULL,
51708   `f_char2` char(20) DEFAULT NULL,
51709   `f_charbig` varchar(1000) DEFAULT NULL
51710 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
51711 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
51712 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
51713  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
51714  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
51715  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
51716  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
51717  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
51718  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
51719  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
51721 unified filelist
51722 t1#P#part0.MYD
51723 t1#P#part0.MYI
51724 t1#P#part1.MYD
51725 t1#P#part1.MYI
51726 t1#P#part2.MYD
51727 t1#P#part2.MYI
51728 t1#P#part3.MYD
51729 t1#P#part3.MYI
51730 t1#P#part_1.MYD
51731 t1#P#part_1.MYI
51732 t1#P#part_2.MYD
51733 t1#P#part_2.MYI
51734 t1#P#part_3.MYD
51735 t1#P#part_3.MYI
51736 t1#P#part_N.MYD
51737 t1#P#part_N.MYI
51738 t1.frm
51739 t1.par
51741 # check prerequisites-1 success:    1
51742 # check COUNT(*) success:    1
51743 # check MIN/MAX(f_int1) success:    1
51744 # check MIN/MAX(f_int2) success:    1
51745 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51746 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
51747 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
51748 WHERE f_int1 IN (2,3);
51749 # check prerequisites-3 success:    1
51750 DELETE FROM t1 WHERE f_charbig = 'delete me';
51751 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
51752 # check read via f_int1 success: 1
51753 # check read via f_int2 success: 1
51754         
51755 # check multiple-1 success:     1
51756 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
51757         
51758 # check multiple-2 success:     1
51759 INSERT INTO t1 SELECT * FROM t0_template
51760 WHERE MOD(f_int1,3) = 0;
51761         
51762 # check multiple-3 success:     1
51763 UPDATE t1 SET f_int1 = f_int1 + @max_row
51764 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
51765 AND @max_row_div2 + @max_row_div4;
51766         
51767 # check multiple-4 success:     1
51768 DELETE FROM t1
51769 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
51770 AND @max_row_div2 + @max_row_div4 + @max_row;
51771         
51772 # check multiple-5 success:     1
51773 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
51774 INSERT INTO t1
51775 SET f_int1 = @cur_value , f_int2 = @cur_value,
51776 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
51777 f_charbig = '#SINGLE#';
51778         
51779 # check single-1 success:       1
51780 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
51781 INSERT INTO t1
51782 SET f_int1 = @cur_value , f_int2 = @cur_value,
51783 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
51784 f_charbig = '#SINGLE#';
51785         
51786 # check single-2 success:       1
51787 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
51788 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
51789 UPDATE t1 SET f_int1 = @cur_value2
51790 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
51791         
51792 # check single-3 success:       1
51793 SET @cur_value1= -1;
51794 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
51795 UPDATE t1 SET f_int1 = @cur_value1
51796 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
51797         
51798 # check single-4 success:       1
51799 SELECT MAX(f_int1) INTO @cur_value FROM t1;
51800 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
51801         
51802 # check single-5 success:       1
51803 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
51804         
51805 # check single-6 success:       1
51806 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
51807         
51808 # check single-7 success:       1
51809 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
51810 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
51811 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
51812 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
51813 f_charbig = '#NULL#';
51814 INSERT INTO t1
51815 SET f_int1 = NULL , f_int2 = -@max_row,
51816 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
51817 f_charbig = '#NULL#';
51818 # check null success:    1
51819         
51820 # check null-1 success:         1
51821 UPDATE t1 SET f_int1 = -@max_row
51822 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
51823 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
51824         
51825 # check null-2 success:         1
51826 UPDATE t1 SET f_int1 = NULL
51827 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
51828 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
51829         
51830 # check null-3 success:         1
51831 DELETE FROM t1
51832 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
51833 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
51834         
51835 # check null-4 success:         1
51836 DELETE FROM t1
51837 WHERE f_int1 = 0 AND f_int2 = 0
51838 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
51839 AND f_charbig = '#NULL#';
51840 SET AUTOCOMMIT= 0;
51841 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51842 SELECT f_int1, f_int1, '', '', 'was inserted'
51843 FROM t0_template source_tab
51844 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
51845         
51846 # check transactions-1 success:         1
51847 COMMIT WORK;
51848         
51849 # check transactions-2 success:         1
51850 ROLLBACK WORK;
51851         
51852 # check transactions-3 success:         1
51853 DELETE FROM t1 WHERE f_charbig = 'was inserted';
51854 COMMIT WORK;
51855 ROLLBACK WORK;
51856         
51857 # check transactions-4 success:         1
51858 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51859 SELECT f_int1, f_int1, '', '', 'was inserted'
51860 FROM t0_template source_tab
51861 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
51862         
51863 # check transactions-5 success:         1
51864 ROLLBACK WORK;
51865 Warnings:
51866 Warning 1196    Some non-transactional changed tables couldn't be rolled back
51867         
51868 # check transactions-6 success:         1
51869 # INFO: Storage engine used for t1 seems to be not transactional.
51870 COMMIT;
51871         
51872 # check transactions-7 success:         1
51873 DELETE FROM t1 WHERE f_charbig = 'was inserted';
51874 COMMIT WORK;
51875 SET @@session.sql_mode = 'traditional';
51876 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
51877 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51878 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
51879 '', '', 'was inserted' FROM t0_template
51880 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
51881 ERROR 22012: Division by 0
51882 COMMIT;
51883         
51884 # check transactions-8 success:         1
51885 # INFO: Storage engine used for t1 seems to be unable to revert
51886 #       changes made by the failing statement.
51887 SET @@session.sql_mode = '';
51888 SET AUTOCOMMIT= 1;
51889 DELETE FROM t1 WHERE f_charbig = 'was inserted';
51890 COMMIT WORK;
51891 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
51892         
51893 # check special-1 success:      1
51894 UPDATE t1 SET f_charbig = '';
51895         
51896 # check special-2 success:      1
51897 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
51898 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
51899 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
51900 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51901 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51902 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51903 'just inserted' FROM t0_template
51904 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51905 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
51906 BEGIN
51907 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51908 f_charbig = 'updated by trigger'
51909       WHERE f_int1 = new.f_int1;
51910 END|
51911 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51912 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
51913 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51914         
51915 # check trigger-1 success:      1
51916 DROP TRIGGER trg_1;
51917 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51918 f_int2 = CAST(f_char1 AS SIGNED INT),
51919 f_charbig = 'just inserted'
51920    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51921 DELETE FROM t0_aux
51922 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51923 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51924 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51925 'just inserted' FROM t0_template
51926 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51927 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
51928 BEGIN
51929 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51930 f_charbig = 'updated by trigger'
51931       WHERE f_int1 = new.f_int1;
51932 END|
51933 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51934 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
51935 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51936         
51937 # check trigger-2 success:      1
51938 DROP TRIGGER trg_1;
51939 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51940 f_int2 = CAST(f_char1 AS SIGNED INT),
51941 f_charbig = 'just inserted'
51942    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51943 DELETE FROM t0_aux
51944 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51945 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51946 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51947 'just inserted' FROM t0_template
51948 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51949 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
51950 BEGIN
51951 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51952 f_charbig = 'updated by trigger'
51953       WHERE f_int1 = new.f_int1;
51954 END|
51955 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
51956 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51957         
51958 # check trigger-3 success:      1
51959 DROP TRIGGER trg_1;
51960 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51961 f_int2 = CAST(f_char1 AS SIGNED INT),
51962 f_charbig = 'just inserted'
51963    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51964 DELETE FROM t0_aux
51965 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51966 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51967 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51968 'just inserted' FROM t0_template
51969 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51970 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
51971 BEGIN
51972 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51973 f_charbig = 'updated by trigger'
51974       WHERE f_int1 = - old.f_int1;
51975 END|
51976 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
51977 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51978         
51979 # check trigger-4 success:      1
51980 DROP TRIGGER trg_1;
51981 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51982 f_int2 = CAST(f_char1 AS SIGNED INT),
51983 f_charbig = 'just inserted'
51984    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51985 DELETE FROM t0_aux
51986 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51987 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51988 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51989 'just inserted' FROM t0_template
51990 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51991 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
51992 BEGIN
51993 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51994 f_charbig = 'updated by trigger'
51995       WHERE f_int1 = new.f_int1;
51996 END|
51997 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
51998 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51999         
52000 # check trigger-5 success:      1
52001 DROP TRIGGER trg_1;
52002 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52003 f_int2 = CAST(f_char1 AS SIGNED INT),
52004 f_charbig = 'just inserted'
52005    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52006 DELETE FROM t0_aux
52007 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52008 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52009 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52010 'just inserted' FROM t0_template
52011 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52012 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
52013 BEGIN
52014 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52015 f_charbig = 'updated by trigger'
52016       WHERE f_int1 = - old.f_int1;
52017 END|
52018 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
52019 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52020         
52021 # check trigger-6 success:      1
52022 DROP TRIGGER trg_1;
52023 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52024 f_int2 = CAST(f_char1 AS SIGNED INT),
52025 f_charbig = 'just inserted'
52026    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52027 DELETE FROM t0_aux
52028 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52029 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52030 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52031 'just inserted' FROM t0_template
52032 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52033 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
52034 BEGIN
52035 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52036 f_charbig = 'updated by trigger'
52037       WHERE f_int1 = - old.f_int1;
52038 END|
52039 DELETE FROM t0_aux
52040 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52041         
52042 # check trigger-7 success:      1
52043 DROP TRIGGER trg_1;
52044 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52045 f_int2 = CAST(f_char1 AS SIGNED INT),
52046 f_charbig = 'just inserted'
52047    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52048 DELETE FROM t0_aux
52049 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52050 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52051 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52052 'just inserted' FROM t0_template
52053 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52054 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
52055 BEGIN
52056 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52057 f_charbig = 'updated by trigger'
52058       WHERE f_int1 = - old.f_int1;
52059 END|
52060 DELETE FROM t0_aux
52061 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52062         
52063 # check trigger-8 success:      1
52064 DROP TRIGGER trg_1;
52065 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52066 f_int2 = CAST(f_char1 AS SIGNED INT),
52067 f_charbig = 'just inserted'
52068    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52069 DELETE FROM t0_aux
52070 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52071 DELETE FROM t1
52072 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52073 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
52074 BEGIN
52075 SET new.f_int1 = old.f_int1 + @max_row,
52076 new.f_int2 = old.f_int2 - @max_row,
52077 new.f_charbig = '####updated per update trigger####';
52078 END|
52079 UPDATE t1
52080 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
52081 f_charbig = '####updated per update statement itself####';
52082         
52083 # check trigger-9 success:      1
52084 DROP TRIGGER trg_2;
52085 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52086 f_int2 = CAST(f_char1 AS SIGNED INT),
52087 f_charbig = CONCAT('===',f_char1,'===');
52088 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
52089 BEGIN
52090 SET new.f_int1 = new.f_int1 + @max_row,
52091 new.f_int2 = new.f_int2 - @max_row,
52092 new.f_charbig = '####updated per update trigger####';
52093 END|
52094 UPDATE t1
52095 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
52096 f_charbig = '####updated per update statement itself####';
52097         
52098 # check trigger-10 success:     1
52099 DROP TRIGGER trg_2;
52100 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52101 f_int2 = CAST(f_char1 AS SIGNED INT),
52102 f_charbig = CONCAT('===',f_char1,'===');
52103 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
52104 BEGIN
52105 SET new.f_int1 = @my_max1 + @counter,
52106 new.f_int2 = @my_min2 - @counter,
52107 new.f_charbig = '####updated per insert trigger####';
52108 SET @counter = @counter + 1;
52109 END|
52110 SET @counter = 1;
52111 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
52112 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52113 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
52114 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
52115 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
52116 ORDER BY f_int1;
52117 DROP TRIGGER trg_3;
52118         
52119 # check trigger-11 success:     1
52120 DELETE FROM t1
52121 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
52122 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
52123 AND f_charbig = '####updated per insert trigger####';
52124 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
52125 BEGIN
52126 SET new.f_int1 = @my_max1 + @counter,
52127 new.f_int2 = @my_min2 - @counter,
52128 new.f_charbig = '####updated per insert trigger####';
52129 SET @counter = @counter + 1;
52130 END|
52131 SET @counter = 1;
52132 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
52133 INSERT INTO t1 (f_char1, f_char2, f_charbig)
52134 SELECT CAST(f_int1 AS CHAR),
52135 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
52136 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
52137 ORDER BY f_int1;
52138 DROP TRIGGER trg_3;
52139         
52140 # check trigger-12 success:     1
52141 DELETE FROM t1
52142 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
52143 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
52144 AND f_charbig = '####updated per insert trigger####';
52145 ANALYZE  TABLE t1;
52146 Table   Op      Msg_type        Msg_text
52147 test.t1 analyze status  OK
52148 CHECK    TABLE t1 EXTENDED;
52149 Table   Op      Msg_type        Msg_text
52150 test.t1 check   status  OK
52151 CHECKSUM TABLE t1 EXTENDED;
52152 Table   Checksum
52153 test.t1 <some_value>
52154 OPTIMIZE TABLE t1;
52155 Table   Op      Msg_type        Msg_text
52156 test.t1 optimize        status  OK
52157 # check layout success:    1
52158 REPAIR   TABLE t1 EXTENDED;
52159 Table   Op      Msg_type        Msg_text
52160 test.t1 repair  status  OK
52161 # check layout success:    1
52162 TRUNCATE t1;
52163         
52164 # check TRUNCATE success:       1
52165 # check layout success:    1
52166 # End usability test (inc/partition_check.inc)
52167 DROP TABLE t1;
52168 CREATE TABLE t1 (
52169 f_int1 INTEGER,
52170 f_int2 INTEGER,
52171 f_char1 CHAR(20),
52172 f_char2 CHAR(20),
52173 f_charbig VARCHAR(1000)
52176 PARTITION BY RANGE(f_int1)
52177 (PARTITION parta VALUES LESS THAN (0),
52178 PARTITION part_1 VALUES LESS THAN (5),
52179 PARTITION part_2 VALUES LESS THAN (10),
52180 PARTITION part_3 VALUES LESS THAN (10 + 5),
52181 PARTITION part_4 VALUES LESS THAN (20),
52182 PARTITION part_5 VALUES LESS THAN (2147483646));
52183 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
52184 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
52185 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
52186 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
52187 Table   Op      Msg_type        Msg_text
52188 test.t1 optimize        error   Error in list of partitions to test.t1
52189 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
52190 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
52191 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
52192 # Start usability test (inc/partition_check.inc)
52193 create_command
52194 SHOW CREATE TABLE t1;
52195 Table   Create Table
52196 t1      CREATE TABLE `t1` (
52197   `f_int1` int(11) DEFAULT NULL,
52198   `f_int2` int(11) DEFAULT NULL,
52199   `f_char1` char(20) DEFAULT NULL,
52200   `f_char2` char(20) DEFAULT NULL,
52201   `f_charbig` varchar(1000) DEFAULT NULL
52202 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
52203 /*!50100 PARTITION BY RANGE (f_int1)
52204 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
52205  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
52206  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
52207  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
52208  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
52209  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
52211 unified filelist
52212 t1#P#part_1.MYD
52213 t1#P#part_1.MYI
52214 t1#P#part_2.MYD
52215 t1#P#part_2.MYI
52216 t1#P#part_3.MYD
52217 t1#P#part_3.MYI
52218 t1#P#part_4.MYD
52219 t1#P#part_4.MYI
52220 t1#P#part_5.MYD
52221 t1#P#part_5.MYI
52222 t1#P#parta.MYD
52223 t1#P#parta.MYI
52224 t1.frm
52225 t1.par
52227 # check prerequisites-1 success:    1
52228 # check COUNT(*) success:    1
52229 # check MIN/MAX(f_int1) success:    1
52230 # check MIN/MAX(f_int2) success:    1
52231 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52232 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
52233 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
52234 WHERE f_int1 IN (2,3);
52235 # check prerequisites-3 success:    1
52236 DELETE FROM t1 WHERE f_charbig = 'delete me';
52237 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
52238 # check read via f_int1 success: 1
52239 # check read via f_int2 success: 1
52240         
52241 # check multiple-1 success:     1
52242 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
52243         
52244 # check multiple-2 success:     1
52245 INSERT INTO t1 SELECT * FROM t0_template
52246 WHERE MOD(f_int1,3) = 0;
52247         
52248 # check multiple-3 success:     1
52249 UPDATE t1 SET f_int1 = f_int1 + @max_row
52250 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
52251 AND @max_row_div2 + @max_row_div4;
52252         
52253 # check multiple-4 success:     1
52254 DELETE FROM t1
52255 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
52256 AND @max_row_div2 + @max_row_div4 + @max_row;
52257         
52258 # check multiple-5 success:     1
52259 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
52260 INSERT INTO t1
52261 SET f_int1 = @cur_value , f_int2 = @cur_value,
52262 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
52263 f_charbig = '#SINGLE#';
52264         
52265 # check single-1 success:       1
52266 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
52267 INSERT INTO t1
52268 SET f_int1 = @cur_value , f_int2 = @cur_value,
52269 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
52270 f_charbig = '#SINGLE#';
52271         
52272 # check single-2 success:       1
52273 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
52274 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
52275 UPDATE t1 SET f_int1 = @cur_value2
52276 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
52277         
52278 # check single-3 success:       1
52279 SET @cur_value1= -1;
52280 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
52281 UPDATE t1 SET f_int1 = @cur_value1
52282 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
52283         
52284 # check single-4 success:       1
52285 SELECT MAX(f_int1) INTO @cur_value FROM t1;
52286 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
52287         
52288 # check single-5 success:       1
52289 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
52290         
52291 # check single-6 success:       1
52292 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
52293 ERROR HY000: Table has no partition for value 2147483647
52294 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
52295 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
52296 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
52297 f_charbig = '#NULL#';
52298 INSERT INTO t1
52299 SET f_int1 = NULL , f_int2 = -@max_row,
52300 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
52301 f_charbig = '#NULL#';
52302 # check null success:    1
52303         
52304 # check null-1 success:         1
52305 UPDATE t1 SET f_int1 = -@max_row
52306 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
52307 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
52308         
52309 # check null-2 success:         1
52310 UPDATE t1 SET f_int1 = NULL
52311 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
52312 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
52313         
52314 # check null-3 success:         1
52315 DELETE FROM t1
52316 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
52317 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
52318         
52319 # check null-4 success:         1
52320 DELETE FROM t1
52321 WHERE f_int1 = 0 AND f_int2 = 0
52322 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
52323 AND f_charbig = '#NULL#';
52324 SET AUTOCOMMIT= 0;
52325 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52326 SELECT f_int1, f_int1, '', '', 'was inserted'
52327 FROM t0_template source_tab
52328 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
52329         
52330 # check transactions-1 success:         1
52331 COMMIT WORK;
52332         
52333 # check transactions-2 success:         1
52334 ROLLBACK WORK;
52335         
52336 # check transactions-3 success:         1
52337 DELETE FROM t1 WHERE f_charbig = 'was inserted';
52338 COMMIT WORK;
52339 ROLLBACK WORK;
52340         
52341 # check transactions-4 success:         1
52342 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52343 SELECT f_int1, f_int1, '', '', 'was inserted'
52344 FROM t0_template source_tab
52345 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
52346         
52347 # check transactions-5 success:         1
52348 ROLLBACK WORK;
52349 Warnings:
52350 Warning 1196    Some non-transactional changed tables couldn't be rolled back
52351         
52352 # check transactions-6 success:         1
52353 # INFO: Storage engine used for t1 seems to be not transactional.
52354 COMMIT;
52355         
52356 # check transactions-7 success:         1
52357 DELETE FROM t1 WHERE f_charbig = 'was inserted';
52358 COMMIT WORK;
52359 SET @@session.sql_mode = 'traditional';
52360 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
52361 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52362 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
52363 '', '', 'was inserted' FROM t0_template
52364 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
52365 ERROR 22012: Division by 0
52366 COMMIT;
52367         
52368 # check transactions-8 success:         1
52369 # INFO: Storage engine used for t1 seems to be unable to revert
52370 #       changes made by the failing statement.
52371 SET @@session.sql_mode = '';
52372 SET AUTOCOMMIT= 1;
52373 DELETE FROM t1 WHERE f_charbig = 'was inserted';
52374 COMMIT WORK;
52375 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
52376         
52377 # check special-1 success:      1
52378 UPDATE t1 SET f_charbig = '';
52379         
52380 # check special-2 success:      1
52381 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
52382 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
52383 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
52384 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52385 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52386 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52387 'just inserted' FROM t0_template
52388 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52389 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
52390 BEGIN
52391 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52392 f_charbig = 'updated by trigger'
52393       WHERE f_int1 = new.f_int1;
52394 END|
52395 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52396 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
52397 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52398         
52399 # check trigger-1 success:      1
52400 DROP TRIGGER trg_1;
52401 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52402 f_int2 = CAST(f_char1 AS SIGNED INT),
52403 f_charbig = 'just inserted'
52404    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52405 DELETE FROM t0_aux
52406 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52407 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52408 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52409 'just inserted' FROM t0_template
52410 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52411 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
52412 BEGIN
52413 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52414 f_charbig = 'updated by trigger'
52415       WHERE f_int1 = new.f_int1;
52416 END|
52417 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52418 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
52419 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52420         
52421 # check trigger-2 success:      1
52422 DROP TRIGGER trg_1;
52423 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52424 f_int2 = CAST(f_char1 AS SIGNED INT),
52425 f_charbig = 'just inserted'
52426    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52427 DELETE FROM t0_aux
52428 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52429 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52430 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52431 'just inserted' FROM t0_template
52432 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52433 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
52434 BEGIN
52435 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52436 f_charbig = 'updated by trigger'
52437       WHERE f_int1 = new.f_int1;
52438 END|
52439 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
52440 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52441         
52442 # check trigger-3 success:      1
52443 DROP TRIGGER trg_1;
52444 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52445 f_int2 = CAST(f_char1 AS SIGNED INT),
52446 f_charbig = 'just inserted'
52447    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52448 DELETE FROM t0_aux
52449 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52450 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52451 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52452 'just inserted' FROM t0_template
52453 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52454 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
52455 BEGIN
52456 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52457 f_charbig = 'updated by trigger'
52458       WHERE f_int1 = - old.f_int1;
52459 END|
52460 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
52461 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52462         
52463 # check trigger-4 success:      1
52464 DROP TRIGGER trg_1;
52465 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52466 f_int2 = CAST(f_char1 AS SIGNED INT),
52467 f_charbig = 'just inserted'
52468    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52469 DELETE FROM t0_aux
52470 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52471 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52472 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52473 'just inserted' FROM t0_template
52474 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52475 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
52476 BEGIN
52477 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52478 f_charbig = 'updated by trigger'
52479       WHERE f_int1 = new.f_int1;
52480 END|
52481 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
52482 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52483         
52484 # check trigger-5 success:      1
52485 DROP TRIGGER trg_1;
52486 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52487 f_int2 = CAST(f_char1 AS SIGNED INT),
52488 f_charbig = 'just inserted'
52489    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52490 DELETE FROM t0_aux
52491 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52492 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52493 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52494 'just inserted' FROM t0_template
52495 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52496 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
52497 BEGIN
52498 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52499 f_charbig = 'updated by trigger'
52500       WHERE f_int1 = - old.f_int1;
52501 END|
52502 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
52503 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52504         
52505 # check trigger-6 success:      1
52506 DROP TRIGGER trg_1;
52507 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52508 f_int2 = CAST(f_char1 AS SIGNED INT),
52509 f_charbig = 'just inserted'
52510    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52511 DELETE FROM t0_aux
52512 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52513 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52514 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52515 'just inserted' FROM t0_template
52516 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52517 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
52518 BEGIN
52519 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52520 f_charbig = 'updated by trigger'
52521       WHERE f_int1 = - old.f_int1;
52522 END|
52523 DELETE FROM t0_aux
52524 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52525         
52526 # check trigger-7 success:      1
52527 DROP TRIGGER trg_1;
52528 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52529 f_int2 = CAST(f_char1 AS SIGNED INT),
52530 f_charbig = 'just inserted'
52531    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52532 DELETE FROM t0_aux
52533 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52534 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52535 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52536 'just inserted' FROM t0_template
52537 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52538 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
52539 BEGIN
52540 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52541 f_charbig = 'updated by trigger'
52542       WHERE f_int1 = - old.f_int1;
52543 END|
52544 DELETE FROM t0_aux
52545 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52546         
52547 # check trigger-8 success:      1
52548 DROP TRIGGER trg_1;
52549 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52550 f_int2 = CAST(f_char1 AS SIGNED INT),
52551 f_charbig = 'just inserted'
52552    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52553 DELETE FROM t0_aux
52554 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52555 DELETE FROM t1
52556 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52557 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
52558 BEGIN
52559 SET new.f_int1 = old.f_int1 + @max_row,
52560 new.f_int2 = old.f_int2 - @max_row,
52561 new.f_charbig = '####updated per update trigger####';
52562 END|
52563 UPDATE t1
52564 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
52565 f_charbig = '####updated per update statement itself####';
52566         
52567 # check trigger-9 success:      1
52568 DROP TRIGGER trg_2;
52569 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52570 f_int2 = CAST(f_char1 AS SIGNED INT),
52571 f_charbig = CONCAT('===',f_char1,'===');
52572 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
52573 BEGIN
52574 SET new.f_int1 = new.f_int1 + @max_row,
52575 new.f_int2 = new.f_int2 - @max_row,
52576 new.f_charbig = '####updated per update trigger####';
52577 END|
52578 UPDATE t1
52579 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
52580 f_charbig = '####updated per update statement itself####';
52581         
52582 # check trigger-10 success:     1
52583 DROP TRIGGER trg_2;
52584 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52585 f_int2 = CAST(f_char1 AS SIGNED INT),
52586 f_charbig = CONCAT('===',f_char1,'===');
52587 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
52588 BEGIN
52589 SET new.f_int1 = @my_max1 + @counter,
52590 new.f_int2 = @my_min2 - @counter,
52591 new.f_charbig = '####updated per insert trigger####';
52592 SET @counter = @counter + 1;
52593 END|
52594 SET @counter = 1;
52595 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
52596 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52597 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
52598 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
52599 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
52600 ORDER BY f_int1;
52601 DROP TRIGGER trg_3;
52602         
52603 # check trigger-11 success:     1
52604 DELETE FROM t1
52605 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
52606 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
52607 AND f_charbig = '####updated per insert trigger####';
52608 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
52609 BEGIN
52610 SET new.f_int1 = @my_max1 + @counter,
52611 new.f_int2 = @my_min2 - @counter,
52612 new.f_charbig = '####updated per insert trigger####';
52613 SET @counter = @counter + 1;
52614 END|
52615 SET @counter = 1;
52616 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
52617 INSERT INTO t1 (f_char1, f_char2, f_charbig)
52618 SELECT CAST(f_int1 AS CHAR),
52619 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
52620 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
52621 ORDER BY f_int1;
52622 DROP TRIGGER trg_3;
52623         
52624 # check trigger-12 success:     1
52625 DELETE FROM t1
52626 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
52627 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
52628 AND f_charbig = '####updated per insert trigger####';
52629 ANALYZE  TABLE t1;
52630 Table   Op      Msg_type        Msg_text
52631 test.t1 analyze status  OK
52632 CHECK    TABLE t1 EXTENDED;
52633 Table   Op      Msg_type        Msg_text
52634 test.t1 check   status  OK
52635 CHECKSUM TABLE t1 EXTENDED;
52636 Table   Checksum
52637 test.t1 <some_value>
52638 OPTIMIZE TABLE t1;
52639 Table   Op      Msg_type        Msg_text
52640 test.t1 optimize        status  OK
52641 # check layout success:    1
52642 REPAIR   TABLE t1 EXTENDED;
52643 Table   Op      Msg_type        Msg_text
52644 test.t1 repair  status  OK
52645 # check layout success:    1
52646 TRUNCATE t1;
52647         
52648 # check TRUNCATE success:       1
52649 # check layout success:    1
52650 # End usability test (inc/partition_check.inc)
52651 DROP TABLE t1;
52652 CREATE TABLE t1 (
52653 f_int1 INTEGER,
52654 f_int2 INTEGER,
52655 f_char1 CHAR(20),
52656 f_char2 CHAR(20),
52657 f_charbig VARCHAR(1000)
52660 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
52661 (PARTITION part_1 VALUES LESS THAN (0),
52662 PARTITION part_2 VALUES LESS THAN (5),
52663 PARTITION part_3 VALUES LESS THAN (10),
52664 PARTITION part_4 VALUES LESS THAN (2147483646));
52665 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
52666 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
52667 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
52668 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
52669 Table   Op      Msg_type        Msg_text
52670 test.t1 optimize        error   Error in list of partitions to test.t1
52671 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
52672 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
52673 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
52674 # Start usability test (inc/partition_check.inc)
52675 create_command
52676 SHOW CREATE TABLE t1;
52677 Table   Create Table
52678 t1      CREATE TABLE `t1` (
52679   `f_int1` int(11) DEFAULT NULL,
52680   `f_int2` int(11) DEFAULT NULL,
52681   `f_char1` char(20) DEFAULT NULL,
52682   `f_char2` char(20) DEFAULT NULL,
52683   `f_charbig` varchar(1000) DEFAULT NULL
52684 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
52685 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
52686 SUBPARTITION BY HASH (f_int1)
52687 SUBPARTITIONS 2
52688 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
52689  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
52690  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
52691  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
52693 unified filelist
52694 t1#P#part_1#SP#part_1sp0.MYD
52695 t1#P#part_1#SP#part_1sp0.MYI
52696 t1#P#part_1#SP#part_1sp1.MYD
52697 t1#P#part_1#SP#part_1sp1.MYI
52698 t1#P#part_2#SP#part_2sp0.MYD
52699 t1#P#part_2#SP#part_2sp0.MYI
52700 t1#P#part_2#SP#part_2sp1.MYD
52701 t1#P#part_2#SP#part_2sp1.MYI
52702 t1#P#part_3#SP#part_3sp0.MYD
52703 t1#P#part_3#SP#part_3sp0.MYI
52704 t1#P#part_3#SP#part_3sp1.MYD
52705 t1#P#part_3#SP#part_3sp1.MYI
52706 t1#P#part_4#SP#part_4sp0.MYD
52707 t1#P#part_4#SP#part_4sp0.MYI
52708 t1#P#part_4#SP#part_4sp1.MYD
52709 t1#P#part_4#SP#part_4sp1.MYI
52710 t1.frm
52711 t1.par
52713 # check prerequisites-1 success:    1
52714 # check COUNT(*) success:    1
52715 # check MIN/MAX(f_int1) success:    1
52716 # check MIN/MAX(f_int2) success:    1
52717 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52718 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
52719 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
52720 WHERE f_int1 IN (2,3);
52721 # check prerequisites-3 success:    1
52722 DELETE FROM t1 WHERE f_charbig = 'delete me';
52723 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
52724 # check read via f_int1 success: 1
52725 # check read via f_int2 success: 1
52726         
52727 # check multiple-1 success:     1
52728 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
52729         
52730 # check multiple-2 success:     1
52731 INSERT INTO t1 SELECT * FROM t0_template
52732 WHERE MOD(f_int1,3) = 0;
52733         
52734 # check multiple-3 success:     1
52735 UPDATE t1 SET f_int1 = f_int1 + @max_row
52736 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
52737 AND @max_row_div2 + @max_row_div4;
52738         
52739 # check multiple-4 success:     1
52740 DELETE FROM t1
52741 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
52742 AND @max_row_div2 + @max_row_div4 + @max_row;
52743         
52744 # check multiple-5 success:     1
52745 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
52746 INSERT INTO t1
52747 SET f_int1 = @cur_value , f_int2 = @cur_value,
52748 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
52749 f_charbig = '#SINGLE#';
52750         
52751 # check single-1 success:       1
52752 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
52753 INSERT INTO t1
52754 SET f_int1 = @cur_value , f_int2 = @cur_value,
52755 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
52756 f_charbig = '#SINGLE#';
52757         
52758 # check single-2 success:       1
52759 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
52760 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
52761 UPDATE t1 SET f_int1 = @cur_value2
52762 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
52763         
52764 # check single-3 success:       1
52765 SET @cur_value1= -1;
52766 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
52767 UPDATE t1 SET f_int1 = @cur_value1
52768 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
52769         
52770 # check single-4 success:       1
52771 SELECT MAX(f_int1) INTO @cur_value FROM t1;
52772 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
52773         
52774 # check single-5 success:       1
52775 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
52776         
52777 # check single-6 success:       1
52778 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
52779         
52780 # check single-7 success:       1
52781 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
52782 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
52783 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
52784 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
52785 f_charbig = '#NULL#';
52786 INSERT INTO t1
52787 SET f_int1 = NULL , f_int2 = -@max_row,
52788 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
52789 f_charbig = '#NULL#';
52790 # check null success:    1
52791         
52792 # check null-1 success:         1
52793 UPDATE t1 SET f_int1 = -@max_row
52794 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
52795 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
52796         
52797 # check null-2 success:         1
52798 UPDATE t1 SET f_int1 = NULL
52799 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
52800 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
52801         
52802 # check null-3 success:         1
52803 DELETE FROM t1
52804 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
52805 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
52806         
52807 # check null-4 success:         1
52808 DELETE FROM t1
52809 WHERE f_int1 = 0 AND f_int2 = 0
52810 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
52811 AND f_charbig = '#NULL#';
52812 SET AUTOCOMMIT= 0;
52813 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52814 SELECT f_int1, f_int1, '', '', 'was inserted'
52815 FROM t0_template source_tab
52816 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
52817         
52818 # check transactions-1 success:         1
52819 COMMIT WORK;
52820         
52821 # check transactions-2 success:         1
52822 ROLLBACK WORK;
52823         
52824 # check transactions-3 success:         1
52825 DELETE FROM t1 WHERE f_charbig = 'was inserted';
52826 COMMIT WORK;
52827 ROLLBACK WORK;
52828         
52829 # check transactions-4 success:         1
52830 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52831 SELECT f_int1, f_int1, '', '', 'was inserted'
52832 FROM t0_template source_tab
52833 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
52834         
52835 # check transactions-5 success:         1
52836 ROLLBACK WORK;
52837 Warnings:
52838 Warning 1196    Some non-transactional changed tables couldn't be rolled back
52839         
52840 # check transactions-6 success:         1
52841 # INFO: Storage engine used for t1 seems to be not transactional.
52842 COMMIT;
52843         
52844 # check transactions-7 success:         1
52845 DELETE FROM t1 WHERE f_charbig = 'was inserted';
52846 COMMIT WORK;
52847 SET @@session.sql_mode = 'traditional';
52848 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
52849 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52850 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
52851 '', '', 'was inserted' FROM t0_template
52852 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
52853 ERROR 22012: Division by 0
52854 COMMIT;
52855         
52856 # check transactions-8 success:         1
52857 # INFO: Storage engine used for t1 seems to be unable to revert
52858 #       changes made by the failing statement.
52859 SET @@session.sql_mode = '';
52860 SET AUTOCOMMIT= 1;
52861 DELETE FROM t1 WHERE f_charbig = 'was inserted';
52862 COMMIT WORK;
52863 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
52864         
52865 # check special-1 success:      1
52866 UPDATE t1 SET f_charbig = '';
52867         
52868 # check special-2 success:      1
52869 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
52870 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
52871 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
52872 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52873 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52874 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52875 'just inserted' FROM t0_template
52876 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52877 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
52878 BEGIN
52879 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52880 f_charbig = 'updated by trigger'
52881       WHERE f_int1 = new.f_int1;
52882 END|
52883 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52884 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
52885 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52886         
52887 # check trigger-1 success:      1
52888 DROP TRIGGER trg_1;
52889 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52890 f_int2 = CAST(f_char1 AS SIGNED INT),
52891 f_charbig = 'just inserted'
52892    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52893 DELETE FROM t0_aux
52894 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52895 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52896 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52897 'just inserted' FROM t0_template
52898 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52899 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
52900 BEGIN
52901 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52902 f_charbig = 'updated by trigger'
52903       WHERE f_int1 = new.f_int1;
52904 END|
52905 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52906 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
52907 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52908         
52909 # check trigger-2 success:      1
52910 DROP TRIGGER trg_1;
52911 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52912 f_int2 = CAST(f_char1 AS SIGNED INT),
52913 f_charbig = 'just inserted'
52914    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52915 DELETE FROM t0_aux
52916 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52917 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52918 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52919 'just inserted' FROM t0_template
52920 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52921 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
52922 BEGIN
52923 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52924 f_charbig = 'updated by trigger'
52925       WHERE f_int1 = new.f_int1;
52926 END|
52927 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
52928 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52929         
52930 # check trigger-3 success:      1
52931 DROP TRIGGER trg_1;
52932 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52933 f_int2 = CAST(f_char1 AS SIGNED INT),
52934 f_charbig = 'just inserted'
52935    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52936 DELETE FROM t0_aux
52937 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52938 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52939 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52940 'just inserted' FROM t0_template
52941 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52942 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
52943 BEGIN
52944 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52945 f_charbig = 'updated by trigger'
52946       WHERE f_int1 = - old.f_int1;
52947 END|
52948 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
52949 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52950         
52951 # check trigger-4 success:      1
52952 DROP TRIGGER trg_1;
52953 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52954 f_int2 = CAST(f_char1 AS SIGNED INT),
52955 f_charbig = 'just inserted'
52956    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52957 DELETE FROM t0_aux
52958 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52959 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52960 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52961 'just inserted' FROM t0_template
52962 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52963 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
52964 BEGIN
52965 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52966 f_charbig = 'updated by trigger'
52967       WHERE f_int1 = new.f_int1;
52968 END|
52969 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
52970 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52971         
52972 # check trigger-5 success:      1
52973 DROP TRIGGER trg_1;
52974 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52975 f_int2 = CAST(f_char1 AS SIGNED INT),
52976 f_charbig = 'just inserted'
52977    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52978 DELETE FROM t0_aux
52979 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52980 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52981 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52982 'just inserted' FROM t0_template
52983 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52984 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
52985 BEGIN
52986 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52987 f_charbig = 'updated by trigger'
52988       WHERE f_int1 = - old.f_int1;
52989 END|
52990 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
52991 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52992         
52993 # check trigger-6 success:      1
52994 DROP TRIGGER trg_1;
52995 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52996 f_int2 = CAST(f_char1 AS SIGNED INT),
52997 f_charbig = 'just inserted'
52998    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52999 DELETE FROM t0_aux
53000 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53001 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53002 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53003 'just inserted' FROM t0_template
53004 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53005 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
53006 BEGIN
53007 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53008 f_charbig = 'updated by trigger'
53009       WHERE f_int1 = - old.f_int1;
53010 END|
53011 DELETE FROM t0_aux
53012 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53013         
53014 # check trigger-7 success:      1
53015 DROP TRIGGER trg_1;
53016 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53017 f_int2 = CAST(f_char1 AS SIGNED INT),
53018 f_charbig = 'just inserted'
53019    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53020 DELETE FROM t0_aux
53021 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53022 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53023 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53024 'just inserted' FROM t0_template
53025 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53026 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
53027 BEGIN
53028 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53029 f_charbig = 'updated by trigger'
53030       WHERE f_int1 = - old.f_int1;
53031 END|
53032 DELETE FROM t0_aux
53033 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53034         
53035 # check trigger-8 success:      1
53036 DROP TRIGGER trg_1;
53037 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53038 f_int2 = CAST(f_char1 AS SIGNED INT),
53039 f_charbig = 'just inserted'
53040    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53041 DELETE FROM t0_aux
53042 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53043 DELETE FROM t1
53044 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53045 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
53046 BEGIN
53047 SET new.f_int1 = old.f_int1 + @max_row,
53048 new.f_int2 = old.f_int2 - @max_row,
53049 new.f_charbig = '####updated per update trigger####';
53050 END|
53051 UPDATE t1
53052 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
53053 f_charbig = '####updated per update statement itself####';
53054         
53055 # check trigger-9 success:      1
53056 DROP TRIGGER trg_2;
53057 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53058 f_int2 = CAST(f_char1 AS SIGNED INT),
53059 f_charbig = CONCAT('===',f_char1,'===');
53060 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
53061 BEGIN
53062 SET new.f_int1 = new.f_int1 + @max_row,
53063 new.f_int2 = new.f_int2 - @max_row,
53064 new.f_charbig = '####updated per update trigger####';
53065 END|
53066 UPDATE t1
53067 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
53068 f_charbig = '####updated per update statement itself####';
53069         
53070 # check trigger-10 success:     1
53071 DROP TRIGGER trg_2;
53072 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53073 f_int2 = CAST(f_char1 AS SIGNED INT),
53074 f_charbig = CONCAT('===',f_char1,'===');
53075 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
53076 BEGIN
53077 SET new.f_int1 = @my_max1 + @counter,
53078 new.f_int2 = @my_min2 - @counter,
53079 new.f_charbig = '####updated per insert trigger####';
53080 SET @counter = @counter + 1;
53081 END|
53082 SET @counter = 1;
53083 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
53084 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53085 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
53086 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
53087 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
53088 ORDER BY f_int1;
53089 DROP TRIGGER trg_3;
53090         
53091 # check trigger-11 success:     1
53092 DELETE FROM t1
53093 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
53094 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
53095 AND f_charbig = '####updated per insert trigger####';
53096 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
53097 BEGIN
53098 SET new.f_int1 = @my_max1 + @counter,
53099 new.f_int2 = @my_min2 - @counter,
53100 new.f_charbig = '####updated per insert trigger####';
53101 SET @counter = @counter + 1;
53102 END|
53103 SET @counter = 1;
53104 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
53105 INSERT INTO t1 (f_char1, f_char2, f_charbig)
53106 SELECT CAST(f_int1 AS CHAR),
53107 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
53108 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
53109 ORDER BY f_int1;
53110 DROP TRIGGER trg_3;
53111         
53112 # check trigger-12 success:     1
53113 DELETE FROM t1
53114 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
53115 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
53116 AND f_charbig = '####updated per insert trigger####';
53117 ANALYZE  TABLE t1;
53118 Table   Op      Msg_type        Msg_text
53119 test.t1 analyze status  OK
53120 CHECK    TABLE t1 EXTENDED;
53121 Table   Op      Msg_type        Msg_text
53122 test.t1 check   status  OK
53123 CHECKSUM TABLE t1 EXTENDED;
53124 Table   Checksum
53125 test.t1 <some_value>
53126 OPTIMIZE TABLE t1;
53127 Table   Op      Msg_type        Msg_text
53128 test.t1 optimize        status  OK
53129 # check layout success:    1
53130 REPAIR   TABLE t1 EXTENDED;
53131 Table   Op      Msg_type        Msg_text
53132 test.t1 repair  status  OK
53133 # check layout success:    1
53134 TRUNCATE t1;
53135         
53136 # check TRUNCATE success:       1
53137 # check layout success:    1
53138 # End usability test (inc/partition_check.inc)
53139 DROP TABLE t1;
53140 CREATE TABLE t1 (
53141 f_int1 INTEGER,
53142 f_int2 INTEGER,
53143 f_char1 CHAR(20),
53144 f_char2 CHAR(20),
53145 f_charbig VARCHAR(1000)
53148 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
53149 (PARTITION part_1 VALUES LESS THAN (0)
53150 (SUBPARTITION subpart11, SUBPARTITION subpart12),
53151 PARTITION part_2 VALUES LESS THAN (5)
53152 (SUBPARTITION subpart21, SUBPARTITION subpart22),
53153 PARTITION part_3 VALUES LESS THAN (10)
53154 (SUBPARTITION subpart31, SUBPARTITION subpart32),
53155 PARTITION part_4 VALUES LESS THAN (2147483646)
53156 (SUBPARTITION subpart41, SUBPARTITION subpart42));
53157 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
53158 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
53159 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
53160 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
53161 Table   Op      Msg_type        Msg_text
53162 test.t1 optimize        error   Error in list of partitions to test.t1
53163 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
53164 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
53165 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
53166 # Start usability test (inc/partition_check.inc)
53167 create_command
53168 SHOW CREATE TABLE t1;
53169 Table   Create Table
53170 t1      CREATE TABLE `t1` (
53171   `f_int1` int(11) DEFAULT NULL,
53172   `f_int2` int(11) DEFAULT NULL,
53173   `f_char1` char(20) DEFAULT NULL,
53174   `f_char2` char(20) DEFAULT NULL,
53175   `f_charbig` varchar(1000) DEFAULT NULL
53176 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
53177 /*!50100 PARTITION BY RANGE (f_int1)
53178 SUBPARTITION BY KEY (f_int1)
53179 (PARTITION part_1 VALUES LESS THAN (0)
53180  (SUBPARTITION subpart11 ENGINE = MyISAM,
53181   SUBPARTITION subpart12 ENGINE = MyISAM),
53182  PARTITION part_2 VALUES LESS THAN (5)
53183  (SUBPARTITION subpart21 ENGINE = MyISAM,
53184   SUBPARTITION subpart22 ENGINE = MyISAM),
53185  PARTITION part_3 VALUES LESS THAN (10)
53186  (SUBPARTITION subpart31 ENGINE = MyISAM,
53187   SUBPARTITION subpart32 ENGINE = MyISAM),
53188  PARTITION part_4 VALUES LESS THAN (2147483646)
53189  (SUBPARTITION subpart41 ENGINE = MyISAM,
53190   SUBPARTITION subpart42 ENGINE = MyISAM)) */
53192 unified filelist
53193 t1#P#part_1#SP#subpart11.MYD
53194 t1#P#part_1#SP#subpart11.MYI
53195 t1#P#part_1#SP#subpart12.MYD
53196 t1#P#part_1#SP#subpart12.MYI
53197 t1#P#part_2#SP#subpart21.MYD
53198 t1#P#part_2#SP#subpart21.MYI
53199 t1#P#part_2#SP#subpart22.MYD
53200 t1#P#part_2#SP#subpart22.MYI
53201 t1#P#part_3#SP#subpart31.MYD
53202 t1#P#part_3#SP#subpart31.MYI
53203 t1#P#part_3#SP#subpart32.MYD
53204 t1#P#part_3#SP#subpart32.MYI
53205 t1#P#part_4#SP#subpart41.MYD
53206 t1#P#part_4#SP#subpart41.MYI
53207 t1#P#part_4#SP#subpart42.MYD
53208 t1#P#part_4#SP#subpart42.MYI
53209 t1.frm
53210 t1.par
53212 # check prerequisites-1 success:    1
53213 # check COUNT(*) success:    1
53214 # check MIN/MAX(f_int1) success:    1
53215 # check MIN/MAX(f_int2) success:    1
53216 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53217 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
53218 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
53219 WHERE f_int1 IN (2,3);
53220 # check prerequisites-3 success:    1
53221 DELETE FROM t1 WHERE f_charbig = 'delete me';
53222 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
53223 # check read via f_int1 success: 1
53224 # check read via f_int2 success: 1
53225         
53226 # check multiple-1 success:     1
53227 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
53228         
53229 # check multiple-2 success:     1
53230 INSERT INTO t1 SELECT * FROM t0_template
53231 WHERE MOD(f_int1,3) = 0;
53232         
53233 # check multiple-3 success:     1
53234 UPDATE t1 SET f_int1 = f_int1 + @max_row
53235 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
53236 AND @max_row_div2 + @max_row_div4;
53237         
53238 # check multiple-4 success:     1
53239 DELETE FROM t1
53240 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
53241 AND @max_row_div2 + @max_row_div4 + @max_row;
53242         
53243 # check multiple-5 success:     1
53244 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
53245 INSERT INTO t1
53246 SET f_int1 = @cur_value , f_int2 = @cur_value,
53247 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
53248 f_charbig = '#SINGLE#';
53249         
53250 # check single-1 success:       1
53251 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
53252 INSERT INTO t1
53253 SET f_int1 = @cur_value , f_int2 = @cur_value,
53254 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
53255 f_charbig = '#SINGLE#';
53256         
53257 # check single-2 success:       1
53258 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
53259 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
53260 UPDATE t1 SET f_int1 = @cur_value2
53261 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
53262         
53263 # check single-3 success:       1
53264 SET @cur_value1= -1;
53265 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
53266 UPDATE t1 SET f_int1 = @cur_value1
53267 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
53268         
53269 # check single-4 success:       1
53270 SELECT MAX(f_int1) INTO @cur_value FROM t1;
53271 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
53272         
53273 # check single-5 success:       1
53274 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
53275         
53276 # check single-6 success:       1
53277 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
53278 ERROR HY000: Table has no partition for value 2147483647
53279 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
53280 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
53281 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
53282 f_charbig = '#NULL#';
53283 INSERT INTO t1
53284 SET f_int1 = NULL , f_int2 = -@max_row,
53285 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
53286 f_charbig = '#NULL#';
53287 # check null success:    1
53288         
53289 # check null-1 success:         1
53290 UPDATE t1 SET f_int1 = -@max_row
53291 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
53292 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
53293         
53294 # check null-2 success:         1
53295 UPDATE t1 SET f_int1 = NULL
53296 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
53297 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
53298         
53299 # check null-3 success:         1
53300 DELETE FROM t1
53301 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
53302 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
53303         
53304 # check null-4 success:         1
53305 DELETE FROM t1
53306 WHERE f_int1 = 0 AND f_int2 = 0
53307 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
53308 AND f_charbig = '#NULL#';
53309 SET AUTOCOMMIT= 0;
53310 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53311 SELECT f_int1, f_int1, '', '', 'was inserted'
53312 FROM t0_template source_tab
53313 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
53314         
53315 # check transactions-1 success:         1
53316 COMMIT WORK;
53317         
53318 # check transactions-2 success:         1
53319 ROLLBACK WORK;
53320         
53321 # check transactions-3 success:         1
53322 DELETE FROM t1 WHERE f_charbig = 'was inserted';
53323 COMMIT WORK;
53324 ROLLBACK WORK;
53325         
53326 # check transactions-4 success:         1
53327 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53328 SELECT f_int1, f_int1, '', '', 'was inserted'
53329 FROM t0_template source_tab
53330 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
53331         
53332 # check transactions-5 success:         1
53333 ROLLBACK WORK;
53334 Warnings:
53335 Warning 1196    Some non-transactional changed tables couldn't be rolled back
53336         
53337 # check transactions-6 success:         1
53338 # INFO: Storage engine used for t1 seems to be not transactional.
53339 COMMIT;
53340         
53341 # check transactions-7 success:         1
53342 DELETE FROM t1 WHERE f_charbig = 'was inserted';
53343 COMMIT WORK;
53344 SET @@session.sql_mode = 'traditional';
53345 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
53346 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53347 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
53348 '', '', 'was inserted' FROM t0_template
53349 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
53350 ERROR 22012: Division by 0
53351 COMMIT;
53352         
53353 # check transactions-8 success:         1
53354 # INFO: Storage engine used for t1 seems to be unable to revert
53355 #       changes made by the failing statement.
53356 SET @@session.sql_mode = '';
53357 SET AUTOCOMMIT= 1;
53358 DELETE FROM t1 WHERE f_charbig = 'was inserted';
53359 COMMIT WORK;
53360 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
53361         
53362 # check special-1 success:      1
53363 UPDATE t1 SET f_charbig = '';
53364         
53365 # check special-2 success:      1
53366 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
53367 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
53368 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
53369 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53370 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53371 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53372 'just inserted' FROM t0_template
53373 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53374 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
53375 BEGIN
53376 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53377 f_charbig = 'updated by trigger'
53378       WHERE f_int1 = new.f_int1;
53379 END|
53380 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53381 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
53382 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53383         
53384 # check trigger-1 success:      1
53385 DROP TRIGGER trg_1;
53386 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53387 f_int2 = CAST(f_char1 AS SIGNED INT),
53388 f_charbig = 'just inserted'
53389    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53390 DELETE FROM t0_aux
53391 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53392 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53393 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53394 'just inserted' FROM t0_template
53395 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53396 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
53397 BEGIN
53398 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53399 f_charbig = 'updated by trigger'
53400       WHERE f_int1 = new.f_int1;
53401 END|
53402 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53403 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
53404 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53405         
53406 # check trigger-2 success:      1
53407 DROP TRIGGER trg_1;
53408 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53409 f_int2 = CAST(f_char1 AS SIGNED INT),
53410 f_charbig = 'just inserted'
53411    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53412 DELETE FROM t0_aux
53413 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53414 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53415 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53416 'just inserted' FROM t0_template
53417 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53418 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
53419 BEGIN
53420 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53421 f_charbig = 'updated by trigger'
53422       WHERE f_int1 = new.f_int1;
53423 END|
53424 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
53425 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53426         
53427 # check trigger-3 success:      1
53428 DROP TRIGGER trg_1;
53429 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53430 f_int2 = CAST(f_char1 AS SIGNED INT),
53431 f_charbig = 'just inserted'
53432    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53433 DELETE FROM t0_aux
53434 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53435 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53436 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53437 'just inserted' FROM t0_template
53438 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53439 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
53440 BEGIN
53441 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53442 f_charbig = 'updated by trigger'
53443       WHERE f_int1 = - old.f_int1;
53444 END|
53445 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
53446 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53447         
53448 # check trigger-4 success:      1
53449 DROP TRIGGER trg_1;
53450 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53451 f_int2 = CAST(f_char1 AS SIGNED INT),
53452 f_charbig = 'just inserted'
53453    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53454 DELETE FROM t0_aux
53455 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53456 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53457 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53458 'just inserted' FROM t0_template
53459 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53460 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
53461 BEGIN
53462 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53463 f_charbig = 'updated by trigger'
53464       WHERE f_int1 = new.f_int1;
53465 END|
53466 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
53467 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53468         
53469 # check trigger-5 success:      1
53470 DROP TRIGGER trg_1;
53471 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53472 f_int2 = CAST(f_char1 AS SIGNED INT),
53473 f_charbig = 'just inserted'
53474    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53475 DELETE FROM t0_aux
53476 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53477 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53478 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53479 'just inserted' FROM t0_template
53480 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53481 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
53482 BEGIN
53483 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53484 f_charbig = 'updated by trigger'
53485       WHERE f_int1 = - old.f_int1;
53486 END|
53487 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
53488 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53489         
53490 # check trigger-6 success:      1
53491 DROP TRIGGER trg_1;
53492 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53493 f_int2 = CAST(f_char1 AS SIGNED INT),
53494 f_charbig = 'just inserted'
53495    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53496 DELETE FROM t0_aux
53497 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53498 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53499 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53500 'just inserted' FROM t0_template
53501 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53502 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
53503 BEGIN
53504 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53505 f_charbig = 'updated by trigger'
53506       WHERE f_int1 = - old.f_int1;
53507 END|
53508 DELETE FROM t0_aux
53509 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53510         
53511 # check trigger-7 success:      1
53512 DROP TRIGGER trg_1;
53513 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53514 f_int2 = CAST(f_char1 AS SIGNED INT),
53515 f_charbig = 'just inserted'
53516    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53517 DELETE FROM t0_aux
53518 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53519 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53520 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53521 'just inserted' FROM t0_template
53522 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53523 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
53524 BEGIN
53525 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53526 f_charbig = 'updated by trigger'
53527       WHERE f_int1 = - old.f_int1;
53528 END|
53529 DELETE FROM t0_aux
53530 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53531         
53532 # check trigger-8 success:      1
53533 DROP TRIGGER trg_1;
53534 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53535 f_int2 = CAST(f_char1 AS SIGNED INT),
53536 f_charbig = 'just inserted'
53537    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53538 DELETE FROM t0_aux
53539 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53540 DELETE FROM t1
53541 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53542 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
53543 BEGIN
53544 SET new.f_int1 = old.f_int1 + @max_row,
53545 new.f_int2 = old.f_int2 - @max_row,
53546 new.f_charbig = '####updated per update trigger####';
53547 END|
53548 UPDATE t1
53549 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
53550 f_charbig = '####updated per update statement itself####';
53551         
53552 # check trigger-9 success:      1
53553 DROP TRIGGER trg_2;
53554 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53555 f_int2 = CAST(f_char1 AS SIGNED INT),
53556 f_charbig = CONCAT('===',f_char1,'===');
53557 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
53558 BEGIN
53559 SET new.f_int1 = new.f_int1 + @max_row,
53560 new.f_int2 = new.f_int2 - @max_row,
53561 new.f_charbig = '####updated per update trigger####';
53562 END|
53563 UPDATE t1
53564 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
53565 f_charbig = '####updated per update statement itself####';
53566         
53567 # check trigger-10 success:     1
53568 DROP TRIGGER trg_2;
53569 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53570 f_int2 = CAST(f_char1 AS SIGNED INT),
53571 f_charbig = CONCAT('===',f_char1,'===');
53572 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
53573 BEGIN
53574 SET new.f_int1 = @my_max1 + @counter,
53575 new.f_int2 = @my_min2 - @counter,
53576 new.f_charbig = '####updated per insert trigger####';
53577 SET @counter = @counter + 1;
53578 END|
53579 SET @counter = 1;
53580 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
53581 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53582 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
53583 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
53584 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
53585 ORDER BY f_int1;
53586 DROP TRIGGER trg_3;
53587         
53588 # check trigger-11 success:     1
53589 DELETE FROM t1
53590 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
53591 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
53592 AND f_charbig = '####updated per insert trigger####';
53593 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
53594 BEGIN
53595 SET new.f_int1 = @my_max1 + @counter,
53596 new.f_int2 = @my_min2 - @counter,
53597 new.f_charbig = '####updated per insert trigger####';
53598 SET @counter = @counter + 1;
53599 END|
53600 SET @counter = 1;
53601 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
53602 INSERT INTO t1 (f_char1, f_char2, f_charbig)
53603 SELECT CAST(f_int1 AS CHAR),
53604 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
53605 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
53606 ORDER BY f_int1;
53607 DROP TRIGGER trg_3;
53608         
53609 # check trigger-12 success:     1
53610 DELETE FROM t1
53611 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
53612 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
53613 AND f_charbig = '####updated per insert trigger####';
53614 ANALYZE  TABLE t1;
53615 Table   Op      Msg_type        Msg_text
53616 test.t1 analyze status  OK
53617 CHECK    TABLE t1 EXTENDED;
53618 Table   Op      Msg_type        Msg_text
53619 test.t1 check   status  OK
53620 CHECKSUM TABLE t1 EXTENDED;
53621 Table   Checksum
53622 test.t1 <some_value>
53623 OPTIMIZE TABLE t1;
53624 Table   Op      Msg_type        Msg_text
53625 test.t1 optimize        status  OK
53626 # check layout success:    1
53627 REPAIR   TABLE t1 EXTENDED;
53628 Table   Op      Msg_type        Msg_text
53629 test.t1 repair  status  OK
53630 # check layout success:    1
53631 TRUNCATE t1;
53632         
53633 # check TRUNCATE success:       1
53634 # check layout success:    1
53635 # End usability test (inc/partition_check.inc)
53636 DROP TABLE t1;
53637 CREATE TABLE t1 (
53638 f_int1 INTEGER,
53639 f_int2 INTEGER,
53640 f_char1 CHAR(20),
53641 f_char2 CHAR(20),
53642 f_charbig VARCHAR(1000)
53645 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
53646 (PARTITION part_1 VALUES IN (0)
53647 (SUBPARTITION sp11, SUBPARTITION sp12),
53648 PARTITION part_2 VALUES IN (1)
53649 (SUBPARTITION sp21, SUBPARTITION sp22),
53650 PARTITION part_3 VALUES IN (2)
53651 (SUBPARTITION sp31, SUBPARTITION sp32),
53652 PARTITION part_4 VALUES IN (NULL)
53653 (SUBPARTITION sp41, SUBPARTITION sp42));
53654 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
53655 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
53656 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
53657 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
53658 Table   Op      Msg_type        Msg_text
53659 test.t1 optimize        error   Error in list of partitions to test.t1
53660 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
53661 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
53662 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
53663 # Start usability test (inc/partition_check.inc)
53664 create_command
53665 SHOW CREATE TABLE t1;
53666 Table   Create Table
53667 t1      CREATE TABLE `t1` (
53668   `f_int1` int(11) DEFAULT NULL,
53669   `f_int2` int(11) DEFAULT NULL,
53670   `f_char1` char(20) DEFAULT NULL,
53671   `f_char2` char(20) DEFAULT NULL,
53672   `f_charbig` varchar(1000) DEFAULT NULL
53673 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
53674 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
53675 SUBPARTITION BY HASH (f_int1 + 1)
53676 (PARTITION part_1 VALUES IN (0)
53677  (SUBPARTITION sp11 ENGINE = MyISAM,
53678   SUBPARTITION sp12 ENGINE = MyISAM),
53679  PARTITION part_2 VALUES IN (1)
53680  (SUBPARTITION sp21 ENGINE = MyISAM,
53681   SUBPARTITION sp22 ENGINE = MyISAM),
53682  PARTITION part_3 VALUES IN (2)
53683  (SUBPARTITION sp31 ENGINE = MyISAM,
53684   SUBPARTITION sp32 ENGINE = MyISAM),
53685  PARTITION part_4 VALUES IN (NULL)
53686  (SUBPARTITION sp41 ENGINE = MyISAM,
53687   SUBPARTITION sp42 ENGINE = MyISAM)) */
53689 unified filelist
53690 t1#P#part_1#SP#sp11.MYD
53691 t1#P#part_1#SP#sp11.MYI
53692 t1#P#part_1#SP#sp12.MYD
53693 t1#P#part_1#SP#sp12.MYI
53694 t1#P#part_2#SP#sp21.MYD
53695 t1#P#part_2#SP#sp21.MYI
53696 t1#P#part_2#SP#sp22.MYD
53697 t1#P#part_2#SP#sp22.MYI
53698 t1#P#part_3#SP#sp31.MYD
53699 t1#P#part_3#SP#sp31.MYI
53700 t1#P#part_3#SP#sp32.MYD
53701 t1#P#part_3#SP#sp32.MYI
53702 t1#P#part_4#SP#sp41.MYD
53703 t1#P#part_4#SP#sp41.MYI
53704 t1#P#part_4#SP#sp42.MYD
53705 t1#P#part_4#SP#sp42.MYI
53706 t1.frm
53707 t1.par
53709 # check prerequisites-1 success:    1
53710 # check COUNT(*) success:    1
53711 # check MIN/MAX(f_int1) success:    1
53712 # check MIN/MAX(f_int2) success:    1
53713 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53714 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
53715 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
53716 WHERE f_int1 IN (2,3);
53717 # check prerequisites-3 success:    1
53718 DELETE FROM t1 WHERE f_charbig = 'delete me';
53719 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
53720 # check read via f_int1 success: 1
53721 # check read via f_int2 success: 1
53722         
53723 # check multiple-1 success:     1
53724 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
53725         
53726 # check multiple-2 success:     1
53727 INSERT INTO t1 SELECT * FROM t0_template
53728 WHERE MOD(f_int1,3) = 0;
53729         
53730 # check multiple-3 success:     1
53731 UPDATE t1 SET f_int1 = f_int1 + @max_row
53732 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
53733 AND @max_row_div2 + @max_row_div4;
53734         
53735 # check multiple-4 success:     1
53736 DELETE FROM t1
53737 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
53738 AND @max_row_div2 + @max_row_div4 + @max_row;
53739         
53740 # check multiple-5 success:     1
53741 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
53742 INSERT INTO t1
53743 SET f_int1 = @cur_value , f_int2 = @cur_value,
53744 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
53745 f_charbig = '#SINGLE#';
53746         
53747 # check single-1 success:       1
53748 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
53749 INSERT INTO t1
53750 SET f_int1 = @cur_value , f_int2 = @cur_value,
53751 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
53752 f_charbig = '#SINGLE#';
53753         
53754 # check single-2 success:       1
53755 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
53756 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
53757 UPDATE t1 SET f_int1 = @cur_value2
53758 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
53759         
53760 # check single-3 success:       1
53761 SET @cur_value1= -1;
53762 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
53763 UPDATE t1 SET f_int1 = @cur_value1
53764 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
53765         
53766 # check single-4 success:       1
53767 SELECT MAX(f_int1) INTO @cur_value FROM t1;
53768 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
53769         
53770 # check single-5 success:       1
53771 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
53772         
53773 # check single-6 success:       1
53774 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
53775         
53776 # check single-7 success:       1
53777 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
53778 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
53779 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
53780 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
53781 f_charbig = '#NULL#';
53782 INSERT INTO t1
53783 SET f_int1 = NULL , f_int2 = -@max_row,
53784 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
53785 f_charbig = '#NULL#';
53786 # check null success:    1
53787         
53788 # check null-1 success:         1
53789 UPDATE t1 SET f_int1 = -@max_row
53790 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
53791 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
53792         
53793 # check null-2 success:         1
53794 UPDATE t1 SET f_int1 = NULL
53795 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
53796 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
53797         
53798 # check null-3 success:         1
53799 DELETE FROM t1
53800 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
53801 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
53802         
53803 # check null-4 success:         1
53804 DELETE FROM t1
53805 WHERE f_int1 = 0 AND f_int2 = 0
53806 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
53807 AND f_charbig = '#NULL#';
53808 SET AUTOCOMMIT= 0;
53809 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53810 SELECT f_int1, f_int1, '', '', 'was inserted'
53811 FROM t0_template source_tab
53812 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
53813         
53814 # check transactions-1 success:         1
53815 COMMIT WORK;
53816         
53817 # check transactions-2 success:         1
53818 ROLLBACK WORK;
53819         
53820 # check transactions-3 success:         1
53821 DELETE FROM t1 WHERE f_charbig = 'was inserted';
53822 COMMIT WORK;
53823 ROLLBACK WORK;
53824         
53825 # check transactions-4 success:         1
53826 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53827 SELECT f_int1, f_int1, '', '', 'was inserted'
53828 FROM t0_template source_tab
53829 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
53830         
53831 # check transactions-5 success:         1
53832 ROLLBACK WORK;
53833 Warnings:
53834 Warning 1196    Some non-transactional changed tables couldn't be rolled back
53835         
53836 # check transactions-6 success:         1
53837 # INFO: Storage engine used for t1 seems to be not transactional.
53838 COMMIT;
53839         
53840 # check transactions-7 success:         1
53841 DELETE FROM t1 WHERE f_charbig = 'was inserted';
53842 COMMIT WORK;
53843 SET @@session.sql_mode = 'traditional';
53844 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
53845 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53846 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
53847 '', '', 'was inserted' FROM t0_template
53848 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
53849 ERROR 22012: Division by 0
53850 COMMIT;
53851         
53852 # check transactions-8 success:         1
53853 # INFO: Storage engine used for t1 seems to be unable to revert
53854 #       changes made by the failing statement.
53855 SET @@session.sql_mode = '';
53856 SET AUTOCOMMIT= 1;
53857 DELETE FROM t1 WHERE f_charbig = 'was inserted';
53858 COMMIT WORK;
53859 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
53860         
53861 # check special-1 success:      1
53862 UPDATE t1 SET f_charbig = '';
53863         
53864 # check special-2 success:      1
53865 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
53866 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
53867 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
53868 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53869 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53870 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53871 'just inserted' FROM t0_template
53872 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53873 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
53874 BEGIN
53875 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53876 f_charbig = 'updated by trigger'
53877       WHERE f_int1 = new.f_int1;
53878 END|
53879 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53880 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
53881 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53882         
53883 # check trigger-1 success:      1
53884 DROP TRIGGER trg_1;
53885 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53886 f_int2 = CAST(f_char1 AS SIGNED INT),
53887 f_charbig = 'just inserted'
53888    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53889 DELETE FROM t0_aux
53890 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53891 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53892 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53893 'just inserted' FROM t0_template
53894 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53895 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
53896 BEGIN
53897 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53898 f_charbig = 'updated by trigger'
53899       WHERE f_int1 = new.f_int1;
53900 END|
53901 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53902 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
53903 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53904         
53905 # check trigger-2 success:      1
53906 DROP TRIGGER trg_1;
53907 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53908 f_int2 = CAST(f_char1 AS SIGNED INT),
53909 f_charbig = 'just inserted'
53910    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53911 DELETE FROM t0_aux
53912 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53913 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53914 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53915 'just inserted' FROM t0_template
53916 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53917 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
53918 BEGIN
53919 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53920 f_charbig = 'updated by trigger'
53921       WHERE f_int1 = new.f_int1;
53922 END|
53923 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
53924 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53925         
53926 # check trigger-3 success:      1
53927 DROP TRIGGER trg_1;
53928 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53929 f_int2 = CAST(f_char1 AS SIGNED INT),
53930 f_charbig = 'just inserted'
53931    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53932 DELETE FROM t0_aux
53933 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53934 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53935 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53936 'just inserted' FROM t0_template
53937 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53938 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
53939 BEGIN
53940 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53941 f_charbig = 'updated by trigger'
53942       WHERE f_int1 = - old.f_int1;
53943 END|
53944 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
53945 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53946         
53947 # check trigger-4 success:      1
53948 DROP TRIGGER trg_1;
53949 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53950 f_int2 = CAST(f_char1 AS SIGNED INT),
53951 f_charbig = 'just inserted'
53952    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53953 DELETE FROM t0_aux
53954 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53955 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53956 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53957 'just inserted' FROM t0_template
53958 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53959 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
53960 BEGIN
53961 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53962 f_charbig = 'updated by trigger'
53963       WHERE f_int1 = new.f_int1;
53964 END|
53965 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
53966 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53967         
53968 # check trigger-5 success:      1
53969 DROP TRIGGER trg_1;
53970 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53971 f_int2 = CAST(f_char1 AS SIGNED INT),
53972 f_charbig = 'just inserted'
53973    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53974 DELETE FROM t0_aux
53975 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53976 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53977 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53978 'just inserted' FROM t0_template
53979 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53980 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
53981 BEGIN
53982 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53983 f_charbig = 'updated by trigger'
53984       WHERE f_int1 = - old.f_int1;
53985 END|
53986 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
53987 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53988         
53989 # check trigger-6 success:      1
53990 DROP TRIGGER trg_1;
53991 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53992 f_int2 = CAST(f_char1 AS SIGNED INT),
53993 f_charbig = 'just inserted'
53994    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53995 DELETE FROM t0_aux
53996 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53997 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53998 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53999 'just inserted' FROM t0_template
54000 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54001 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
54002 BEGIN
54003 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54004 f_charbig = 'updated by trigger'
54005       WHERE f_int1 = - old.f_int1;
54006 END|
54007 DELETE FROM t0_aux
54008 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54009         
54010 # check trigger-7 success:      1
54011 DROP TRIGGER trg_1;
54012 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54013 f_int2 = CAST(f_char1 AS SIGNED INT),
54014 f_charbig = 'just inserted'
54015    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54016 DELETE FROM t0_aux
54017 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54018 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54019 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54020 'just inserted' FROM t0_template
54021 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54022 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
54023 BEGIN
54024 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54025 f_charbig = 'updated by trigger'
54026       WHERE f_int1 = - old.f_int1;
54027 END|
54028 DELETE FROM t0_aux
54029 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54030         
54031 # check trigger-8 success:      1
54032 DROP TRIGGER trg_1;
54033 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54034 f_int2 = CAST(f_char1 AS SIGNED INT),
54035 f_charbig = 'just inserted'
54036    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54037 DELETE FROM t0_aux
54038 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54039 DELETE FROM t1
54040 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54041 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
54042 BEGIN
54043 SET new.f_int1 = old.f_int1 + @max_row,
54044 new.f_int2 = old.f_int2 - @max_row,
54045 new.f_charbig = '####updated per update trigger####';
54046 END|
54047 UPDATE t1
54048 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
54049 f_charbig = '####updated per update statement itself####';
54050         
54051 # check trigger-9 success:      1
54052 DROP TRIGGER trg_2;
54053 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54054 f_int2 = CAST(f_char1 AS SIGNED INT),
54055 f_charbig = CONCAT('===',f_char1,'===');
54056 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
54057 BEGIN
54058 SET new.f_int1 = new.f_int1 + @max_row,
54059 new.f_int2 = new.f_int2 - @max_row,
54060 new.f_charbig = '####updated per update trigger####';
54061 END|
54062 UPDATE t1
54063 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
54064 f_charbig = '####updated per update statement itself####';
54065         
54066 # check trigger-10 success:     1
54067 DROP TRIGGER trg_2;
54068 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54069 f_int2 = CAST(f_char1 AS SIGNED INT),
54070 f_charbig = CONCAT('===',f_char1,'===');
54071 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
54072 BEGIN
54073 SET new.f_int1 = @my_max1 + @counter,
54074 new.f_int2 = @my_min2 - @counter,
54075 new.f_charbig = '####updated per insert trigger####';
54076 SET @counter = @counter + 1;
54077 END|
54078 SET @counter = 1;
54079 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
54080 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54081 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
54082 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
54083 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
54084 ORDER BY f_int1;
54085 DROP TRIGGER trg_3;
54086         
54087 # check trigger-11 success:     1
54088 DELETE FROM t1
54089 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
54090 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
54091 AND f_charbig = '####updated per insert trigger####';
54092 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
54093 BEGIN
54094 SET new.f_int1 = @my_max1 + @counter,
54095 new.f_int2 = @my_min2 - @counter,
54096 new.f_charbig = '####updated per insert trigger####';
54097 SET @counter = @counter + 1;
54098 END|
54099 SET @counter = 1;
54100 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
54101 INSERT INTO t1 (f_char1, f_char2, f_charbig)
54102 SELECT CAST(f_int1 AS CHAR),
54103 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
54104 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
54105 ORDER BY f_int1;
54106 DROP TRIGGER trg_3;
54107         
54108 # check trigger-12 success:     1
54109 DELETE FROM t1
54110 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
54111 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
54112 AND f_charbig = '####updated per insert trigger####';
54113 ANALYZE  TABLE t1;
54114 Table   Op      Msg_type        Msg_text
54115 test.t1 analyze status  OK
54116 CHECK    TABLE t1 EXTENDED;
54117 Table   Op      Msg_type        Msg_text
54118 test.t1 check   status  OK
54119 CHECKSUM TABLE t1 EXTENDED;
54120 Table   Checksum
54121 test.t1 <some_value>
54122 OPTIMIZE TABLE t1;
54123 Table   Op      Msg_type        Msg_text
54124 test.t1 optimize        status  OK
54125 # check layout success:    1
54126 REPAIR   TABLE t1 EXTENDED;
54127 Table   Op      Msg_type        Msg_text
54128 test.t1 repair  status  OK
54129 # check layout success:    1
54130 TRUNCATE t1;
54131         
54132 # check TRUNCATE success:       1
54133 # check layout success:    1
54134 # End usability test (inc/partition_check.inc)
54135 DROP TABLE t1;
54136 CREATE TABLE t1 (
54137 f_int1 INTEGER,
54138 f_int2 INTEGER,
54139 f_char1 CHAR(20),
54140 f_char2 CHAR(20),
54141 f_charbig VARCHAR(1000)
54144 PARTITION BY LIST(ABS(MOD(f_int1,2)))
54145 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
54146 (PARTITION part_1 VALUES IN (0),
54147  PARTITION part_2 VALUES IN (1),
54148  PARTITION part_3 VALUES IN (NULL));
54149 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
54150 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
54151 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
54152 ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
54153 Table   Op      Msg_type        Msg_text
54154 test.t1 optimize        error   Error in list of partitions to test.t1
54155 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
54156 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
54157 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
54158 # Start usability test (inc/partition_check.inc)
54159 create_command
54160 SHOW CREATE TABLE t1;
54161 Table   Create Table
54162 t1      CREATE TABLE `t1` (
54163   `f_int1` int(11) DEFAULT NULL,
54164   `f_int2` int(11) DEFAULT NULL,
54165   `f_char1` char(20) DEFAULT NULL,
54166   `f_char2` char(20) DEFAULT NULL,
54167   `f_charbig` varchar(1000) DEFAULT NULL
54168 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
54169 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
54170 SUBPARTITION BY KEY (f_int1)
54171 SUBPARTITIONS 3
54172 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
54173  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
54174  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
54176 unified filelist
54177 t1#P#part_1#SP#part_1sp0.MYD
54178 t1#P#part_1#SP#part_1sp0.MYI
54179 t1#P#part_1#SP#part_1sp1.MYD
54180 t1#P#part_1#SP#part_1sp1.MYI
54181 t1#P#part_1#SP#part_1sp2.MYD
54182 t1#P#part_1#SP#part_1sp2.MYI
54183 t1#P#part_2#SP#part_2sp0.MYD
54184 t1#P#part_2#SP#part_2sp0.MYI
54185 t1#P#part_2#SP#part_2sp1.MYD
54186 t1#P#part_2#SP#part_2sp1.MYI
54187 t1#P#part_2#SP#part_2sp2.MYD
54188 t1#P#part_2#SP#part_2sp2.MYI
54189 t1#P#part_3#SP#part_3sp0.MYD
54190 t1#P#part_3#SP#part_3sp0.MYI
54191 t1#P#part_3#SP#part_3sp1.MYD
54192 t1#P#part_3#SP#part_3sp1.MYI
54193 t1#P#part_3#SP#part_3sp2.MYD
54194 t1#P#part_3#SP#part_3sp2.MYI
54195 t1.frm
54196 t1.par
54198 # check prerequisites-1 success:    1
54199 # check COUNT(*) success:    1
54200 # check MIN/MAX(f_int1) success:    1
54201 # check MIN/MAX(f_int2) success:    1
54202 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54203 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
54204 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
54205 WHERE f_int1 IN (2,3);
54206 # check prerequisites-3 success:    1
54207 DELETE FROM t1 WHERE f_charbig = 'delete me';
54208 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
54209 # check read via f_int1 success: 1
54210 # check read via f_int2 success: 1
54211         
54212 # check multiple-1 success:     1
54213 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
54214         
54215 # check multiple-2 success:     1
54216 INSERT INTO t1 SELECT * FROM t0_template
54217 WHERE MOD(f_int1,3) = 0;
54218         
54219 # check multiple-3 success:     1
54220 UPDATE t1 SET f_int1 = f_int1 + @max_row
54221 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
54222 AND @max_row_div2 + @max_row_div4;
54223         
54224 # check multiple-4 success:     1
54225 DELETE FROM t1
54226 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
54227 AND @max_row_div2 + @max_row_div4 + @max_row;
54228         
54229 # check multiple-5 success:     1
54230 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
54231 INSERT INTO t1
54232 SET f_int1 = @cur_value , f_int2 = @cur_value,
54233 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
54234 f_charbig = '#SINGLE#';
54235         
54236 # check single-1 success:       1
54237 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
54238 INSERT INTO t1
54239 SET f_int1 = @cur_value , f_int2 = @cur_value,
54240 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
54241 f_charbig = '#SINGLE#';
54242         
54243 # check single-2 success:       1
54244 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
54245 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
54246 UPDATE t1 SET f_int1 = @cur_value2
54247 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
54248         
54249 # check single-3 success:       1
54250 SET @cur_value1= -1;
54251 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
54252 UPDATE t1 SET f_int1 = @cur_value1
54253 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
54254         
54255 # check single-4 success:       1
54256 SELECT MAX(f_int1) INTO @cur_value FROM t1;
54257 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
54258         
54259 # check single-5 success:       1
54260 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
54261         
54262 # check single-6 success:       1
54263 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
54264         
54265 # check single-7 success:       1
54266 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
54267 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
54268 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
54269 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
54270 f_charbig = '#NULL#';
54271 INSERT INTO t1
54272 SET f_int1 = NULL , f_int2 = -@max_row,
54273 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
54274 f_charbig = '#NULL#';
54275 # check null success:    1
54276         
54277 # check null-1 success:         1
54278 UPDATE t1 SET f_int1 = -@max_row
54279 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
54280 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
54281         
54282 # check null-2 success:         1
54283 UPDATE t1 SET f_int1 = NULL
54284 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
54285 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
54286         
54287 # check null-3 success:         1
54288 DELETE FROM t1
54289 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
54290 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
54291         
54292 # check null-4 success:         1
54293 DELETE FROM t1
54294 WHERE f_int1 = 0 AND f_int2 = 0
54295 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
54296 AND f_charbig = '#NULL#';
54297 SET AUTOCOMMIT= 0;
54298 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54299 SELECT f_int1, f_int1, '', '', 'was inserted'
54300 FROM t0_template source_tab
54301 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
54302         
54303 # check transactions-1 success:         1
54304 COMMIT WORK;
54305         
54306 # check transactions-2 success:         1
54307 ROLLBACK WORK;
54308         
54309 # check transactions-3 success:         1
54310 DELETE FROM t1 WHERE f_charbig = 'was inserted';
54311 COMMIT WORK;
54312 ROLLBACK WORK;
54313         
54314 # check transactions-4 success:         1
54315 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54316 SELECT f_int1, f_int1, '', '', 'was inserted'
54317 FROM t0_template source_tab
54318 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
54319         
54320 # check transactions-5 success:         1
54321 ROLLBACK WORK;
54322 Warnings:
54323 Warning 1196    Some non-transactional changed tables couldn't be rolled back
54324         
54325 # check transactions-6 success:         1
54326 # INFO: Storage engine used for t1 seems to be not transactional.
54327 COMMIT;
54328         
54329 # check transactions-7 success:         1
54330 DELETE FROM t1 WHERE f_charbig = 'was inserted';
54331 COMMIT WORK;
54332 SET @@session.sql_mode = 'traditional';
54333 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
54334 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54335 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
54336 '', '', 'was inserted' FROM t0_template
54337 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
54338 ERROR 22012: Division by 0
54339 COMMIT;
54340         
54341 # check transactions-8 success:         1
54342 # INFO: Storage engine used for t1 seems to be unable to revert
54343 #       changes made by the failing statement.
54344 SET @@session.sql_mode = '';
54345 SET AUTOCOMMIT= 1;
54346 DELETE FROM t1 WHERE f_charbig = 'was inserted';
54347 COMMIT WORK;
54348 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
54349         
54350 # check special-1 success:      1
54351 UPDATE t1 SET f_charbig = '';
54352         
54353 # check special-2 success:      1
54354 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
54355 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
54356 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
54357 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54358 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54359 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54360 'just inserted' FROM t0_template
54361 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54362 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
54363 BEGIN
54364 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54365 f_charbig = 'updated by trigger'
54366       WHERE f_int1 = new.f_int1;
54367 END|
54368 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54369 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
54370 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54371         
54372 # check trigger-1 success:      1
54373 DROP TRIGGER trg_1;
54374 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54375 f_int2 = CAST(f_char1 AS SIGNED INT),
54376 f_charbig = 'just inserted'
54377    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54378 DELETE FROM t0_aux
54379 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54380 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54381 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54382 'just inserted' FROM t0_template
54383 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54384 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
54385 BEGIN
54386 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54387 f_charbig = 'updated by trigger'
54388       WHERE f_int1 = new.f_int1;
54389 END|
54390 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54391 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
54392 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54393         
54394 # check trigger-2 success:      1
54395 DROP TRIGGER trg_1;
54396 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54397 f_int2 = CAST(f_char1 AS SIGNED INT),
54398 f_charbig = 'just inserted'
54399    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54400 DELETE FROM t0_aux
54401 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54402 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54403 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54404 'just inserted' FROM t0_template
54405 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54406 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
54407 BEGIN
54408 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54409 f_charbig = 'updated by trigger'
54410       WHERE f_int1 = new.f_int1;
54411 END|
54412 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
54413 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54414         
54415 # check trigger-3 success:      1
54416 DROP TRIGGER trg_1;
54417 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54418 f_int2 = CAST(f_char1 AS SIGNED INT),
54419 f_charbig = 'just inserted'
54420    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54421 DELETE FROM t0_aux
54422 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54423 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54424 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54425 'just inserted' FROM t0_template
54426 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54427 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
54428 BEGIN
54429 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54430 f_charbig = 'updated by trigger'
54431       WHERE f_int1 = - old.f_int1;
54432 END|
54433 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
54434 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54435         
54436 # check trigger-4 success:      1
54437 DROP TRIGGER trg_1;
54438 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54439 f_int2 = CAST(f_char1 AS SIGNED INT),
54440 f_charbig = 'just inserted'
54441    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54442 DELETE FROM t0_aux
54443 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54444 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54445 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54446 'just inserted' FROM t0_template
54447 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54448 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
54449 BEGIN
54450 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54451 f_charbig = 'updated by trigger'
54452       WHERE f_int1 = new.f_int1;
54453 END|
54454 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
54455 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54456         
54457 # check trigger-5 success:      1
54458 DROP TRIGGER trg_1;
54459 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54460 f_int2 = CAST(f_char1 AS SIGNED INT),
54461 f_charbig = 'just inserted'
54462    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54463 DELETE FROM t0_aux
54464 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54465 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54466 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54467 'just inserted' FROM t0_template
54468 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54469 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
54470 BEGIN
54471 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54472 f_charbig = 'updated by trigger'
54473       WHERE f_int1 = - old.f_int1;
54474 END|
54475 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
54476 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54477         
54478 # check trigger-6 success:      1
54479 DROP TRIGGER trg_1;
54480 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54481 f_int2 = CAST(f_char1 AS SIGNED INT),
54482 f_charbig = 'just inserted'
54483    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54484 DELETE FROM t0_aux
54485 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54486 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54487 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54488 'just inserted' FROM t0_template
54489 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54490 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
54491 BEGIN
54492 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54493 f_charbig = 'updated by trigger'
54494       WHERE f_int1 = - old.f_int1;
54495 END|
54496 DELETE FROM t0_aux
54497 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54498         
54499 # check trigger-7 success:      1
54500 DROP TRIGGER trg_1;
54501 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54502 f_int2 = CAST(f_char1 AS SIGNED INT),
54503 f_charbig = 'just inserted'
54504    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54505 DELETE FROM t0_aux
54506 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54507 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54508 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54509 'just inserted' FROM t0_template
54510 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54511 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
54512 BEGIN
54513 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54514 f_charbig = 'updated by trigger'
54515       WHERE f_int1 = - old.f_int1;
54516 END|
54517 DELETE FROM t0_aux
54518 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54519         
54520 # check trigger-8 success:      1
54521 DROP TRIGGER trg_1;
54522 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54523 f_int2 = CAST(f_char1 AS SIGNED INT),
54524 f_charbig = 'just inserted'
54525    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54526 DELETE FROM t0_aux
54527 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54528 DELETE FROM t1
54529 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54530 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
54531 BEGIN
54532 SET new.f_int1 = old.f_int1 + @max_row,
54533 new.f_int2 = old.f_int2 - @max_row,
54534 new.f_charbig = '####updated per update trigger####';
54535 END|
54536 UPDATE t1
54537 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
54538 f_charbig = '####updated per update statement itself####';
54539         
54540 # check trigger-9 success:      1
54541 DROP TRIGGER trg_2;
54542 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54543 f_int2 = CAST(f_char1 AS SIGNED INT),
54544 f_charbig = CONCAT('===',f_char1,'===');
54545 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
54546 BEGIN
54547 SET new.f_int1 = new.f_int1 + @max_row,
54548 new.f_int2 = new.f_int2 - @max_row,
54549 new.f_charbig = '####updated per update trigger####';
54550 END|
54551 UPDATE t1
54552 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
54553 f_charbig = '####updated per update statement itself####';
54554         
54555 # check trigger-10 success:     1
54556 DROP TRIGGER trg_2;
54557 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54558 f_int2 = CAST(f_char1 AS SIGNED INT),
54559 f_charbig = CONCAT('===',f_char1,'===');
54560 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
54561 BEGIN
54562 SET new.f_int1 = @my_max1 + @counter,
54563 new.f_int2 = @my_min2 - @counter,
54564 new.f_charbig = '####updated per insert trigger####';
54565 SET @counter = @counter + 1;
54566 END|
54567 SET @counter = 1;
54568 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
54569 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54570 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
54571 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
54572 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
54573 ORDER BY f_int1;
54574 DROP TRIGGER trg_3;
54575         
54576 # check trigger-11 success:     1
54577 DELETE FROM t1
54578 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
54579 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
54580 AND f_charbig = '####updated per insert trigger####';
54581 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
54582 BEGIN
54583 SET new.f_int1 = @my_max1 + @counter,
54584 new.f_int2 = @my_min2 - @counter,
54585 new.f_charbig = '####updated per insert trigger####';
54586 SET @counter = @counter + 1;
54587 END|
54588 SET @counter = 1;
54589 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
54590 INSERT INTO t1 (f_char1, f_char2, f_charbig)
54591 SELECT CAST(f_int1 AS CHAR),
54592 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
54593 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
54594 ORDER BY f_int1;
54595 DROP TRIGGER trg_3;
54596         
54597 # check trigger-12 success:     1
54598 DELETE FROM t1
54599 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
54600 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
54601 AND f_charbig = '####updated per insert trigger####';
54602 ANALYZE  TABLE t1;
54603 Table   Op      Msg_type        Msg_text
54604 test.t1 analyze status  OK
54605 CHECK    TABLE t1 EXTENDED;
54606 Table   Op      Msg_type        Msg_text
54607 test.t1 check   status  OK
54608 CHECKSUM TABLE t1 EXTENDED;
54609 Table   Checksum
54610 test.t1 <some_value>
54611 OPTIMIZE TABLE t1;
54612 Table   Op      Msg_type        Msg_text
54613 test.t1 optimize        status  OK
54614 # check layout success:    1
54615 REPAIR   TABLE t1 EXTENDED;
54616 Table   Op      Msg_type        Msg_text
54617 test.t1 repair  status  OK
54618 # check layout success:    1
54619 TRUNCATE t1;
54620         
54621 # check TRUNCATE success:       1
54622 # check layout success:    1
54623 # End usability test (inc/partition_check.inc)
54624 DROP TABLE t1;
54625 #  3.5 ALTER ... OPTIMIZE PARTITION ALL;
54626 DROP TABLE IF EXISTS t1;
54627 CREATE TABLE t1 (
54628 f_int1 INTEGER,
54629 f_int2 INTEGER,
54630 f_char1 CHAR(20),
54631 f_char2 CHAR(20),
54632 f_charbig VARCHAR(1000)
54635 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
54636 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
54637 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
54638 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
54639 ALTER TABLE t1 OPTIMIZE PARTITION ALL;
54640 Table   Op      Msg_type        Msg_text
54641 test.t1 optimize        status  OK
54642 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
54643 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
54644 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
54645 # Start usability test (inc/partition_check.inc)
54646 create_command
54647 SHOW CREATE TABLE t1;
54648 Table   Create Table
54649 t1      CREATE TABLE `t1` (
54650   `f_int1` int(11) DEFAULT NULL,
54651   `f_int2` int(11) DEFAULT NULL,
54652   `f_char1` char(20) DEFAULT NULL,
54653   `f_char2` char(20) DEFAULT NULL,
54654   `f_charbig` varchar(1000) DEFAULT NULL
54655 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
54656 /*!50100 PARTITION BY HASH (f_int1)
54657 (PARTITION part_1 ENGINE = MyISAM,
54658  PARTITION part_2 ENGINE = MyISAM) */
54660 unified filelist
54661 t1#P#part_1.MYD
54662 t1#P#part_1.MYI
54663 t1#P#part_2.MYD
54664 t1#P#part_2.MYI
54665 t1.frm
54666 t1.par
54668 # check prerequisites-1 success:    1
54669 # check COUNT(*) success:    1
54670 # check MIN/MAX(f_int1) success:    1
54671 # check MIN/MAX(f_int2) success:    1
54672 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54673 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
54674 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
54675 WHERE f_int1 IN (2,3);
54676 # check prerequisites-3 success:    1
54677 DELETE FROM t1 WHERE f_charbig = 'delete me';
54678 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
54679 # check read via f_int1 success: 1
54680 # check read via f_int2 success: 1
54681         
54682 # check multiple-1 success:     1
54683 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
54684         
54685 # check multiple-2 success:     1
54686 INSERT INTO t1 SELECT * FROM t0_template
54687 WHERE MOD(f_int1,3) = 0;
54688         
54689 # check multiple-3 success:     1
54690 UPDATE t1 SET f_int1 = f_int1 + @max_row
54691 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
54692 AND @max_row_div2 + @max_row_div4;
54693         
54694 # check multiple-4 success:     1
54695 DELETE FROM t1
54696 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
54697 AND @max_row_div2 + @max_row_div4 + @max_row;
54698         
54699 # check multiple-5 success:     1
54700 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
54701 INSERT INTO t1
54702 SET f_int1 = @cur_value , f_int2 = @cur_value,
54703 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
54704 f_charbig = '#SINGLE#';
54705         
54706 # check single-1 success:       1
54707 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
54708 INSERT INTO t1
54709 SET f_int1 = @cur_value , f_int2 = @cur_value,
54710 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
54711 f_charbig = '#SINGLE#';
54712         
54713 # check single-2 success:       1
54714 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
54715 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
54716 UPDATE t1 SET f_int1 = @cur_value2
54717 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
54718         
54719 # check single-3 success:       1
54720 SET @cur_value1= -1;
54721 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
54722 UPDATE t1 SET f_int1 = @cur_value1
54723 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
54724         
54725 # check single-4 success:       1
54726 SELECT MAX(f_int1) INTO @cur_value FROM t1;
54727 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
54728         
54729 # check single-5 success:       1
54730 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
54731         
54732 # check single-6 success:       1
54733 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
54734         
54735 # check single-7 success:       1
54736 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
54737 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
54738 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
54739 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
54740 f_charbig = '#NULL#';
54741 INSERT INTO t1
54742 SET f_int1 = NULL , f_int2 = -@max_row,
54743 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
54744 f_charbig = '#NULL#';
54745 # check null success:    1
54746         
54747 # check null-1 success:         1
54748 UPDATE t1 SET f_int1 = -@max_row
54749 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
54750 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
54751         
54752 # check null-2 success:         1
54753 UPDATE t1 SET f_int1 = NULL
54754 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
54755 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
54756         
54757 # check null-3 success:         1
54758 DELETE FROM t1
54759 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
54760 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
54761         
54762 # check null-4 success:         1
54763 DELETE FROM t1
54764 WHERE f_int1 = 0 AND f_int2 = 0
54765 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
54766 AND f_charbig = '#NULL#';
54767 SET AUTOCOMMIT= 0;
54768 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54769 SELECT f_int1, f_int1, '', '', 'was inserted'
54770 FROM t0_template source_tab
54771 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
54772         
54773 # check transactions-1 success:         1
54774 COMMIT WORK;
54775         
54776 # check transactions-2 success:         1
54777 ROLLBACK WORK;
54778         
54779 # check transactions-3 success:         1
54780 DELETE FROM t1 WHERE f_charbig = 'was inserted';
54781 COMMIT WORK;
54782 ROLLBACK WORK;
54783         
54784 # check transactions-4 success:         1
54785 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54786 SELECT f_int1, f_int1, '', '', 'was inserted'
54787 FROM t0_template source_tab
54788 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
54789         
54790 # check transactions-5 success:         1
54791 ROLLBACK WORK;
54792 Warnings:
54793 Warning 1196    Some non-transactional changed tables couldn't be rolled back
54794         
54795 # check transactions-6 success:         1
54796 # INFO: Storage engine used for t1 seems to be not transactional.
54797 COMMIT;
54798         
54799 # check transactions-7 success:         1
54800 DELETE FROM t1 WHERE f_charbig = 'was inserted';
54801 COMMIT WORK;
54802 SET @@session.sql_mode = 'traditional';
54803 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
54804 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54805 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
54806 '', '', 'was inserted' FROM t0_template
54807 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
54808 ERROR 22012: Division by 0
54809 COMMIT;
54810         
54811 # check transactions-8 success:         1
54812 # INFO: Storage engine used for t1 seems to be unable to revert
54813 #       changes made by the failing statement.
54814 SET @@session.sql_mode = '';
54815 SET AUTOCOMMIT= 1;
54816 DELETE FROM t1 WHERE f_charbig = 'was inserted';
54817 COMMIT WORK;
54818 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
54819         
54820 # check special-1 success:      1
54821 UPDATE t1 SET f_charbig = '';
54822         
54823 # check special-2 success:      1
54824 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
54825 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
54826 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
54827 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54828 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54829 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54830 'just inserted' FROM t0_template
54831 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54832 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
54833 BEGIN
54834 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54835 f_charbig = 'updated by trigger'
54836       WHERE f_int1 = new.f_int1;
54837 END|
54838 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54839 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
54840 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54841         
54842 # check trigger-1 success:      1
54843 DROP TRIGGER trg_1;
54844 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54845 f_int2 = CAST(f_char1 AS SIGNED INT),
54846 f_charbig = 'just inserted'
54847    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54848 DELETE FROM t0_aux
54849 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54850 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54851 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54852 'just inserted' FROM t0_template
54853 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54854 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
54855 BEGIN
54856 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54857 f_charbig = 'updated by trigger'
54858       WHERE f_int1 = new.f_int1;
54859 END|
54860 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54861 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
54862 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54863         
54864 # check trigger-2 success:      1
54865 DROP TRIGGER trg_1;
54866 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54867 f_int2 = CAST(f_char1 AS SIGNED INT),
54868 f_charbig = 'just inserted'
54869    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54870 DELETE FROM t0_aux
54871 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54872 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54873 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54874 'just inserted' FROM t0_template
54875 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54876 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
54877 BEGIN
54878 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54879 f_charbig = 'updated by trigger'
54880       WHERE f_int1 = new.f_int1;
54881 END|
54882 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
54883 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54884         
54885 # check trigger-3 success:      1
54886 DROP TRIGGER trg_1;
54887 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54888 f_int2 = CAST(f_char1 AS SIGNED INT),
54889 f_charbig = 'just inserted'
54890    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54891 DELETE FROM t0_aux
54892 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54893 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54894 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54895 'just inserted' FROM t0_template
54896 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54897 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
54898 BEGIN
54899 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54900 f_charbig = 'updated by trigger'
54901       WHERE f_int1 = - old.f_int1;
54902 END|
54903 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
54904 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54905         
54906 # check trigger-4 success:      1
54907 DROP TRIGGER trg_1;
54908 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54909 f_int2 = CAST(f_char1 AS SIGNED INT),
54910 f_charbig = 'just inserted'
54911    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54912 DELETE FROM t0_aux
54913 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54914 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54915 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54916 'just inserted' FROM t0_template
54917 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54918 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
54919 BEGIN
54920 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54921 f_charbig = 'updated by trigger'
54922       WHERE f_int1 = new.f_int1;
54923 END|
54924 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
54925 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54926         
54927 # check trigger-5 success:      1
54928 DROP TRIGGER trg_1;
54929 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54930 f_int2 = CAST(f_char1 AS SIGNED INT),
54931 f_charbig = 'just inserted'
54932    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54933 DELETE FROM t0_aux
54934 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54935 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54936 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54937 'just inserted' FROM t0_template
54938 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54939 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
54940 BEGIN
54941 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54942 f_charbig = 'updated by trigger'
54943       WHERE f_int1 = - old.f_int1;
54944 END|
54945 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
54946 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54947         
54948 # check trigger-6 success:      1
54949 DROP TRIGGER trg_1;
54950 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54951 f_int2 = CAST(f_char1 AS SIGNED INT),
54952 f_charbig = 'just inserted'
54953    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54954 DELETE FROM t0_aux
54955 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54956 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54957 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54958 'just inserted' FROM t0_template
54959 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54960 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
54961 BEGIN
54962 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54963 f_charbig = 'updated by trigger'
54964       WHERE f_int1 = - old.f_int1;
54965 END|
54966 DELETE FROM t0_aux
54967 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54968         
54969 # check trigger-7 success:      1
54970 DROP TRIGGER trg_1;
54971 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54972 f_int2 = CAST(f_char1 AS SIGNED INT),
54973 f_charbig = 'just inserted'
54974    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54975 DELETE FROM t0_aux
54976 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54977 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54978 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54979 'just inserted' FROM t0_template
54980 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54981 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
54982 BEGIN
54983 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54984 f_charbig = 'updated by trigger'
54985       WHERE f_int1 = - old.f_int1;
54986 END|
54987 DELETE FROM t0_aux
54988 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54989         
54990 # check trigger-8 success:      1
54991 DROP TRIGGER trg_1;
54992 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54993 f_int2 = CAST(f_char1 AS SIGNED INT),
54994 f_charbig = 'just inserted'
54995    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54996 DELETE FROM t0_aux
54997 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54998 DELETE FROM t1
54999 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55000 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
55001 BEGIN
55002 SET new.f_int1 = old.f_int1 + @max_row,
55003 new.f_int2 = old.f_int2 - @max_row,
55004 new.f_charbig = '####updated per update trigger####';
55005 END|
55006 UPDATE t1
55007 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
55008 f_charbig = '####updated per update statement itself####';
55009         
55010 # check trigger-9 success:      1
55011 DROP TRIGGER trg_2;
55012 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55013 f_int2 = CAST(f_char1 AS SIGNED INT),
55014 f_charbig = CONCAT('===',f_char1,'===');
55015 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
55016 BEGIN
55017 SET new.f_int1 = new.f_int1 + @max_row,
55018 new.f_int2 = new.f_int2 - @max_row,
55019 new.f_charbig = '####updated per update trigger####';
55020 END|
55021 UPDATE t1
55022 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
55023 f_charbig = '####updated per update statement itself####';
55024         
55025 # check trigger-10 success:     1
55026 DROP TRIGGER trg_2;
55027 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55028 f_int2 = CAST(f_char1 AS SIGNED INT),
55029 f_charbig = CONCAT('===',f_char1,'===');
55030 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
55031 BEGIN
55032 SET new.f_int1 = @my_max1 + @counter,
55033 new.f_int2 = @my_min2 - @counter,
55034 new.f_charbig = '####updated per insert trigger####';
55035 SET @counter = @counter + 1;
55036 END|
55037 SET @counter = 1;
55038 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
55039 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55040 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
55041 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
55042 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
55043 ORDER BY f_int1;
55044 DROP TRIGGER trg_3;
55045         
55046 # check trigger-11 success:     1
55047 DELETE FROM t1
55048 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
55049 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
55050 AND f_charbig = '####updated per insert trigger####';
55051 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
55052 BEGIN
55053 SET new.f_int1 = @my_max1 + @counter,
55054 new.f_int2 = @my_min2 - @counter,
55055 new.f_charbig = '####updated per insert trigger####';
55056 SET @counter = @counter + 1;
55057 END|
55058 SET @counter = 1;
55059 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
55060 INSERT INTO t1 (f_char1, f_char2, f_charbig)
55061 SELECT CAST(f_int1 AS CHAR),
55062 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
55063 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
55064 ORDER BY f_int1;
55065 DROP TRIGGER trg_3;
55066         
55067 # check trigger-12 success:     1
55068 DELETE FROM t1
55069 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
55070 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
55071 AND f_charbig = '####updated per insert trigger####';
55072 ANALYZE  TABLE t1;
55073 Table   Op      Msg_type        Msg_text
55074 test.t1 analyze status  OK
55075 CHECK    TABLE t1 EXTENDED;
55076 Table   Op      Msg_type        Msg_text
55077 test.t1 check   status  OK
55078 CHECKSUM TABLE t1 EXTENDED;
55079 Table   Checksum
55080 test.t1 <some_value>
55081 OPTIMIZE TABLE t1;
55082 Table   Op      Msg_type        Msg_text
55083 test.t1 optimize        status  OK
55084 # check layout success:    1
55085 REPAIR   TABLE t1 EXTENDED;
55086 Table   Op      Msg_type        Msg_text
55087 test.t1 repair  status  OK
55088 # check layout success:    1
55089 TRUNCATE t1;
55090         
55091 # check TRUNCATE success:       1
55092 # check layout success:    1
55093 # End usability test (inc/partition_check.inc)
55094 DROP TABLE t1;
55095 CREATE TABLE t1 (
55096 f_int1 INTEGER,
55097 f_int2 INTEGER,
55098 f_char1 CHAR(20),
55099 f_char2 CHAR(20),
55100 f_charbig VARCHAR(1000)
55103 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
55104 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
55105 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
55106 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
55107 ALTER TABLE t1 OPTIMIZE PARTITION ALL;
55108 Table   Op      Msg_type        Msg_text
55109 test.t1 optimize        status  OK
55110 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
55111 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
55112 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
55113 # Start usability test (inc/partition_check.inc)
55114 create_command
55115 SHOW CREATE TABLE t1;
55116 Table   Create Table
55117 t1      CREATE TABLE `t1` (
55118   `f_int1` int(11) DEFAULT NULL,
55119   `f_int2` int(11) DEFAULT NULL,
55120   `f_char1` char(20) DEFAULT NULL,
55121   `f_char2` char(20) DEFAULT NULL,
55122   `f_charbig` varchar(1000) DEFAULT NULL
55123 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
55124 /*!50100 PARTITION BY KEY (f_int1)
55125 (PARTITION part_1 ENGINE = MyISAM,
55126  PARTITION part_2 ENGINE = MyISAM,
55127  PARTITION part_3 ENGINE = MyISAM,
55128  PARTITION part_4 ENGINE = MyISAM,
55129  PARTITION part_5 ENGINE = MyISAM) */
55131 unified filelist
55132 t1#P#part_1.MYD
55133 t1#P#part_1.MYI
55134 t1#P#part_2.MYD
55135 t1#P#part_2.MYI
55136 t1#P#part_3.MYD
55137 t1#P#part_3.MYI
55138 t1#P#part_4.MYD
55139 t1#P#part_4.MYI
55140 t1#P#part_5.MYD
55141 t1#P#part_5.MYI
55142 t1.frm
55143 t1.par
55145 # check prerequisites-1 success:    1
55146 # check COUNT(*) success:    1
55147 # check MIN/MAX(f_int1) success:    1
55148 # check MIN/MAX(f_int2) success:    1
55149 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55150 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
55151 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
55152 WHERE f_int1 IN (2,3);
55153 # check prerequisites-3 success:    1
55154 DELETE FROM t1 WHERE f_charbig = 'delete me';
55155 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
55156 # check read via f_int1 success: 1
55157 # check read via f_int2 success: 1
55158         
55159 # check multiple-1 success:     1
55160 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
55161         
55162 # check multiple-2 success:     1
55163 INSERT INTO t1 SELECT * FROM t0_template
55164 WHERE MOD(f_int1,3) = 0;
55165         
55166 # check multiple-3 success:     1
55167 UPDATE t1 SET f_int1 = f_int1 + @max_row
55168 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
55169 AND @max_row_div2 + @max_row_div4;
55170         
55171 # check multiple-4 success:     1
55172 DELETE FROM t1
55173 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
55174 AND @max_row_div2 + @max_row_div4 + @max_row;
55175         
55176 # check multiple-5 success:     1
55177 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
55178 INSERT INTO t1
55179 SET f_int1 = @cur_value , f_int2 = @cur_value,
55180 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
55181 f_charbig = '#SINGLE#';
55182         
55183 # check single-1 success:       1
55184 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
55185 INSERT INTO t1
55186 SET f_int1 = @cur_value , f_int2 = @cur_value,
55187 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
55188 f_charbig = '#SINGLE#';
55189         
55190 # check single-2 success:       1
55191 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
55192 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
55193 UPDATE t1 SET f_int1 = @cur_value2
55194 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
55195         
55196 # check single-3 success:       1
55197 SET @cur_value1= -1;
55198 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
55199 UPDATE t1 SET f_int1 = @cur_value1
55200 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
55201         
55202 # check single-4 success:       1
55203 SELECT MAX(f_int1) INTO @cur_value FROM t1;
55204 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
55205         
55206 # check single-5 success:       1
55207 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
55208         
55209 # check single-6 success:       1
55210 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
55211         
55212 # check single-7 success:       1
55213 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
55214 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
55215 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
55216 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
55217 f_charbig = '#NULL#';
55218 INSERT INTO t1
55219 SET f_int1 = NULL , f_int2 = -@max_row,
55220 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
55221 f_charbig = '#NULL#';
55222 # check null success:    1
55223         
55224 # check null-1 success:         1
55225 UPDATE t1 SET f_int1 = -@max_row
55226 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
55227 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
55228         
55229 # check null-2 success:         1
55230 UPDATE t1 SET f_int1 = NULL
55231 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
55232 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
55233         
55234 # check null-3 success:         1
55235 DELETE FROM t1
55236 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
55237 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
55238         
55239 # check null-4 success:         1
55240 DELETE FROM t1
55241 WHERE f_int1 = 0 AND f_int2 = 0
55242 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
55243 AND f_charbig = '#NULL#';
55244 SET AUTOCOMMIT= 0;
55245 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55246 SELECT f_int1, f_int1, '', '', 'was inserted'
55247 FROM t0_template source_tab
55248 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
55249         
55250 # check transactions-1 success:         1
55251 COMMIT WORK;
55252         
55253 # check transactions-2 success:         1
55254 ROLLBACK WORK;
55255         
55256 # check transactions-3 success:         1
55257 DELETE FROM t1 WHERE f_charbig = 'was inserted';
55258 COMMIT WORK;
55259 ROLLBACK WORK;
55260         
55261 # check transactions-4 success:         1
55262 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55263 SELECT f_int1, f_int1, '', '', 'was inserted'
55264 FROM t0_template source_tab
55265 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
55266         
55267 # check transactions-5 success:         1
55268 ROLLBACK WORK;
55269 Warnings:
55270 Warning 1196    Some non-transactional changed tables couldn't be rolled back
55271         
55272 # check transactions-6 success:         1
55273 # INFO: Storage engine used for t1 seems to be not transactional.
55274 COMMIT;
55275         
55276 # check transactions-7 success:         1
55277 DELETE FROM t1 WHERE f_charbig = 'was inserted';
55278 COMMIT WORK;
55279 SET @@session.sql_mode = 'traditional';
55280 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
55281 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55282 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
55283 '', '', 'was inserted' FROM t0_template
55284 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
55285 ERROR 22012: Division by 0
55286 COMMIT;
55287         
55288 # check transactions-8 success:         1
55289 # INFO: Storage engine used for t1 seems to be unable to revert
55290 #       changes made by the failing statement.
55291 SET @@session.sql_mode = '';
55292 SET AUTOCOMMIT= 1;
55293 DELETE FROM t1 WHERE f_charbig = 'was inserted';
55294 COMMIT WORK;
55295 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
55296         
55297 # check special-1 success:      1
55298 UPDATE t1 SET f_charbig = '';
55299         
55300 # check special-2 success:      1
55301 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
55302 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
55303 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
55304 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55305 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55306 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55307 'just inserted' FROM t0_template
55308 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55309 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
55310 BEGIN
55311 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55312 f_charbig = 'updated by trigger'
55313       WHERE f_int1 = new.f_int1;
55314 END|
55315 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55316 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
55317 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55318         
55319 # check trigger-1 success:      1
55320 DROP TRIGGER trg_1;
55321 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55322 f_int2 = CAST(f_char1 AS SIGNED INT),
55323 f_charbig = 'just inserted'
55324    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55325 DELETE FROM t0_aux
55326 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55327 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55328 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55329 'just inserted' FROM t0_template
55330 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55331 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
55332 BEGIN
55333 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55334 f_charbig = 'updated by trigger'
55335       WHERE f_int1 = new.f_int1;
55336 END|
55337 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55338 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
55339 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55340         
55341 # check trigger-2 success:      1
55342 DROP TRIGGER trg_1;
55343 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55344 f_int2 = CAST(f_char1 AS SIGNED INT),
55345 f_charbig = 'just inserted'
55346    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55347 DELETE FROM t0_aux
55348 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55349 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55350 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55351 'just inserted' FROM t0_template
55352 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55353 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
55354 BEGIN
55355 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55356 f_charbig = 'updated by trigger'
55357       WHERE f_int1 = new.f_int1;
55358 END|
55359 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
55360 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55361         
55362 # check trigger-3 success:      1
55363 DROP TRIGGER trg_1;
55364 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55365 f_int2 = CAST(f_char1 AS SIGNED INT),
55366 f_charbig = 'just inserted'
55367    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55368 DELETE FROM t0_aux
55369 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55370 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55371 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55372 'just inserted' FROM t0_template
55373 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55374 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
55375 BEGIN
55376 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55377 f_charbig = 'updated by trigger'
55378       WHERE f_int1 = - old.f_int1;
55379 END|
55380 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
55381 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55382         
55383 # check trigger-4 success:      1
55384 DROP TRIGGER trg_1;
55385 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55386 f_int2 = CAST(f_char1 AS SIGNED INT),
55387 f_charbig = 'just inserted'
55388    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55389 DELETE FROM t0_aux
55390 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55391 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55392 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55393 'just inserted' FROM t0_template
55394 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55395 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
55396 BEGIN
55397 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55398 f_charbig = 'updated by trigger'
55399       WHERE f_int1 = new.f_int1;
55400 END|
55401 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
55402 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55403         
55404 # check trigger-5 success:      1
55405 DROP TRIGGER trg_1;
55406 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55407 f_int2 = CAST(f_char1 AS SIGNED INT),
55408 f_charbig = 'just inserted'
55409    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55410 DELETE FROM t0_aux
55411 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55412 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55413 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55414 'just inserted' FROM t0_template
55415 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55416 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
55417 BEGIN
55418 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55419 f_charbig = 'updated by trigger'
55420       WHERE f_int1 = - old.f_int1;
55421 END|
55422 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
55423 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55424         
55425 # check trigger-6 success:      1
55426 DROP TRIGGER trg_1;
55427 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55428 f_int2 = CAST(f_char1 AS SIGNED INT),
55429 f_charbig = 'just inserted'
55430    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55431 DELETE FROM t0_aux
55432 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55433 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55434 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55435 'just inserted' FROM t0_template
55436 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55437 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
55438 BEGIN
55439 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55440 f_charbig = 'updated by trigger'
55441       WHERE f_int1 = - old.f_int1;
55442 END|
55443 DELETE FROM t0_aux
55444 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55445         
55446 # check trigger-7 success:      1
55447 DROP TRIGGER trg_1;
55448 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55449 f_int2 = CAST(f_char1 AS SIGNED INT),
55450 f_charbig = 'just inserted'
55451    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55452 DELETE FROM t0_aux
55453 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55454 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55455 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55456 'just inserted' FROM t0_template
55457 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55458 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
55459 BEGIN
55460 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55461 f_charbig = 'updated by trigger'
55462       WHERE f_int1 = - old.f_int1;
55463 END|
55464 DELETE FROM t0_aux
55465 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55466         
55467 # check trigger-8 success:      1
55468 DROP TRIGGER trg_1;
55469 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55470 f_int2 = CAST(f_char1 AS SIGNED INT),
55471 f_charbig = 'just inserted'
55472    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55473 DELETE FROM t0_aux
55474 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55475 DELETE FROM t1
55476 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55477 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
55478 BEGIN
55479 SET new.f_int1 = old.f_int1 + @max_row,
55480 new.f_int2 = old.f_int2 - @max_row,
55481 new.f_charbig = '####updated per update trigger####';
55482 END|
55483 UPDATE t1
55484 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
55485 f_charbig = '####updated per update statement itself####';
55486         
55487 # check trigger-9 success:      1
55488 DROP TRIGGER trg_2;
55489 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55490 f_int2 = CAST(f_char1 AS SIGNED INT),
55491 f_charbig = CONCAT('===',f_char1,'===');
55492 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
55493 BEGIN
55494 SET new.f_int1 = new.f_int1 + @max_row,
55495 new.f_int2 = new.f_int2 - @max_row,
55496 new.f_charbig = '####updated per update trigger####';
55497 END|
55498 UPDATE t1
55499 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
55500 f_charbig = '####updated per update statement itself####';
55501         
55502 # check trigger-10 success:     1
55503 DROP TRIGGER trg_2;
55504 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55505 f_int2 = CAST(f_char1 AS SIGNED INT),
55506 f_charbig = CONCAT('===',f_char1,'===');
55507 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
55508 BEGIN
55509 SET new.f_int1 = @my_max1 + @counter,
55510 new.f_int2 = @my_min2 - @counter,
55511 new.f_charbig = '####updated per insert trigger####';
55512 SET @counter = @counter + 1;
55513 END|
55514 SET @counter = 1;
55515 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
55516 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55517 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
55518 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
55519 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
55520 ORDER BY f_int1;
55521 DROP TRIGGER trg_3;
55522         
55523 # check trigger-11 success:     1
55524 DELETE FROM t1
55525 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
55526 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
55527 AND f_charbig = '####updated per insert trigger####';
55528 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
55529 BEGIN
55530 SET new.f_int1 = @my_max1 + @counter,
55531 new.f_int2 = @my_min2 - @counter,
55532 new.f_charbig = '####updated per insert trigger####';
55533 SET @counter = @counter + 1;
55534 END|
55535 SET @counter = 1;
55536 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
55537 INSERT INTO t1 (f_char1, f_char2, f_charbig)
55538 SELECT CAST(f_int1 AS CHAR),
55539 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
55540 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
55541 ORDER BY f_int1;
55542 DROP TRIGGER trg_3;
55543         
55544 # check trigger-12 success:     1
55545 DELETE FROM t1
55546 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
55547 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
55548 AND f_charbig = '####updated per insert trigger####';
55549 ANALYZE  TABLE t1;
55550 Table   Op      Msg_type        Msg_text
55551 test.t1 analyze status  OK
55552 CHECK    TABLE t1 EXTENDED;
55553 Table   Op      Msg_type        Msg_text
55554 test.t1 check   status  OK
55555 CHECKSUM TABLE t1 EXTENDED;
55556 Table   Checksum
55557 test.t1 <some_value>
55558 OPTIMIZE TABLE t1;
55559 Table   Op      Msg_type        Msg_text
55560 test.t1 optimize        status  OK
55561 # check layout success:    1
55562 REPAIR   TABLE t1 EXTENDED;
55563 Table   Op      Msg_type        Msg_text
55564 test.t1 repair  status  OK
55565 # check layout success:    1
55566 TRUNCATE t1;
55567         
55568 # check TRUNCATE success:       1
55569 # check layout success:    1
55570 # End usability test (inc/partition_check.inc)
55571 DROP TABLE t1;
55572 CREATE TABLE t1 (
55573 f_int1 INTEGER,
55574 f_int2 INTEGER,
55575 f_char1 CHAR(20),
55576 f_char2 CHAR(20),
55577 f_charbig VARCHAR(1000)
55580 PARTITION BY LIST(MOD(f_int1,4))
55581 (PARTITION part_3 VALUES IN (-3),
55582 PARTITION part_2 VALUES IN (-2),
55583 PARTITION part_1 VALUES IN (-1),
55584 PARTITION part_N VALUES IN (NULL),
55585 PARTITION part0 VALUES IN (0),
55586 PARTITION part1 VALUES IN (1),
55587 PARTITION part2 VALUES IN (2),
55588 PARTITION part3 VALUES IN (3));
55589 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
55590 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
55591 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
55592 ALTER TABLE t1 OPTIMIZE PARTITION ALL;
55593 Table   Op      Msg_type        Msg_text
55594 test.t1 optimize        status  OK
55595 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
55596 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
55597 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
55598 # Start usability test (inc/partition_check.inc)
55599 create_command
55600 SHOW CREATE TABLE t1;
55601 Table   Create Table
55602 t1      CREATE TABLE `t1` (
55603   `f_int1` int(11) DEFAULT NULL,
55604   `f_int2` int(11) DEFAULT NULL,
55605   `f_char1` char(20) DEFAULT NULL,
55606   `f_char2` char(20) DEFAULT NULL,
55607   `f_charbig` varchar(1000) DEFAULT NULL
55608 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
55609 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
55610 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
55611  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
55612  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
55613  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
55614  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
55615  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
55616  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
55617  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
55619 unified filelist
55620 t1#P#part0.MYD
55621 t1#P#part0.MYI
55622 t1#P#part1.MYD
55623 t1#P#part1.MYI
55624 t1#P#part2.MYD
55625 t1#P#part2.MYI
55626 t1#P#part3.MYD
55627 t1#P#part3.MYI
55628 t1#P#part_1.MYD
55629 t1#P#part_1.MYI
55630 t1#P#part_2.MYD
55631 t1#P#part_2.MYI
55632 t1#P#part_3.MYD
55633 t1#P#part_3.MYI
55634 t1#P#part_N.MYD
55635 t1#P#part_N.MYI
55636 t1.frm
55637 t1.par
55639 # check prerequisites-1 success:    1
55640 # check COUNT(*) success:    1
55641 # check MIN/MAX(f_int1) success:    1
55642 # check MIN/MAX(f_int2) success:    1
55643 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55644 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
55645 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
55646 WHERE f_int1 IN (2,3);
55647 # check prerequisites-3 success:    1
55648 DELETE FROM t1 WHERE f_charbig = 'delete me';
55649 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
55650 # check read via f_int1 success: 1
55651 # check read via f_int2 success: 1
55652         
55653 # check multiple-1 success:     1
55654 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
55655         
55656 # check multiple-2 success:     1
55657 INSERT INTO t1 SELECT * FROM t0_template
55658 WHERE MOD(f_int1,3) = 0;
55659         
55660 # check multiple-3 success:     1
55661 UPDATE t1 SET f_int1 = f_int1 + @max_row
55662 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
55663 AND @max_row_div2 + @max_row_div4;
55664         
55665 # check multiple-4 success:     1
55666 DELETE FROM t1
55667 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
55668 AND @max_row_div2 + @max_row_div4 + @max_row;
55669         
55670 # check multiple-5 success:     1
55671 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
55672 INSERT INTO t1
55673 SET f_int1 = @cur_value , f_int2 = @cur_value,
55674 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
55675 f_charbig = '#SINGLE#';
55676         
55677 # check single-1 success:       1
55678 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
55679 INSERT INTO t1
55680 SET f_int1 = @cur_value , f_int2 = @cur_value,
55681 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
55682 f_charbig = '#SINGLE#';
55683         
55684 # check single-2 success:       1
55685 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
55686 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
55687 UPDATE t1 SET f_int1 = @cur_value2
55688 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
55689         
55690 # check single-3 success:       1
55691 SET @cur_value1= -1;
55692 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
55693 UPDATE t1 SET f_int1 = @cur_value1
55694 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
55695         
55696 # check single-4 success:       1
55697 SELECT MAX(f_int1) INTO @cur_value FROM t1;
55698 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
55699         
55700 # check single-5 success:       1
55701 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
55702         
55703 # check single-6 success:       1
55704 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
55705         
55706 # check single-7 success:       1
55707 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
55708 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
55709 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
55710 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
55711 f_charbig = '#NULL#';
55712 INSERT INTO t1
55713 SET f_int1 = NULL , f_int2 = -@max_row,
55714 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
55715 f_charbig = '#NULL#';
55716 # check null success:    1
55717         
55718 # check null-1 success:         1
55719 UPDATE t1 SET f_int1 = -@max_row
55720 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
55721 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
55722         
55723 # check null-2 success:         1
55724 UPDATE t1 SET f_int1 = NULL
55725 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
55726 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
55727         
55728 # check null-3 success:         1
55729 DELETE FROM t1
55730 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
55731 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
55732         
55733 # check null-4 success:         1
55734 DELETE FROM t1
55735 WHERE f_int1 = 0 AND f_int2 = 0
55736 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
55737 AND f_charbig = '#NULL#';
55738 SET AUTOCOMMIT= 0;
55739 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55740 SELECT f_int1, f_int1, '', '', 'was inserted'
55741 FROM t0_template source_tab
55742 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
55743         
55744 # check transactions-1 success:         1
55745 COMMIT WORK;
55746         
55747 # check transactions-2 success:         1
55748 ROLLBACK WORK;
55749         
55750 # check transactions-3 success:         1
55751 DELETE FROM t1 WHERE f_charbig = 'was inserted';
55752 COMMIT WORK;
55753 ROLLBACK WORK;
55754         
55755 # check transactions-4 success:         1
55756 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55757 SELECT f_int1, f_int1, '', '', 'was inserted'
55758 FROM t0_template source_tab
55759 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
55760         
55761 # check transactions-5 success:         1
55762 ROLLBACK WORK;
55763 Warnings:
55764 Warning 1196    Some non-transactional changed tables couldn't be rolled back
55765         
55766 # check transactions-6 success:         1
55767 # INFO: Storage engine used for t1 seems to be not transactional.
55768 COMMIT;
55769         
55770 # check transactions-7 success:         1
55771 DELETE FROM t1 WHERE f_charbig = 'was inserted';
55772 COMMIT WORK;
55773 SET @@session.sql_mode = 'traditional';
55774 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
55775 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55776 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
55777 '', '', 'was inserted' FROM t0_template
55778 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
55779 ERROR 22012: Division by 0
55780 COMMIT;
55781         
55782 # check transactions-8 success:         1
55783 # INFO: Storage engine used for t1 seems to be unable to revert
55784 #       changes made by the failing statement.
55785 SET @@session.sql_mode = '';
55786 SET AUTOCOMMIT= 1;
55787 DELETE FROM t1 WHERE f_charbig = 'was inserted';
55788 COMMIT WORK;
55789 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
55790         
55791 # check special-1 success:      1
55792 UPDATE t1 SET f_charbig = '';
55793         
55794 # check special-2 success:      1
55795 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
55796 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
55797 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
55798 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55799 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55800 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55801 'just inserted' FROM t0_template
55802 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55803 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
55804 BEGIN
55805 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55806 f_charbig = 'updated by trigger'
55807       WHERE f_int1 = new.f_int1;
55808 END|
55809 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55810 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
55811 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55812         
55813 # check trigger-1 success:      1
55814 DROP TRIGGER trg_1;
55815 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55816 f_int2 = CAST(f_char1 AS SIGNED INT),
55817 f_charbig = 'just inserted'
55818    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55819 DELETE FROM t0_aux
55820 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55821 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55822 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55823 'just inserted' FROM t0_template
55824 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55825 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
55826 BEGIN
55827 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55828 f_charbig = 'updated by trigger'
55829       WHERE f_int1 = new.f_int1;
55830 END|
55831 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55832 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
55833 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55834         
55835 # check trigger-2 success:      1
55836 DROP TRIGGER trg_1;
55837 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55838 f_int2 = CAST(f_char1 AS SIGNED INT),
55839 f_charbig = 'just inserted'
55840    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55841 DELETE FROM t0_aux
55842 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55843 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55844 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55845 'just inserted' FROM t0_template
55846 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55847 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
55848 BEGIN
55849 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55850 f_charbig = 'updated by trigger'
55851       WHERE f_int1 = new.f_int1;
55852 END|
55853 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
55854 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55855         
55856 # check trigger-3 success:      1
55857 DROP TRIGGER trg_1;
55858 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55859 f_int2 = CAST(f_char1 AS SIGNED INT),
55860 f_charbig = 'just inserted'
55861    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55862 DELETE FROM t0_aux
55863 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55864 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55865 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55866 'just inserted' FROM t0_template
55867 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55868 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
55869 BEGIN
55870 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55871 f_charbig = 'updated by trigger'
55872       WHERE f_int1 = - old.f_int1;
55873 END|
55874 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
55875 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55876         
55877 # check trigger-4 success:      1
55878 DROP TRIGGER trg_1;
55879 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55880 f_int2 = CAST(f_char1 AS SIGNED INT),
55881 f_charbig = 'just inserted'
55882    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55883 DELETE FROM t0_aux
55884 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55885 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55886 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55887 'just inserted' FROM t0_template
55888 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55889 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
55890 BEGIN
55891 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55892 f_charbig = 'updated by trigger'
55893       WHERE f_int1 = new.f_int1;
55894 END|
55895 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
55896 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55897         
55898 # check trigger-5 success:      1
55899 DROP TRIGGER trg_1;
55900 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55901 f_int2 = CAST(f_char1 AS SIGNED INT),
55902 f_charbig = 'just inserted'
55903    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55904 DELETE FROM t0_aux
55905 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55906 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55907 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55908 'just inserted' FROM t0_template
55909 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55910 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
55911 BEGIN
55912 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55913 f_charbig = 'updated by trigger'
55914       WHERE f_int1 = - old.f_int1;
55915 END|
55916 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
55917 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55918         
55919 # check trigger-6 success:      1
55920 DROP TRIGGER trg_1;
55921 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55922 f_int2 = CAST(f_char1 AS SIGNED INT),
55923 f_charbig = 'just inserted'
55924    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55925 DELETE FROM t0_aux
55926 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55927 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55928 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55929 'just inserted' FROM t0_template
55930 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55931 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
55932 BEGIN
55933 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55934 f_charbig = 'updated by trigger'
55935       WHERE f_int1 = - old.f_int1;
55936 END|
55937 DELETE FROM t0_aux
55938 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55939         
55940 # check trigger-7 success:      1
55941 DROP TRIGGER trg_1;
55942 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55943 f_int2 = CAST(f_char1 AS SIGNED INT),
55944 f_charbig = 'just inserted'
55945    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55946 DELETE FROM t0_aux
55947 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55948 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55949 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55950 'just inserted' FROM t0_template
55951 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55952 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
55953 BEGIN
55954 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55955 f_charbig = 'updated by trigger'
55956       WHERE f_int1 = - old.f_int1;
55957 END|
55958 DELETE FROM t0_aux
55959 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55960         
55961 # check trigger-8 success:      1
55962 DROP TRIGGER trg_1;
55963 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55964 f_int2 = CAST(f_char1 AS SIGNED INT),
55965 f_charbig = 'just inserted'
55966    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55967 DELETE FROM t0_aux
55968 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55969 DELETE FROM t1
55970 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55971 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
55972 BEGIN
55973 SET new.f_int1 = old.f_int1 + @max_row,
55974 new.f_int2 = old.f_int2 - @max_row,
55975 new.f_charbig = '####updated per update trigger####';
55976 END|
55977 UPDATE t1
55978 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
55979 f_charbig = '####updated per update statement itself####';
55980         
55981 # check trigger-9 success:      1
55982 DROP TRIGGER trg_2;
55983 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55984 f_int2 = CAST(f_char1 AS SIGNED INT),
55985 f_charbig = CONCAT('===',f_char1,'===');
55986 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
55987 BEGIN
55988 SET new.f_int1 = new.f_int1 + @max_row,
55989 new.f_int2 = new.f_int2 - @max_row,
55990 new.f_charbig = '####updated per update trigger####';
55991 END|
55992 UPDATE t1
55993 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
55994 f_charbig = '####updated per update statement itself####';
55995         
55996 # check trigger-10 success:     1
55997 DROP TRIGGER trg_2;
55998 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55999 f_int2 = CAST(f_char1 AS SIGNED INT),
56000 f_charbig = CONCAT('===',f_char1,'===');
56001 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
56002 BEGIN
56003 SET new.f_int1 = @my_max1 + @counter,
56004 new.f_int2 = @my_min2 - @counter,
56005 new.f_charbig = '####updated per insert trigger####';
56006 SET @counter = @counter + 1;
56007 END|
56008 SET @counter = 1;
56009 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
56010 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56011 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
56012 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
56013 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
56014 ORDER BY f_int1;
56015 DROP TRIGGER trg_3;
56016         
56017 # check trigger-11 success:     1
56018 DELETE FROM t1
56019 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
56020 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
56021 AND f_charbig = '####updated per insert trigger####';
56022 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
56023 BEGIN
56024 SET new.f_int1 = @my_max1 + @counter,
56025 new.f_int2 = @my_min2 - @counter,
56026 new.f_charbig = '####updated per insert trigger####';
56027 SET @counter = @counter + 1;
56028 END|
56029 SET @counter = 1;
56030 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
56031 INSERT INTO t1 (f_char1, f_char2, f_charbig)
56032 SELECT CAST(f_int1 AS CHAR),
56033 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
56034 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
56035 ORDER BY f_int1;
56036 DROP TRIGGER trg_3;
56037         
56038 # check trigger-12 success:     1
56039 DELETE FROM t1
56040 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
56041 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
56042 AND f_charbig = '####updated per insert trigger####';
56043 ANALYZE  TABLE t1;
56044 Table   Op      Msg_type        Msg_text
56045 test.t1 analyze status  OK
56046 CHECK    TABLE t1 EXTENDED;
56047 Table   Op      Msg_type        Msg_text
56048 test.t1 check   status  OK
56049 CHECKSUM TABLE t1 EXTENDED;
56050 Table   Checksum
56051 test.t1 <some_value>
56052 OPTIMIZE TABLE t1;
56053 Table   Op      Msg_type        Msg_text
56054 test.t1 optimize        status  OK
56055 # check layout success:    1
56056 REPAIR   TABLE t1 EXTENDED;
56057 Table   Op      Msg_type        Msg_text
56058 test.t1 repair  status  OK
56059 # check layout success:    1
56060 TRUNCATE t1;
56061         
56062 # check TRUNCATE success:       1
56063 # check layout success:    1
56064 # End usability test (inc/partition_check.inc)
56065 DROP TABLE t1;
56066 CREATE TABLE t1 (
56067 f_int1 INTEGER,
56068 f_int2 INTEGER,
56069 f_char1 CHAR(20),
56070 f_char2 CHAR(20),
56071 f_charbig VARCHAR(1000)
56074 PARTITION BY RANGE(f_int1)
56075 (PARTITION parta VALUES LESS THAN (0),
56076 PARTITION part_1 VALUES LESS THAN (5),
56077 PARTITION part_2 VALUES LESS THAN (10),
56078 PARTITION part_3 VALUES LESS THAN (10 + 5),
56079 PARTITION part_4 VALUES LESS THAN (20),
56080 PARTITION part_5 VALUES LESS THAN (2147483646));
56081 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
56082 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
56083 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
56084 ALTER TABLE t1 OPTIMIZE PARTITION ALL;
56085 Table   Op      Msg_type        Msg_text
56086 test.t1 optimize        status  OK
56087 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
56088 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
56089 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
56090 # Start usability test (inc/partition_check.inc)
56091 create_command
56092 SHOW CREATE TABLE t1;
56093 Table   Create Table
56094 t1      CREATE TABLE `t1` (
56095   `f_int1` int(11) DEFAULT NULL,
56096   `f_int2` int(11) DEFAULT NULL,
56097   `f_char1` char(20) DEFAULT NULL,
56098   `f_char2` char(20) DEFAULT NULL,
56099   `f_charbig` varchar(1000) DEFAULT NULL
56100 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
56101 /*!50100 PARTITION BY RANGE (f_int1)
56102 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
56103  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
56104  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
56105  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
56106  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
56107  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
56109 unified filelist
56110 t1#P#part_1.MYD
56111 t1#P#part_1.MYI
56112 t1#P#part_2.MYD
56113 t1#P#part_2.MYI
56114 t1#P#part_3.MYD
56115 t1#P#part_3.MYI
56116 t1#P#part_4.MYD
56117 t1#P#part_4.MYI
56118 t1#P#part_5.MYD
56119 t1#P#part_5.MYI
56120 t1#P#parta.MYD
56121 t1#P#parta.MYI
56122 t1.frm
56123 t1.par
56125 # check prerequisites-1 success:    1
56126 # check COUNT(*) success:    1
56127 # check MIN/MAX(f_int1) success:    1
56128 # check MIN/MAX(f_int2) success:    1
56129 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56130 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
56131 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
56132 WHERE f_int1 IN (2,3);
56133 # check prerequisites-3 success:    1
56134 DELETE FROM t1 WHERE f_charbig = 'delete me';
56135 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
56136 # check read via f_int1 success: 1
56137 # check read via f_int2 success: 1
56138         
56139 # check multiple-1 success:     1
56140 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
56141         
56142 # check multiple-2 success:     1
56143 INSERT INTO t1 SELECT * FROM t0_template
56144 WHERE MOD(f_int1,3) = 0;
56145         
56146 # check multiple-3 success:     1
56147 UPDATE t1 SET f_int1 = f_int1 + @max_row
56148 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
56149 AND @max_row_div2 + @max_row_div4;
56150         
56151 # check multiple-4 success:     1
56152 DELETE FROM t1
56153 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
56154 AND @max_row_div2 + @max_row_div4 + @max_row;
56155         
56156 # check multiple-5 success:     1
56157 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
56158 INSERT INTO t1
56159 SET f_int1 = @cur_value , f_int2 = @cur_value,
56160 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
56161 f_charbig = '#SINGLE#';
56162         
56163 # check single-1 success:       1
56164 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
56165 INSERT INTO t1
56166 SET f_int1 = @cur_value , f_int2 = @cur_value,
56167 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
56168 f_charbig = '#SINGLE#';
56169         
56170 # check single-2 success:       1
56171 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
56172 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
56173 UPDATE t1 SET f_int1 = @cur_value2
56174 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
56175         
56176 # check single-3 success:       1
56177 SET @cur_value1= -1;
56178 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
56179 UPDATE t1 SET f_int1 = @cur_value1
56180 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
56181         
56182 # check single-4 success:       1
56183 SELECT MAX(f_int1) INTO @cur_value FROM t1;
56184 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
56185         
56186 # check single-5 success:       1
56187 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
56188         
56189 # check single-6 success:       1
56190 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
56191 ERROR HY000: Table has no partition for value 2147483647
56192 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
56193 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
56194 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
56195 f_charbig = '#NULL#';
56196 INSERT INTO t1
56197 SET f_int1 = NULL , f_int2 = -@max_row,
56198 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
56199 f_charbig = '#NULL#';
56200 # check null success:    1
56201         
56202 # check null-1 success:         1
56203 UPDATE t1 SET f_int1 = -@max_row
56204 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
56205 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
56206         
56207 # check null-2 success:         1
56208 UPDATE t1 SET f_int1 = NULL
56209 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
56210 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
56211         
56212 # check null-3 success:         1
56213 DELETE FROM t1
56214 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
56215 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
56216         
56217 # check null-4 success:         1
56218 DELETE FROM t1
56219 WHERE f_int1 = 0 AND f_int2 = 0
56220 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
56221 AND f_charbig = '#NULL#';
56222 SET AUTOCOMMIT= 0;
56223 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56224 SELECT f_int1, f_int1, '', '', 'was inserted'
56225 FROM t0_template source_tab
56226 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
56227         
56228 # check transactions-1 success:         1
56229 COMMIT WORK;
56230         
56231 # check transactions-2 success:         1
56232 ROLLBACK WORK;
56233         
56234 # check transactions-3 success:         1
56235 DELETE FROM t1 WHERE f_charbig = 'was inserted';
56236 COMMIT WORK;
56237 ROLLBACK WORK;
56238         
56239 # check transactions-4 success:         1
56240 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56241 SELECT f_int1, f_int1, '', '', 'was inserted'
56242 FROM t0_template source_tab
56243 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
56244         
56245 # check transactions-5 success:         1
56246 ROLLBACK WORK;
56247 Warnings:
56248 Warning 1196    Some non-transactional changed tables couldn't be rolled back
56249         
56250 # check transactions-6 success:         1
56251 # INFO: Storage engine used for t1 seems to be not transactional.
56252 COMMIT;
56253         
56254 # check transactions-7 success:         1
56255 DELETE FROM t1 WHERE f_charbig = 'was inserted';
56256 COMMIT WORK;
56257 SET @@session.sql_mode = 'traditional';
56258 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
56259 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56260 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
56261 '', '', 'was inserted' FROM t0_template
56262 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
56263 ERROR 22012: Division by 0
56264 COMMIT;
56265         
56266 # check transactions-8 success:         1
56267 # INFO: Storage engine used for t1 seems to be unable to revert
56268 #       changes made by the failing statement.
56269 SET @@session.sql_mode = '';
56270 SET AUTOCOMMIT= 1;
56271 DELETE FROM t1 WHERE f_charbig = 'was inserted';
56272 COMMIT WORK;
56273 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
56274         
56275 # check special-1 success:      1
56276 UPDATE t1 SET f_charbig = '';
56277         
56278 # check special-2 success:      1
56279 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
56280 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
56281 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
56282 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56283 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56284 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56285 'just inserted' FROM t0_template
56286 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56287 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
56288 BEGIN
56289 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56290 f_charbig = 'updated by trigger'
56291       WHERE f_int1 = new.f_int1;
56292 END|
56293 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56294 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
56295 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56296         
56297 # check trigger-1 success:      1
56298 DROP TRIGGER trg_1;
56299 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56300 f_int2 = CAST(f_char1 AS SIGNED INT),
56301 f_charbig = 'just inserted'
56302    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56303 DELETE FROM t0_aux
56304 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56305 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56306 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56307 'just inserted' FROM t0_template
56308 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56309 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
56310 BEGIN
56311 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56312 f_charbig = 'updated by trigger'
56313       WHERE f_int1 = new.f_int1;
56314 END|
56315 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56316 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
56317 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56318         
56319 # check trigger-2 success:      1
56320 DROP TRIGGER trg_1;
56321 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56322 f_int2 = CAST(f_char1 AS SIGNED INT),
56323 f_charbig = 'just inserted'
56324    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56325 DELETE FROM t0_aux
56326 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56327 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56328 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56329 'just inserted' FROM t0_template
56330 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56331 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
56332 BEGIN
56333 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56334 f_charbig = 'updated by trigger'
56335       WHERE f_int1 = new.f_int1;
56336 END|
56337 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
56338 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56339         
56340 # check trigger-3 success:      1
56341 DROP TRIGGER trg_1;
56342 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56343 f_int2 = CAST(f_char1 AS SIGNED INT),
56344 f_charbig = 'just inserted'
56345    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56346 DELETE FROM t0_aux
56347 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56348 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56349 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56350 'just inserted' FROM t0_template
56351 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56352 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
56353 BEGIN
56354 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56355 f_charbig = 'updated by trigger'
56356       WHERE f_int1 = - old.f_int1;
56357 END|
56358 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
56359 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56360         
56361 # check trigger-4 success:      1
56362 DROP TRIGGER trg_1;
56363 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56364 f_int2 = CAST(f_char1 AS SIGNED INT),
56365 f_charbig = 'just inserted'
56366    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56367 DELETE FROM t0_aux
56368 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56369 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56370 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56371 'just inserted' FROM t0_template
56372 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56373 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
56374 BEGIN
56375 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56376 f_charbig = 'updated by trigger'
56377       WHERE f_int1 = new.f_int1;
56378 END|
56379 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
56380 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56381         
56382 # check trigger-5 success:      1
56383 DROP TRIGGER trg_1;
56384 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56385 f_int2 = CAST(f_char1 AS SIGNED INT),
56386 f_charbig = 'just inserted'
56387    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56388 DELETE FROM t0_aux
56389 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56390 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56391 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56392 'just inserted' FROM t0_template
56393 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56394 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
56395 BEGIN
56396 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56397 f_charbig = 'updated by trigger'
56398       WHERE f_int1 = - old.f_int1;
56399 END|
56400 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
56401 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56402         
56403 # check trigger-6 success:      1
56404 DROP TRIGGER trg_1;
56405 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56406 f_int2 = CAST(f_char1 AS SIGNED INT),
56407 f_charbig = 'just inserted'
56408    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56409 DELETE FROM t0_aux
56410 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56411 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56412 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56413 'just inserted' FROM t0_template
56414 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56415 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
56416 BEGIN
56417 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56418 f_charbig = 'updated by trigger'
56419       WHERE f_int1 = - old.f_int1;
56420 END|
56421 DELETE FROM t0_aux
56422 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56423         
56424 # check trigger-7 success:      1
56425 DROP TRIGGER trg_1;
56426 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56427 f_int2 = CAST(f_char1 AS SIGNED INT),
56428 f_charbig = 'just inserted'
56429    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56430 DELETE FROM t0_aux
56431 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56432 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56433 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56434 'just inserted' FROM t0_template
56435 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56436 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
56437 BEGIN
56438 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56439 f_charbig = 'updated by trigger'
56440       WHERE f_int1 = - old.f_int1;
56441 END|
56442 DELETE FROM t0_aux
56443 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56444         
56445 # check trigger-8 success:      1
56446 DROP TRIGGER trg_1;
56447 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56448 f_int2 = CAST(f_char1 AS SIGNED INT),
56449 f_charbig = 'just inserted'
56450    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56451 DELETE FROM t0_aux
56452 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56453 DELETE FROM t1
56454 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56455 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
56456 BEGIN
56457 SET new.f_int1 = old.f_int1 + @max_row,
56458 new.f_int2 = old.f_int2 - @max_row,
56459 new.f_charbig = '####updated per update trigger####';
56460 END|
56461 UPDATE t1
56462 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
56463 f_charbig = '####updated per update statement itself####';
56464         
56465 # check trigger-9 success:      1
56466 DROP TRIGGER trg_2;
56467 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56468 f_int2 = CAST(f_char1 AS SIGNED INT),
56469 f_charbig = CONCAT('===',f_char1,'===');
56470 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
56471 BEGIN
56472 SET new.f_int1 = new.f_int1 + @max_row,
56473 new.f_int2 = new.f_int2 - @max_row,
56474 new.f_charbig = '####updated per update trigger####';
56475 END|
56476 UPDATE t1
56477 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
56478 f_charbig = '####updated per update statement itself####';
56479         
56480 # check trigger-10 success:     1
56481 DROP TRIGGER trg_2;
56482 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56483 f_int2 = CAST(f_char1 AS SIGNED INT),
56484 f_charbig = CONCAT('===',f_char1,'===');
56485 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
56486 BEGIN
56487 SET new.f_int1 = @my_max1 + @counter,
56488 new.f_int2 = @my_min2 - @counter,
56489 new.f_charbig = '####updated per insert trigger####';
56490 SET @counter = @counter + 1;
56491 END|
56492 SET @counter = 1;
56493 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
56494 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56495 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
56496 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
56497 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
56498 ORDER BY f_int1;
56499 DROP TRIGGER trg_3;
56500         
56501 # check trigger-11 success:     1
56502 DELETE FROM t1
56503 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
56504 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
56505 AND f_charbig = '####updated per insert trigger####';
56506 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
56507 BEGIN
56508 SET new.f_int1 = @my_max1 + @counter,
56509 new.f_int2 = @my_min2 - @counter,
56510 new.f_charbig = '####updated per insert trigger####';
56511 SET @counter = @counter + 1;
56512 END|
56513 SET @counter = 1;
56514 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
56515 INSERT INTO t1 (f_char1, f_char2, f_charbig)
56516 SELECT CAST(f_int1 AS CHAR),
56517 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
56518 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
56519 ORDER BY f_int1;
56520 DROP TRIGGER trg_3;
56521         
56522 # check trigger-12 success:     1
56523 DELETE FROM t1
56524 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
56525 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
56526 AND f_charbig = '####updated per insert trigger####';
56527 ANALYZE  TABLE t1;
56528 Table   Op      Msg_type        Msg_text
56529 test.t1 analyze status  OK
56530 CHECK    TABLE t1 EXTENDED;
56531 Table   Op      Msg_type        Msg_text
56532 test.t1 check   status  OK
56533 CHECKSUM TABLE t1 EXTENDED;
56534 Table   Checksum
56535 test.t1 <some_value>
56536 OPTIMIZE TABLE t1;
56537 Table   Op      Msg_type        Msg_text
56538 test.t1 optimize        status  OK
56539 # check layout success:    1
56540 REPAIR   TABLE t1 EXTENDED;
56541 Table   Op      Msg_type        Msg_text
56542 test.t1 repair  status  OK
56543 # check layout success:    1
56544 TRUNCATE t1;
56545         
56546 # check TRUNCATE success:       1
56547 # check layout success:    1
56548 # End usability test (inc/partition_check.inc)
56549 DROP TABLE t1;
56550 CREATE TABLE t1 (
56551 f_int1 INTEGER,
56552 f_int2 INTEGER,
56553 f_char1 CHAR(20),
56554 f_char2 CHAR(20),
56555 f_charbig VARCHAR(1000)
56558 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
56559 (PARTITION part_1 VALUES LESS THAN (0),
56560 PARTITION part_2 VALUES LESS THAN (5),
56561 PARTITION part_3 VALUES LESS THAN (10),
56562 PARTITION part_4 VALUES LESS THAN (2147483646));
56563 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
56564 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
56565 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
56566 ALTER TABLE t1 OPTIMIZE PARTITION ALL;
56567 Table   Op      Msg_type        Msg_text
56568 test.t1 optimize        status  OK
56569 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
56570 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
56571 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
56572 # Start usability test (inc/partition_check.inc)
56573 create_command
56574 SHOW CREATE TABLE t1;
56575 Table   Create Table
56576 t1      CREATE TABLE `t1` (
56577   `f_int1` int(11) DEFAULT NULL,
56578   `f_int2` int(11) DEFAULT NULL,
56579   `f_char1` char(20) DEFAULT NULL,
56580   `f_char2` char(20) DEFAULT NULL,
56581   `f_charbig` varchar(1000) DEFAULT NULL
56582 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
56583 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
56584 SUBPARTITION BY HASH (f_int1)
56585 SUBPARTITIONS 2
56586 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
56587  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
56588  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
56589  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
56591 unified filelist
56592 t1#P#part_1#SP#part_1sp0.MYD
56593 t1#P#part_1#SP#part_1sp0.MYI
56594 t1#P#part_1#SP#part_1sp1.MYD
56595 t1#P#part_1#SP#part_1sp1.MYI
56596 t1#P#part_2#SP#part_2sp0.MYD
56597 t1#P#part_2#SP#part_2sp0.MYI
56598 t1#P#part_2#SP#part_2sp1.MYD
56599 t1#P#part_2#SP#part_2sp1.MYI
56600 t1#P#part_3#SP#part_3sp0.MYD
56601 t1#P#part_3#SP#part_3sp0.MYI
56602 t1#P#part_3#SP#part_3sp1.MYD
56603 t1#P#part_3#SP#part_3sp1.MYI
56604 t1#P#part_4#SP#part_4sp0.MYD
56605 t1#P#part_4#SP#part_4sp0.MYI
56606 t1#P#part_4#SP#part_4sp1.MYD
56607 t1#P#part_4#SP#part_4sp1.MYI
56608 t1.frm
56609 t1.par
56611 # check prerequisites-1 success:    1
56612 # check COUNT(*) success:    1
56613 # check MIN/MAX(f_int1) success:    1
56614 # check MIN/MAX(f_int2) success:    1
56615 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56616 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
56617 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
56618 WHERE f_int1 IN (2,3);
56619 # check prerequisites-3 success:    1
56620 DELETE FROM t1 WHERE f_charbig = 'delete me';
56621 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
56622 # check read via f_int1 success: 1
56623 # check read via f_int2 success: 1
56624         
56625 # check multiple-1 success:     1
56626 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
56627         
56628 # check multiple-2 success:     1
56629 INSERT INTO t1 SELECT * FROM t0_template
56630 WHERE MOD(f_int1,3) = 0;
56631         
56632 # check multiple-3 success:     1
56633 UPDATE t1 SET f_int1 = f_int1 + @max_row
56634 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
56635 AND @max_row_div2 + @max_row_div4;
56636         
56637 # check multiple-4 success:     1
56638 DELETE FROM t1
56639 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
56640 AND @max_row_div2 + @max_row_div4 + @max_row;
56641         
56642 # check multiple-5 success:     1
56643 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
56644 INSERT INTO t1
56645 SET f_int1 = @cur_value , f_int2 = @cur_value,
56646 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
56647 f_charbig = '#SINGLE#';
56648         
56649 # check single-1 success:       1
56650 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
56651 INSERT INTO t1
56652 SET f_int1 = @cur_value , f_int2 = @cur_value,
56653 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
56654 f_charbig = '#SINGLE#';
56655         
56656 # check single-2 success:       1
56657 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
56658 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
56659 UPDATE t1 SET f_int1 = @cur_value2
56660 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
56661         
56662 # check single-3 success:       1
56663 SET @cur_value1= -1;
56664 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
56665 UPDATE t1 SET f_int1 = @cur_value1
56666 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
56667         
56668 # check single-4 success:       1
56669 SELECT MAX(f_int1) INTO @cur_value FROM t1;
56670 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
56671         
56672 # check single-5 success:       1
56673 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
56674         
56675 # check single-6 success:       1
56676 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
56677         
56678 # check single-7 success:       1
56679 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
56680 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
56681 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
56682 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
56683 f_charbig = '#NULL#';
56684 INSERT INTO t1
56685 SET f_int1 = NULL , f_int2 = -@max_row,
56686 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
56687 f_charbig = '#NULL#';
56688 # check null success:    1
56689         
56690 # check null-1 success:         1
56691 UPDATE t1 SET f_int1 = -@max_row
56692 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
56693 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
56694         
56695 # check null-2 success:         1
56696 UPDATE t1 SET f_int1 = NULL
56697 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
56698 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
56699         
56700 # check null-3 success:         1
56701 DELETE FROM t1
56702 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
56703 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
56704         
56705 # check null-4 success:         1
56706 DELETE FROM t1
56707 WHERE f_int1 = 0 AND f_int2 = 0
56708 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
56709 AND f_charbig = '#NULL#';
56710 SET AUTOCOMMIT= 0;
56711 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56712 SELECT f_int1, f_int1, '', '', 'was inserted'
56713 FROM t0_template source_tab
56714 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
56715         
56716 # check transactions-1 success:         1
56717 COMMIT WORK;
56718         
56719 # check transactions-2 success:         1
56720 ROLLBACK WORK;
56721         
56722 # check transactions-3 success:         1
56723 DELETE FROM t1 WHERE f_charbig = 'was inserted';
56724 COMMIT WORK;
56725 ROLLBACK WORK;
56726         
56727 # check transactions-4 success:         1
56728 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56729 SELECT f_int1, f_int1, '', '', 'was inserted'
56730 FROM t0_template source_tab
56731 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
56732         
56733 # check transactions-5 success:         1
56734 ROLLBACK WORK;
56735 Warnings:
56736 Warning 1196    Some non-transactional changed tables couldn't be rolled back
56737         
56738 # check transactions-6 success:         1
56739 # INFO: Storage engine used for t1 seems to be not transactional.
56740 COMMIT;
56741         
56742 # check transactions-7 success:         1
56743 DELETE FROM t1 WHERE f_charbig = 'was inserted';
56744 COMMIT WORK;
56745 SET @@session.sql_mode = 'traditional';
56746 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
56747 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56748 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
56749 '', '', 'was inserted' FROM t0_template
56750 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
56751 ERROR 22012: Division by 0
56752 COMMIT;
56753         
56754 # check transactions-8 success:         1
56755 # INFO: Storage engine used for t1 seems to be unable to revert
56756 #       changes made by the failing statement.
56757 SET @@session.sql_mode = '';
56758 SET AUTOCOMMIT= 1;
56759 DELETE FROM t1 WHERE f_charbig = 'was inserted';
56760 COMMIT WORK;
56761 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
56762         
56763 # check special-1 success:      1
56764 UPDATE t1 SET f_charbig = '';
56765         
56766 # check special-2 success:      1
56767 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
56768 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
56769 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
56770 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56771 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56772 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56773 'just inserted' FROM t0_template
56774 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56775 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
56776 BEGIN
56777 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56778 f_charbig = 'updated by trigger'
56779       WHERE f_int1 = new.f_int1;
56780 END|
56781 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56782 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
56783 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56784         
56785 # check trigger-1 success:      1
56786 DROP TRIGGER trg_1;
56787 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56788 f_int2 = CAST(f_char1 AS SIGNED INT),
56789 f_charbig = 'just inserted'
56790    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56791 DELETE FROM t0_aux
56792 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56793 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56794 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56795 'just inserted' FROM t0_template
56796 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56797 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
56798 BEGIN
56799 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56800 f_charbig = 'updated by trigger'
56801       WHERE f_int1 = new.f_int1;
56802 END|
56803 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56804 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
56805 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56806         
56807 # check trigger-2 success:      1
56808 DROP TRIGGER trg_1;
56809 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56810 f_int2 = CAST(f_char1 AS SIGNED INT),
56811 f_charbig = 'just inserted'
56812    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56813 DELETE FROM t0_aux
56814 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56815 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56816 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56817 'just inserted' FROM t0_template
56818 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56819 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
56820 BEGIN
56821 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56822 f_charbig = 'updated by trigger'
56823       WHERE f_int1 = new.f_int1;
56824 END|
56825 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
56826 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56827         
56828 # check trigger-3 success:      1
56829 DROP TRIGGER trg_1;
56830 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56831 f_int2 = CAST(f_char1 AS SIGNED INT),
56832 f_charbig = 'just inserted'
56833    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56834 DELETE FROM t0_aux
56835 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56836 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56837 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56838 'just inserted' FROM t0_template
56839 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56840 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
56841 BEGIN
56842 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56843 f_charbig = 'updated by trigger'
56844       WHERE f_int1 = - old.f_int1;
56845 END|
56846 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
56847 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56848         
56849 # check trigger-4 success:      1
56850 DROP TRIGGER trg_1;
56851 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56852 f_int2 = CAST(f_char1 AS SIGNED INT),
56853 f_charbig = 'just inserted'
56854    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56855 DELETE FROM t0_aux
56856 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56857 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56858 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56859 'just inserted' FROM t0_template
56860 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56861 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
56862 BEGIN
56863 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56864 f_charbig = 'updated by trigger'
56865       WHERE f_int1 = new.f_int1;
56866 END|
56867 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
56868 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56869         
56870 # check trigger-5 success:      1
56871 DROP TRIGGER trg_1;
56872 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56873 f_int2 = CAST(f_char1 AS SIGNED INT),
56874 f_charbig = 'just inserted'
56875    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56876 DELETE FROM t0_aux
56877 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56878 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56879 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56880 'just inserted' FROM t0_template
56881 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56882 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
56883 BEGIN
56884 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56885 f_charbig = 'updated by trigger'
56886       WHERE f_int1 = - old.f_int1;
56887 END|
56888 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
56889 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56890         
56891 # check trigger-6 success:      1
56892 DROP TRIGGER trg_1;
56893 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56894 f_int2 = CAST(f_char1 AS SIGNED INT),
56895 f_charbig = 'just inserted'
56896    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56897 DELETE FROM t0_aux
56898 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56899 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56900 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56901 'just inserted' FROM t0_template
56902 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56903 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
56904 BEGIN
56905 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56906 f_charbig = 'updated by trigger'
56907       WHERE f_int1 = - old.f_int1;
56908 END|
56909 DELETE FROM t0_aux
56910 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56911         
56912 # check trigger-7 success:      1
56913 DROP TRIGGER trg_1;
56914 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56915 f_int2 = CAST(f_char1 AS SIGNED INT),
56916 f_charbig = 'just inserted'
56917    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56918 DELETE FROM t0_aux
56919 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56920 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56921 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56922 'just inserted' FROM t0_template
56923 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56924 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
56925 BEGIN
56926 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56927 f_charbig = 'updated by trigger'
56928       WHERE f_int1 = - old.f_int1;
56929 END|
56930 DELETE FROM t0_aux
56931 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56932         
56933 # check trigger-8 success:      1
56934 DROP TRIGGER trg_1;
56935 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56936 f_int2 = CAST(f_char1 AS SIGNED INT),
56937 f_charbig = 'just inserted'
56938    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56939 DELETE FROM t0_aux
56940 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56941 DELETE FROM t1
56942 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56943 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
56944 BEGIN
56945 SET new.f_int1 = old.f_int1 + @max_row,
56946 new.f_int2 = old.f_int2 - @max_row,
56947 new.f_charbig = '####updated per update trigger####';
56948 END|
56949 UPDATE t1
56950 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
56951 f_charbig = '####updated per update statement itself####';
56952         
56953 # check trigger-9 success:      1
56954 DROP TRIGGER trg_2;
56955 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56956 f_int2 = CAST(f_char1 AS SIGNED INT),
56957 f_charbig = CONCAT('===',f_char1,'===');
56958 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
56959 BEGIN
56960 SET new.f_int1 = new.f_int1 + @max_row,
56961 new.f_int2 = new.f_int2 - @max_row,
56962 new.f_charbig = '####updated per update trigger####';
56963 END|
56964 UPDATE t1
56965 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
56966 f_charbig = '####updated per update statement itself####';
56967         
56968 # check trigger-10 success:     1
56969 DROP TRIGGER trg_2;
56970 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56971 f_int2 = CAST(f_char1 AS SIGNED INT),
56972 f_charbig = CONCAT('===',f_char1,'===');
56973 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
56974 BEGIN
56975 SET new.f_int1 = @my_max1 + @counter,
56976 new.f_int2 = @my_min2 - @counter,
56977 new.f_charbig = '####updated per insert trigger####';
56978 SET @counter = @counter + 1;
56979 END|
56980 SET @counter = 1;
56981 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
56982 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56983 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
56984 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
56985 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
56986 ORDER BY f_int1;
56987 DROP TRIGGER trg_3;
56988         
56989 # check trigger-11 success:     1
56990 DELETE FROM t1
56991 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
56992 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
56993 AND f_charbig = '####updated per insert trigger####';
56994 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
56995 BEGIN
56996 SET new.f_int1 = @my_max1 + @counter,
56997 new.f_int2 = @my_min2 - @counter,
56998 new.f_charbig = '####updated per insert trigger####';
56999 SET @counter = @counter + 1;
57000 END|
57001 SET @counter = 1;
57002 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
57003 INSERT INTO t1 (f_char1, f_char2, f_charbig)
57004 SELECT CAST(f_int1 AS CHAR),
57005 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
57006 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
57007 ORDER BY f_int1;
57008 DROP TRIGGER trg_3;
57009         
57010 # check trigger-12 success:     1
57011 DELETE FROM t1
57012 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
57013 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
57014 AND f_charbig = '####updated per insert trigger####';
57015 ANALYZE  TABLE t1;
57016 Table   Op      Msg_type        Msg_text
57017 test.t1 analyze status  OK
57018 CHECK    TABLE t1 EXTENDED;
57019 Table   Op      Msg_type        Msg_text
57020 test.t1 check   status  OK
57021 CHECKSUM TABLE t1 EXTENDED;
57022 Table   Checksum
57023 test.t1 <some_value>
57024 OPTIMIZE TABLE t1;
57025 Table   Op      Msg_type        Msg_text
57026 test.t1 optimize        status  OK
57027 # check layout success:    1
57028 REPAIR   TABLE t1 EXTENDED;
57029 Table   Op      Msg_type        Msg_text
57030 test.t1 repair  status  OK
57031 # check layout success:    1
57032 TRUNCATE t1;
57033         
57034 # check TRUNCATE success:       1
57035 # check layout success:    1
57036 # End usability test (inc/partition_check.inc)
57037 DROP TABLE t1;
57038 CREATE TABLE t1 (
57039 f_int1 INTEGER,
57040 f_int2 INTEGER,
57041 f_char1 CHAR(20),
57042 f_char2 CHAR(20),
57043 f_charbig VARCHAR(1000)
57046 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
57047 (PARTITION part_1 VALUES LESS THAN (0)
57048 (SUBPARTITION subpart11, SUBPARTITION subpart12),
57049 PARTITION part_2 VALUES LESS THAN (5)
57050 (SUBPARTITION subpart21, SUBPARTITION subpart22),
57051 PARTITION part_3 VALUES LESS THAN (10)
57052 (SUBPARTITION subpart31, SUBPARTITION subpart32),
57053 PARTITION part_4 VALUES LESS THAN (2147483646)
57054 (SUBPARTITION subpart41, SUBPARTITION subpart42));
57055 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
57056 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
57057 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
57058 ALTER TABLE t1 OPTIMIZE PARTITION ALL;
57059 Table   Op      Msg_type        Msg_text
57060 test.t1 optimize        status  OK
57061 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
57062 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
57063 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
57064 # Start usability test (inc/partition_check.inc)
57065 create_command
57066 SHOW CREATE TABLE t1;
57067 Table   Create Table
57068 t1      CREATE TABLE `t1` (
57069   `f_int1` int(11) DEFAULT NULL,
57070   `f_int2` int(11) DEFAULT NULL,
57071   `f_char1` char(20) DEFAULT NULL,
57072   `f_char2` char(20) DEFAULT NULL,
57073   `f_charbig` varchar(1000) DEFAULT NULL
57074 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
57075 /*!50100 PARTITION BY RANGE (f_int1)
57076 SUBPARTITION BY KEY (f_int1)
57077 (PARTITION part_1 VALUES LESS THAN (0)
57078  (SUBPARTITION subpart11 ENGINE = MyISAM,
57079   SUBPARTITION subpart12 ENGINE = MyISAM),
57080  PARTITION part_2 VALUES LESS THAN (5)
57081  (SUBPARTITION subpart21 ENGINE = MyISAM,
57082   SUBPARTITION subpart22 ENGINE = MyISAM),
57083  PARTITION part_3 VALUES LESS THAN (10)
57084  (SUBPARTITION subpart31 ENGINE = MyISAM,
57085   SUBPARTITION subpart32 ENGINE = MyISAM),
57086  PARTITION part_4 VALUES LESS THAN (2147483646)
57087  (SUBPARTITION subpart41 ENGINE = MyISAM,
57088   SUBPARTITION subpart42 ENGINE = MyISAM)) */
57090 unified filelist
57091 t1#P#part_1#SP#subpart11.MYD
57092 t1#P#part_1#SP#subpart11.MYI
57093 t1#P#part_1#SP#subpart12.MYD
57094 t1#P#part_1#SP#subpart12.MYI
57095 t1#P#part_2#SP#subpart21.MYD
57096 t1#P#part_2#SP#subpart21.MYI
57097 t1#P#part_2#SP#subpart22.MYD
57098 t1#P#part_2#SP#subpart22.MYI
57099 t1#P#part_3#SP#subpart31.MYD
57100 t1#P#part_3#SP#subpart31.MYI
57101 t1#P#part_3#SP#subpart32.MYD
57102 t1#P#part_3#SP#subpart32.MYI
57103 t1#P#part_4#SP#subpart41.MYD
57104 t1#P#part_4#SP#subpart41.MYI
57105 t1#P#part_4#SP#subpart42.MYD
57106 t1#P#part_4#SP#subpart42.MYI
57107 t1.frm
57108 t1.par
57110 # check prerequisites-1 success:    1
57111 # check COUNT(*) success:    1
57112 # check MIN/MAX(f_int1) success:    1
57113 # check MIN/MAX(f_int2) success:    1
57114 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57115 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
57116 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
57117 WHERE f_int1 IN (2,3);
57118 # check prerequisites-3 success:    1
57119 DELETE FROM t1 WHERE f_charbig = 'delete me';
57120 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
57121 # check read via f_int1 success: 1
57122 # check read via f_int2 success: 1
57123         
57124 # check multiple-1 success:     1
57125 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
57126         
57127 # check multiple-2 success:     1
57128 INSERT INTO t1 SELECT * FROM t0_template
57129 WHERE MOD(f_int1,3) = 0;
57130         
57131 # check multiple-3 success:     1
57132 UPDATE t1 SET f_int1 = f_int1 + @max_row
57133 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
57134 AND @max_row_div2 + @max_row_div4;
57135         
57136 # check multiple-4 success:     1
57137 DELETE FROM t1
57138 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
57139 AND @max_row_div2 + @max_row_div4 + @max_row;
57140         
57141 # check multiple-5 success:     1
57142 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
57143 INSERT INTO t1
57144 SET f_int1 = @cur_value , f_int2 = @cur_value,
57145 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
57146 f_charbig = '#SINGLE#';
57147         
57148 # check single-1 success:       1
57149 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
57150 INSERT INTO t1
57151 SET f_int1 = @cur_value , f_int2 = @cur_value,
57152 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
57153 f_charbig = '#SINGLE#';
57154         
57155 # check single-2 success:       1
57156 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
57157 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
57158 UPDATE t1 SET f_int1 = @cur_value2
57159 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
57160         
57161 # check single-3 success:       1
57162 SET @cur_value1= -1;
57163 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
57164 UPDATE t1 SET f_int1 = @cur_value1
57165 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
57166         
57167 # check single-4 success:       1
57168 SELECT MAX(f_int1) INTO @cur_value FROM t1;
57169 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
57170         
57171 # check single-5 success:       1
57172 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
57173         
57174 # check single-6 success:       1
57175 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
57176 ERROR HY000: Table has no partition for value 2147483647
57177 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
57178 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
57179 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
57180 f_charbig = '#NULL#';
57181 INSERT INTO t1
57182 SET f_int1 = NULL , f_int2 = -@max_row,
57183 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
57184 f_charbig = '#NULL#';
57185 # check null success:    1
57186         
57187 # check null-1 success:         1
57188 UPDATE t1 SET f_int1 = -@max_row
57189 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
57190 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
57191         
57192 # check null-2 success:         1
57193 UPDATE t1 SET f_int1 = NULL
57194 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
57195 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
57196         
57197 # check null-3 success:         1
57198 DELETE FROM t1
57199 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
57200 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
57201         
57202 # check null-4 success:         1
57203 DELETE FROM t1
57204 WHERE f_int1 = 0 AND f_int2 = 0
57205 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
57206 AND f_charbig = '#NULL#';
57207 SET AUTOCOMMIT= 0;
57208 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57209 SELECT f_int1, f_int1, '', '', 'was inserted'
57210 FROM t0_template source_tab
57211 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
57212         
57213 # check transactions-1 success:         1
57214 COMMIT WORK;
57215         
57216 # check transactions-2 success:         1
57217 ROLLBACK WORK;
57218         
57219 # check transactions-3 success:         1
57220 DELETE FROM t1 WHERE f_charbig = 'was inserted';
57221 COMMIT WORK;
57222 ROLLBACK WORK;
57223         
57224 # check transactions-4 success:         1
57225 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57226 SELECT f_int1, f_int1, '', '', 'was inserted'
57227 FROM t0_template source_tab
57228 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
57229         
57230 # check transactions-5 success:         1
57231 ROLLBACK WORK;
57232 Warnings:
57233 Warning 1196    Some non-transactional changed tables couldn't be rolled back
57234         
57235 # check transactions-6 success:         1
57236 # INFO: Storage engine used for t1 seems to be not transactional.
57237 COMMIT;
57238         
57239 # check transactions-7 success:         1
57240 DELETE FROM t1 WHERE f_charbig = 'was inserted';
57241 COMMIT WORK;
57242 SET @@session.sql_mode = 'traditional';
57243 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
57244 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57245 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
57246 '', '', 'was inserted' FROM t0_template
57247 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
57248 ERROR 22012: Division by 0
57249 COMMIT;
57250         
57251 # check transactions-8 success:         1
57252 # INFO: Storage engine used for t1 seems to be unable to revert
57253 #       changes made by the failing statement.
57254 SET @@session.sql_mode = '';
57255 SET AUTOCOMMIT= 1;
57256 DELETE FROM t1 WHERE f_charbig = 'was inserted';
57257 COMMIT WORK;
57258 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
57259         
57260 # check special-1 success:      1
57261 UPDATE t1 SET f_charbig = '';
57262         
57263 # check special-2 success:      1
57264 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
57265 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
57266 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
57267 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57268 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57269 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57270 'just inserted' FROM t0_template
57271 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57272 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
57273 BEGIN
57274 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57275 f_charbig = 'updated by trigger'
57276       WHERE f_int1 = new.f_int1;
57277 END|
57278 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57279 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
57280 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57281         
57282 # check trigger-1 success:      1
57283 DROP TRIGGER trg_1;
57284 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57285 f_int2 = CAST(f_char1 AS SIGNED INT),
57286 f_charbig = 'just inserted'
57287    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57288 DELETE FROM t0_aux
57289 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57290 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57291 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57292 'just inserted' FROM t0_template
57293 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57294 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
57295 BEGIN
57296 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57297 f_charbig = 'updated by trigger'
57298       WHERE f_int1 = new.f_int1;
57299 END|
57300 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57301 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
57302 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57303         
57304 # check trigger-2 success:      1
57305 DROP TRIGGER trg_1;
57306 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57307 f_int2 = CAST(f_char1 AS SIGNED INT),
57308 f_charbig = 'just inserted'
57309    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57310 DELETE FROM t0_aux
57311 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57312 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57313 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57314 'just inserted' FROM t0_template
57315 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57316 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
57317 BEGIN
57318 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57319 f_charbig = 'updated by trigger'
57320       WHERE f_int1 = new.f_int1;
57321 END|
57322 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
57323 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57324         
57325 # check trigger-3 success:      1
57326 DROP TRIGGER trg_1;
57327 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57328 f_int2 = CAST(f_char1 AS SIGNED INT),
57329 f_charbig = 'just inserted'
57330    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57331 DELETE FROM t0_aux
57332 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57333 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57334 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57335 'just inserted' FROM t0_template
57336 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57337 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
57338 BEGIN
57339 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57340 f_charbig = 'updated by trigger'
57341       WHERE f_int1 = - old.f_int1;
57342 END|
57343 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
57344 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57345         
57346 # check trigger-4 success:      1
57347 DROP TRIGGER trg_1;
57348 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57349 f_int2 = CAST(f_char1 AS SIGNED INT),
57350 f_charbig = 'just inserted'
57351    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57352 DELETE FROM t0_aux
57353 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57354 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57355 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57356 'just inserted' FROM t0_template
57357 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57358 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
57359 BEGIN
57360 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57361 f_charbig = 'updated by trigger'
57362       WHERE f_int1 = new.f_int1;
57363 END|
57364 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
57365 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57366         
57367 # check trigger-5 success:      1
57368 DROP TRIGGER trg_1;
57369 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57370 f_int2 = CAST(f_char1 AS SIGNED INT),
57371 f_charbig = 'just inserted'
57372    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57373 DELETE FROM t0_aux
57374 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57375 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57376 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57377 'just inserted' FROM t0_template
57378 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57379 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
57380 BEGIN
57381 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57382 f_charbig = 'updated by trigger'
57383       WHERE f_int1 = - old.f_int1;
57384 END|
57385 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
57386 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57387         
57388 # check trigger-6 success:      1
57389 DROP TRIGGER trg_1;
57390 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57391 f_int2 = CAST(f_char1 AS SIGNED INT),
57392 f_charbig = 'just inserted'
57393    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57394 DELETE FROM t0_aux
57395 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57396 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57397 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57398 'just inserted' FROM t0_template
57399 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57400 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
57401 BEGIN
57402 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57403 f_charbig = 'updated by trigger'
57404       WHERE f_int1 = - old.f_int1;
57405 END|
57406 DELETE FROM t0_aux
57407 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57408         
57409 # check trigger-7 success:      1
57410 DROP TRIGGER trg_1;
57411 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57412 f_int2 = CAST(f_char1 AS SIGNED INT),
57413 f_charbig = 'just inserted'
57414    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57415 DELETE FROM t0_aux
57416 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57417 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57418 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57419 'just inserted' FROM t0_template
57420 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57421 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
57422 BEGIN
57423 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57424 f_charbig = 'updated by trigger'
57425       WHERE f_int1 = - old.f_int1;
57426 END|
57427 DELETE FROM t0_aux
57428 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57429         
57430 # check trigger-8 success:      1
57431 DROP TRIGGER trg_1;
57432 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57433 f_int2 = CAST(f_char1 AS SIGNED INT),
57434 f_charbig = 'just inserted'
57435    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57436 DELETE FROM t0_aux
57437 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57438 DELETE FROM t1
57439 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57440 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
57441 BEGIN
57442 SET new.f_int1 = old.f_int1 + @max_row,
57443 new.f_int2 = old.f_int2 - @max_row,
57444 new.f_charbig = '####updated per update trigger####';
57445 END|
57446 UPDATE t1
57447 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
57448 f_charbig = '####updated per update statement itself####';
57449         
57450 # check trigger-9 success:      1
57451 DROP TRIGGER trg_2;
57452 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57453 f_int2 = CAST(f_char1 AS SIGNED INT),
57454 f_charbig = CONCAT('===',f_char1,'===');
57455 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
57456 BEGIN
57457 SET new.f_int1 = new.f_int1 + @max_row,
57458 new.f_int2 = new.f_int2 - @max_row,
57459 new.f_charbig = '####updated per update trigger####';
57460 END|
57461 UPDATE t1
57462 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
57463 f_charbig = '####updated per update statement itself####';
57464         
57465 # check trigger-10 success:     1
57466 DROP TRIGGER trg_2;
57467 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57468 f_int2 = CAST(f_char1 AS SIGNED INT),
57469 f_charbig = CONCAT('===',f_char1,'===');
57470 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
57471 BEGIN
57472 SET new.f_int1 = @my_max1 + @counter,
57473 new.f_int2 = @my_min2 - @counter,
57474 new.f_charbig = '####updated per insert trigger####';
57475 SET @counter = @counter + 1;
57476 END|
57477 SET @counter = 1;
57478 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
57479 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57480 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
57481 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
57482 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
57483 ORDER BY f_int1;
57484 DROP TRIGGER trg_3;
57485         
57486 # check trigger-11 success:     1
57487 DELETE FROM t1
57488 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
57489 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
57490 AND f_charbig = '####updated per insert trigger####';
57491 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
57492 BEGIN
57493 SET new.f_int1 = @my_max1 + @counter,
57494 new.f_int2 = @my_min2 - @counter,
57495 new.f_charbig = '####updated per insert trigger####';
57496 SET @counter = @counter + 1;
57497 END|
57498 SET @counter = 1;
57499 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
57500 INSERT INTO t1 (f_char1, f_char2, f_charbig)
57501 SELECT CAST(f_int1 AS CHAR),
57502 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
57503 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
57504 ORDER BY f_int1;
57505 DROP TRIGGER trg_3;
57506         
57507 # check trigger-12 success:     1
57508 DELETE FROM t1
57509 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
57510 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
57511 AND f_charbig = '####updated per insert trigger####';
57512 ANALYZE  TABLE t1;
57513 Table   Op      Msg_type        Msg_text
57514 test.t1 analyze status  OK
57515 CHECK    TABLE t1 EXTENDED;
57516 Table   Op      Msg_type        Msg_text
57517 test.t1 check   status  OK
57518 CHECKSUM TABLE t1 EXTENDED;
57519 Table   Checksum
57520 test.t1 <some_value>
57521 OPTIMIZE TABLE t1;
57522 Table   Op      Msg_type        Msg_text
57523 test.t1 optimize        status  OK
57524 # check layout success:    1
57525 REPAIR   TABLE t1 EXTENDED;
57526 Table   Op      Msg_type        Msg_text
57527 test.t1 repair  status  OK
57528 # check layout success:    1
57529 TRUNCATE t1;
57530         
57531 # check TRUNCATE success:       1
57532 # check layout success:    1
57533 # End usability test (inc/partition_check.inc)
57534 DROP TABLE t1;
57535 CREATE TABLE t1 (
57536 f_int1 INTEGER,
57537 f_int2 INTEGER,
57538 f_char1 CHAR(20),
57539 f_char2 CHAR(20),
57540 f_charbig VARCHAR(1000)
57543 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
57544 (PARTITION part_1 VALUES IN (0)
57545 (SUBPARTITION sp11, SUBPARTITION sp12),
57546 PARTITION part_2 VALUES IN (1)
57547 (SUBPARTITION sp21, SUBPARTITION sp22),
57548 PARTITION part_3 VALUES IN (2)
57549 (SUBPARTITION sp31, SUBPARTITION sp32),
57550 PARTITION part_4 VALUES IN (NULL)
57551 (SUBPARTITION sp41, SUBPARTITION sp42));
57552 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
57553 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
57554 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
57555 ALTER TABLE t1 OPTIMIZE PARTITION ALL;
57556 Table   Op      Msg_type        Msg_text
57557 test.t1 optimize        status  OK
57558 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
57559 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
57560 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
57561 # Start usability test (inc/partition_check.inc)
57562 create_command
57563 SHOW CREATE TABLE t1;
57564 Table   Create Table
57565 t1      CREATE TABLE `t1` (
57566   `f_int1` int(11) DEFAULT NULL,
57567   `f_int2` int(11) DEFAULT NULL,
57568   `f_char1` char(20) DEFAULT NULL,
57569   `f_char2` char(20) DEFAULT NULL,
57570   `f_charbig` varchar(1000) DEFAULT NULL
57571 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
57572 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
57573 SUBPARTITION BY HASH (f_int1 + 1)
57574 (PARTITION part_1 VALUES IN (0)
57575  (SUBPARTITION sp11 ENGINE = MyISAM,
57576   SUBPARTITION sp12 ENGINE = MyISAM),
57577  PARTITION part_2 VALUES IN (1)
57578  (SUBPARTITION sp21 ENGINE = MyISAM,
57579   SUBPARTITION sp22 ENGINE = MyISAM),
57580  PARTITION part_3 VALUES IN (2)
57581  (SUBPARTITION sp31 ENGINE = MyISAM,
57582   SUBPARTITION sp32 ENGINE = MyISAM),
57583  PARTITION part_4 VALUES IN (NULL)
57584  (SUBPARTITION sp41 ENGINE = MyISAM,
57585   SUBPARTITION sp42 ENGINE = MyISAM)) */
57587 unified filelist
57588 t1#P#part_1#SP#sp11.MYD
57589 t1#P#part_1#SP#sp11.MYI
57590 t1#P#part_1#SP#sp12.MYD
57591 t1#P#part_1#SP#sp12.MYI
57592 t1#P#part_2#SP#sp21.MYD
57593 t1#P#part_2#SP#sp21.MYI
57594 t1#P#part_2#SP#sp22.MYD
57595 t1#P#part_2#SP#sp22.MYI
57596 t1#P#part_3#SP#sp31.MYD
57597 t1#P#part_3#SP#sp31.MYI
57598 t1#P#part_3#SP#sp32.MYD
57599 t1#P#part_3#SP#sp32.MYI
57600 t1#P#part_4#SP#sp41.MYD
57601 t1#P#part_4#SP#sp41.MYI
57602 t1#P#part_4#SP#sp42.MYD
57603 t1#P#part_4#SP#sp42.MYI
57604 t1.frm
57605 t1.par
57607 # check prerequisites-1 success:    1
57608 # check COUNT(*) success:    1
57609 # check MIN/MAX(f_int1) success:    1
57610 # check MIN/MAX(f_int2) success:    1
57611 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57612 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
57613 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
57614 WHERE f_int1 IN (2,3);
57615 # check prerequisites-3 success:    1
57616 DELETE FROM t1 WHERE f_charbig = 'delete me';
57617 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
57618 # check read via f_int1 success: 1
57619 # check read via f_int2 success: 1
57620         
57621 # check multiple-1 success:     1
57622 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
57623         
57624 # check multiple-2 success:     1
57625 INSERT INTO t1 SELECT * FROM t0_template
57626 WHERE MOD(f_int1,3) = 0;
57627         
57628 # check multiple-3 success:     1
57629 UPDATE t1 SET f_int1 = f_int1 + @max_row
57630 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
57631 AND @max_row_div2 + @max_row_div4;
57632         
57633 # check multiple-4 success:     1
57634 DELETE FROM t1
57635 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
57636 AND @max_row_div2 + @max_row_div4 + @max_row;
57637         
57638 # check multiple-5 success:     1
57639 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
57640 INSERT INTO t1
57641 SET f_int1 = @cur_value , f_int2 = @cur_value,
57642 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
57643 f_charbig = '#SINGLE#';
57644         
57645 # check single-1 success:       1
57646 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
57647 INSERT INTO t1
57648 SET f_int1 = @cur_value , f_int2 = @cur_value,
57649 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
57650 f_charbig = '#SINGLE#';
57651         
57652 # check single-2 success:       1
57653 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
57654 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
57655 UPDATE t1 SET f_int1 = @cur_value2
57656 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
57657         
57658 # check single-3 success:       1
57659 SET @cur_value1= -1;
57660 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
57661 UPDATE t1 SET f_int1 = @cur_value1
57662 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
57663         
57664 # check single-4 success:       1
57665 SELECT MAX(f_int1) INTO @cur_value FROM t1;
57666 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
57667         
57668 # check single-5 success:       1
57669 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
57670         
57671 # check single-6 success:       1
57672 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
57673         
57674 # check single-7 success:       1
57675 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
57676 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
57677 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
57678 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
57679 f_charbig = '#NULL#';
57680 INSERT INTO t1
57681 SET f_int1 = NULL , f_int2 = -@max_row,
57682 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
57683 f_charbig = '#NULL#';
57684 # check null success:    1
57685         
57686 # check null-1 success:         1
57687 UPDATE t1 SET f_int1 = -@max_row
57688 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
57689 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
57690         
57691 # check null-2 success:         1
57692 UPDATE t1 SET f_int1 = NULL
57693 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
57694 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
57695         
57696 # check null-3 success:         1
57697 DELETE FROM t1
57698 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
57699 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
57700         
57701 # check null-4 success:         1
57702 DELETE FROM t1
57703 WHERE f_int1 = 0 AND f_int2 = 0
57704 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
57705 AND f_charbig = '#NULL#';
57706 SET AUTOCOMMIT= 0;
57707 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57708 SELECT f_int1, f_int1, '', '', 'was inserted'
57709 FROM t0_template source_tab
57710 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
57711         
57712 # check transactions-1 success:         1
57713 COMMIT WORK;
57714         
57715 # check transactions-2 success:         1
57716 ROLLBACK WORK;
57717         
57718 # check transactions-3 success:         1
57719 DELETE FROM t1 WHERE f_charbig = 'was inserted';
57720 COMMIT WORK;
57721 ROLLBACK WORK;
57722         
57723 # check transactions-4 success:         1
57724 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57725 SELECT f_int1, f_int1, '', '', 'was inserted'
57726 FROM t0_template source_tab
57727 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
57728         
57729 # check transactions-5 success:         1
57730 ROLLBACK WORK;
57731 Warnings:
57732 Warning 1196    Some non-transactional changed tables couldn't be rolled back
57733         
57734 # check transactions-6 success:         1
57735 # INFO: Storage engine used for t1 seems to be not transactional.
57736 COMMIT;
57737         
57738 # check transactions-7 success:         1
57739 DELETE FROM t1 WHERE f_charbig = 'was inserted';
57740 COMMIT WORK;
57741 SET @@session.sql_mode = 'traditional';
57742 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
57743 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57744 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
57745 '', '', 'was inserted' FROM t0_template
57746 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
57747 ERROR 22012: Division by 0
57748 COMMIT;
57749         
57750 # check transactions-8 success:         1
57751 # INFO: Storage engine used for t1 seems to be unable to revert
57752 #       changes made by the failing statement.
57753 SET @@session.sql_mode = '';
57754 SET AUTOCOMMIT= 1;
57755 DELETE FROM t1 WHERE f_charbig = 'was inserted';
57756 COMMIT WORK;
57757 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
57758         
57759 # check special-1 success:      1
57760 UPDATE t1 SET f_charbig = '';
57761         
57762 # check special-2 success:      1
57763 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
57764 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
57765 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
57766 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57767 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57768 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57769 'just inserted' FROM t0_template
57770 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57771 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
57772 BEGIN
57773 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57774 f_charbig = 'updated by trigger'
57775       WHERE f_int1 = new.f_int1;
57776 END|
57777 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57778 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
57779 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57780         
57781 # check trigger-1 success:      1
57782 DROP TRIGGER trg_1;
57783 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57784 f_int2 = CAST(f_char1 AS SIGNED INT),
57785 f_charbig = 'just inserted'
57786    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57787 DELETE FROM t0_aux
57788 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57789 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57790 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57791 'just inserted' FROM t0_template
57792 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57793 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
57794 BEGIN
57795 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57796 f_charbig = 'updated by trigger'
57797       WHERE f_int1 = new.f_int1;
57798 END|
57799 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57800 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
57801 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57802         
57803 # check trigger-2 success:      1
57804 DROP TRIGGER trg_1;
57805 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57806 f_int2 = CAST(f_char1 AS SIGNED INT),
57807 f_charbig = 'just inserted'
57808    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57809 DELETE FROM t0_aux
57810 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57811 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57812 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57813 'just inserted' FROM t0_template
57814 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57815 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
57816 BEGIN
57817 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57818 f_charbig = 'updated by trigger'
57819       WHERE f_int1 = new.f_int1;
57820 END|
57821 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
57822 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57823         
57824 # check trigger-3 success:      1
57825 DROP TRIGGER trg_1;
57826 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57827 f_int2 = CAST(f_char1 AS SIGNED INT),
57828 f_charbig = 'just inserted'
57829    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57830 DELETE FROM t0_aux
57831 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57832 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57833 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57834 'just inserted' FROM t0_template
57835 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57836 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
57837 BEGIN
57838 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57839 f_charbig = 'updated by trigger'
57840       WHERE f_int1 = - old.f_int1;
57841 END|
57842 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
57843 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57844         
57845 # check trigger-4 success:      1
57846 DROP TRIGGER trg_1;
57847 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57848 f_int2 = CAST(f_char1 AS SIGNED INT),
57849 f_charbig = 'just inserted'
57850    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57851 DELETE FROM t0_aux
57852 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57853 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57854 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57855 'just inserted' FROM t0_template
57856 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57857 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
57858 BEGIN
57859 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57860 f_charbig = 'updated by trigger'
57861       WHERE f_int1 = new.f_int1;
57862 END|
57863 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
57864 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57865         
57866 # check trigger-5 success:      1
57867 DROP TRIGGER trg_1;
57868 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57869 f_int2 = CAST(f_char1 AS SIGNED INT),
57870 f_charbig = 'just inserted'
57871    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57872 DELETE FROM t0_aux
57873 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57874 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57875 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57876 'just inserted' FROM t0_template
57877 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57878 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
57879 BEGIN
57880 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57881 f_charbig = 'updated by trigger'
57882       WHERE f_int1 = - old.f_int1;
57883 END|
57884 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
57885 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57886         
57887 # check trigger-6 success:      1
57888 DROP TRIGGER trg_1;
57889 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57890 f_int2 = CAST(f_char1 AS SIGNED INT),
57891 f_charbig = 'just inserted'
57892    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57893 DELETE FROM t0_aux
57894 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57895 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57896 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57897 'just inserted' FROM t0_template
57898 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57899 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
57900 BEGIN
57901 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57902 f_charbig = 'updated by trigger'
57903       WHERE f_int1 = - old.f_int1;
57904 END|
57905 DELETE FROM t0_aux
57906 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57907         
57908 # check trigger-7 success:      1
57909 DROP TRIGGER trg_1;
57910 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57911 f_int2 = CAST(f_char1 AS SIGNED INT),
57912 f_charbig = 'just inserted'
57913    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57914 DELETE FROM t0_aux
57915 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57916 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57917 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57918 'just inserted' FROM t0_template
57919 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57920 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
57921 BEGIN
57922 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57923 f_charbig = 'updated by trigger'
57924       WHERE f_int1 = - old.f_int1;
57925 END|
57926 DELETE FROM t0_aux
57927 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57928         
57929 # check trigger-8 success:      1
57930 DROP TRIGGER trg_1;
57931 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57932 f_int2 = CAST(f_char1 AS SIGNED INT),
57933 f_charbig = 'just inserted'
57934    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57935 DELETE FROM t0_aux
57936 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57937 DELETE FROM t1
57938 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57939 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
57940 BEGIN
57941 SET new.f_int1 = old.f_int1 + @max_row,
57942 new.f_int2 = old.f_int2 - @max_row,
57943 new.f_charbig = '####updated per update trigger####';
57944 END|
57945 UPDATE t1
57946 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
57947 f_charbig = '####updated per update statement itself####';
57948         
57949 # check trigger-9 success:      1
57950 DROP TRIGGER trg_2;
57951 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57952 f_int2 = CAST(f_char1 AS SIGNED INT),
57953 f_charbig = CONCAT('===',f_char1,'===');
57954 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
57955 BEGIN
57956 SET new.f_int1 = new.f_int1 + @max_row,
57957 new.f_int2 = new.f_int2 - @max_row,
57958 new.f_charbig = '####updated per update trigger####';
57959 END|
57960 UPDATE t1
57961 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
57962 f_charbig = '####updated per update statement itself####';
57963         
57964 # check trigger-10 success:     1
57965 DROP TRIGGER trg_2;
57966 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57967 f_int2 = CAST(f_char1 AS SIGNED INT),
57968 f_charbig = CONCAT('===',f_char1,'===');
57969 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
57970 BEGIN
57971 SET new.f_int1 = @my_max1 + @counter,
57972 new.f_int2 = @my_min2 - @counter,
57973 new.f_charbig = '####updated per insert trigger####';
57974 SET @counter = @counter + 1;
57975 END|
57976 SET @counter = 1;
57977 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
57978 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57979 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
57980 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
57981 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
57982 ORDER BY f_int1;
57983 DROP TRIGGER trg_3;
57984         
57985 # check trigger-11 success:     1
57986 DELETE FROM t1
57987 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
57988 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
57989 AND f_charbig = '####updated per insert trigger####';
57990 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
57991 BEGIN
57992 SET new.f_int1 = @my_max1 + @counter,
57993 new.f_int2 = @my_min2 - @counter,
57994 new.f_charbig = '####updated per insert trigger####';
57995 SET @counter = @counter + 1;
57996 END|
57997 SET @counter = 1;
57998 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
57999 INSERT INTO t1 (f_char1, f_char2, f_charbig)
58000 SELECT CAST(f_int1 AS CHAR),
58001 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
58002 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
58003 ORDER BY f_int1;
58004 DROP TRIGGER trg_3;
58005         
58006 # check trigger-12 success:     1
58007 DELETE FROM t1
58008 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
58009 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
58010 AND f_charbig = '####updated per insert trigger####';
58011 ANALYZE  TABLE t1;
58012 Table   Op      Msg_type        Msg_text
58013 test.t1 analyze status  OK
58014 CHECK    TABLE t1 EXTENDED;
58015 Table   Op      Msg_type        Msg_text
58016 test.t1 check   status  OK
58017 CHECKSUM TABLE t1 EXTENDED;
58018 Table   Checksum
58019 test.t1 <some_value>
58020 OPTIMIZE TABLE t1;
58021 Table   Op      Msg_type        Msg_text
58022 test.t1 optimize        status  OK
58023 # check layout success:    1
58024 REPAIR   TABLE t1 EXTENDED;
58025 Table   Op      Msg_type        Msg_text
58026 test.t1 repair  status  OK
58027 # check layout success:    1
58028 TRUNCATE t1;
58029         
58030 # check TRUNCATE success:       1
58031 # check layout success:    1
58032 # End usability test (inc/partition_check.inc)
58033 DROP TABLE t1;
58034 CREATE TABLE t1 (
58035 f_int1 INTEGER,
58036 f_int2 INTEGER,
58037 f_char1 CHAR(20),
58038 f_char2 CHAR(20),
58039 f_charbig VARCHAR(1000)
58042 PARTITION BY LIST(ABS(MOD(f_int1,2)))
58043 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
58044 (PARTITION part_1 VALUES IN (0),
58045  PARTITION part_2 VALUES IN (1),
58046  PARTITION part_3 VALUES IN (NULL));
58047 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
58048 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
58049 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
58050 ALTER TABLE t1 OPTIMIZE PARTITION ALL;
58051 Table   Op      Msg_type        Msg_text
58052 test.t1 optimize        status  OK
58053 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
58054 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
58055 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
58056 # Start usability test (inc/partition_check.inc)
58057 create_command
58058 SHOW CREATE TABLE t1;
58059 Table   Create Table
58060 t1      CREATE TABLE `t1` (
58061   `f_int1` int(11) DEFAULT NULL,
58062   `f_int2` int(11) DEFAULT NULL,
58063   `f_char1` char(20) DEFAULT NULL,
58064   `f_char2` char(20) DEFAULT NULL,
58065   `f_charbig` varchar(1000) DEFAULT NULL
58066 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
58067 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
58068 SUBPARTITION BY KEY (f_int1)
58069 SUBPARTITIONS 3
58070 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
58071  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
58072  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
58074 unified filelist
58075 t1#P#part_1#SP#part_1sp0.MYD
58076 t1#P#part_1#SP#part_1sp0.MYI
58077 t1#P#part_1#SP#part_1sp1.MYD
58078 t1#P#part_1#SP#part_1sp1.MYI
58079 t1#P#part_1#SP#part_1sp2.MYD
58080 t1#P#part_1#SP#part_1sp2.MYI
58081 t1#P#part_2#SP#part_2sp0.MYD
58082 t1#P#part_2#SP#part_2sp0.MYI
58083 t1#P#part_2#SP#part_2sp1.MYD
58084 t1#P#part_2#SP#part_2sp1.MYI
58085 t1#P#part_2#SP#part_2sp2.MYD
58086 t1#P#part_2#SP#part_2sp2.MYI
58087 t1#P#part_3#SP#part_3sp0.MYD
58088 t1#P#part_3#SP#part_3sp0.MYI
58089 t1#P#part_3#SP#part_3sp1.MYD
58090 t1#P#part_3#SP#part_3sp1.MYI
58091 t1#P#part_3#SP#part_3sp2.MYD
58092 t1#P#part_3#SP#part_3sp2.MYI
58093 t1.frm
58094 t1.par
58096 # check prerequisites-1 success:    1
58097 # check COUNT(*) success:    1
58098 # check MIN/MAX(f_int1) success:    1
58099 # check MIN/MAX(f_int2) success:    1
58100 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58101 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
58102 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
58103 WHERE f_int1 IN (2,3);
58104 # check prerequisites-3 success:    1
58105 DELETE FROM t1 WHERE f_charbig = 'delete me';
58106 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
58107 # check read via f_int1 success: 1
58108 # check read via f_int2 success: 1
58109         
58110 # check multiple-1 success:     1
58111 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
58112         
58113 # check multiple-2 success:     1
58114 INSERT INTO t1 SELECT * FROM t0_template
58115 WHERE MOD(f_int1,3) = 0;
58116         
58117 # check multiple-3 success:     1
58118 UPDATE t1 SET f_int1 = f_int1 + @max_row
58119 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
58120 AND @max_row_div2 + @max_row_div4;
58121         
58122 # check multiple-4 success:     1
58123 DELETE FROM t1
58124 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
58125 AND @max_row_div2 + @max_row_div4 + @max_row;
58126         
58127 # check multiple-5 success:     1
58128 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
58129 INSERT INTO t1
58130 SET f_int1 = @cur_value , f_int2 = @cur_value,
58131 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
58132 f_charbig = '#SINGLE#';
58133         
58134 # check single-1 success:       1
58135 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
58136 INSERT INTO t1
58137 SET f_int1 = @cur_value , f_int2 = @cur_value,
58138 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
58139 f_charbig = '#SINGLE#';
58140         
58141 # check single-2 success:       1
58142 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
58143 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
58144 UPDATE t1 SET f_int1 = @cur_value2
58145 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
58146         
58147 # check single-3 success:       1
58148 SET @cur_value1= -1;
58149 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
58150 UPDATE t1 SET f_int1 = @cur_value1
58151 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
58152         
58153 # check single-4 success:       1
58154 SELECT MAX(f_int1) INTO @cur_value FROM t1;
58155 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
58156         
58157 # check single-5 success:       1
58158 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
58159         
58160 # check single-6 success:       1
58161 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
58162         
58163 # check single-7 success:       1
58164 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
58165 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
58166 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
58167 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
58168 f_charbig = '#NULL#';
58169 INSERT INTO t1
58170 SET f_int1 = NULL , f_int2 = -@max_row,
58171 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
58172 f_charbig = '#NULL#';
58173 # check null success:    1
58174         
58175 # check null-1 success:         1
58176 UPDATE t1 SET f_int1 = -@max_row
58177 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
58178 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
58179         
58180 # check null-2 success:         1
58181 UPDATE t1 SET f_int1 = NULL
58182 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
58183 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
58184         
58185 # check null-3 success:         1
58186 DELETE FROM t1
58187 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
58188 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
58189         
58190 # check null-4 success:         1
58191 DELETE FROM t1
58192 WHERE f_int1 = 0 AND f_int2 = 0
58193 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
58194 AND f_charbig = '#NULL#';
58195 SET AUTOCOMMIT= 0;
58196 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58197 SELECT f_int1, f_int1, '', '', 'was inserted'
58198 FROM t0_template source_tab
58199 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
58200         
58201 # check transactions-1 success:         1
58202 COMMIT WORK;
58203         
58204 # check transactions-2 success:         1
58205 ROLLBACK WORK;
58206         
58207 # check transactions-3 success:         1
58208 DELETE FROM t1 WHERE f_charbig = 'was inserted';
58209 COMMIT WORK;
58210 ROLLBACK WORK;
58211         
58212 # check transactions-4 success:         1
58213 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58214 SELECT f_int1, f_int1, '', '', 'was inserted'
58215 FROM t0_template source_tab
58216 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
58217         
58218 # check transactions-5 success:         1
58219 ROLLBACK WORK;
58220 Warnings:
58221 Warning 1196    Some non-transactional changed tables couldn't be rolled back
58222         
58223 # check transactions-6 success:         1
58224 # INFO: Storage engine used for t1 seems to be not transactional.
58225 COMMIT;
58226         
58227 # check transactions-7 success:         1
58228 DELETE FROM t1 WHERE f_charbig = 'was inserted';
58229 COMMIT WORK;
58230 SET @@session.sql_mode = 'traditional';
58231 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
58232 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58233 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
58234 '', '', 'was inserted' FROM t0_template
58235 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
58236 ERROR 22012: Division by 0
58237 COMMIT;
58238         
58239 # check transactions-8 success:         1
58240 # INFO: Storage engine used for t1 seems to be unable to revert
58241 #       changes made by the failing statement.
58242 SET @@session.sql_mode = '';
58243 SET AUTOCOMMIT= 1;
58244 DELETE FROM t1 WHERE f_charbig = 'was inserted';
58245 COMMIT WORK;
58246 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
58247         
58248 # check special-1 success:      1
58249 UPDATE t1 SET f_charbig = '';
58250         
58251 # check special-2 success:      1
58252 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
58253 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
58254 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
58255 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58256 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58257 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58258 'just inserted' FROM t0_template
58259 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58260 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
58261 BEGIN
58262 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58263 f_charbig = 'updated by trigger'
58264       WHERE f_int1 = new.f_int1;
58265 END|
58266 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58267 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
58268 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58269         
58270 # check trigger-1 success:      1
58271 DROP TRIGGER trg_1;
58272 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58273 f_int2 = CAST(f_char1 AS SIGNED INT),
58274 f_charbig = 'just inserted'
58275    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58276 DELETE FROM t0_aux
58277 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58278 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58279 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58280 'just inserted' FROM t0_template
58281 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58282 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
58283 BEGIN
58284 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58285 f_charbig = 'updated by trigger'
58286       WHERE f_int1 = new.f_int1;
58287 END|
58288 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58289 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
58290 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58291         
58292 # check trigger-2 success:      1
58293 DROP TRIGGER trg_1;
58294 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58295 f_int2 = CAST(f_char1 AS SIGNED INT),
58296 f_charbig = 'just inserted'
58297    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58298 DELETE FROM t0_aux
58299 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58300 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58301 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58302 'just inserted' FROM t0_template
58303 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58304 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
58305 BEGIN
58306 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58307 f_charbig = 'updated by trigger'
58308       WHERE f_int1 = new.f_int1;
58309 END|
58310 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
58311 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58312         
58313 # check trigger-3 success:      1
58314 DROP TRIGGER trg_1;
58315 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58316 f_int2 = CAST(f_char1 AS SIGNED INT),
58317 f_charbig = 'just inserted'
58318    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58319 DELETE FROM t0_aux
58320 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58321 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58322 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58323 'just inserted' FROM t0_template
58324 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58325 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
58326 BEGIN
58327 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58328 f_charbig = 'updated by trigger'
58329       WHERE f_int1 = - old.f_int1;
58330 END|
58331 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
58332 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58333         
58334 # check trigger-4 success:      1
58335 DROP TRIGGER trg_1;
58336 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58337 f_int2 = CAST(f_char1 AS SIGNED INT),
58338 f_charbig = 'just inserted'
58339    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58340 DELETE FROM t0_aux
58341 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58342 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58343 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58344 'just inserted' FROM t0_template
58345 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58346 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
58347 BEGIN
58348 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58349 f_charbig = 'updated by trigger'
58350       WHERE f_int1 = new.f_int1;
58351 END|
58352 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
58353 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58354         
58355 # check trigger-5 success:      1
58356 DROP TRIGGER trg_1;
58357 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58358 f_int2 = CAST(f_char1 AS SIGNED INT),
58359 f_charbig = 'just inserted'
58360    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58361 DELETE FROM t0_aux
58362 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58363 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58364 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58365 'just inserted' FROM t0_template
58366 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58367 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
58368 BEGIN
58369 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58370 f_charbig = 'updated by trigger'
58371       WHERE f_int1 = - old.f_int1;
58372 END|
58373 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
58374 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58375         
58376 # check trigger-6 success:      1
58377 DROP TRIGGER trg_1;
58378 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58379 f_int2 = CAST(f_char1 AS SIGNED INT),
58380 f_charbig = 'just inserted'
58381    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58382 DELETE FROM t0_aux
58383 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58384 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58385 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58386 'just inserted' FROM t0_template
58387 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58388 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
58389 BEGIN
58390 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58391 f_charbig = 'updated by trigger'
58392       WHERE f_int1 = - old.f_int1;
58393 END|
58394 DELETE FROM t0_aux
58395 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58396         
58397 # check trigger-7 success:      1
58398 DROP TRIGGER trg_1;
58399 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58400 f_int2 = CAST(f_char1 AS SIGNED INT),
58401 f_charbig = 'just inserted'
58402    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58403 DELETE FROM t0_aux
58404 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58405 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58406 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58407 'just inserted' FROM t0_template
58408 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58409 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
58410 BEGIN
58411 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58412 f_charbig = 'updated by trigger'
58413       WHERE f_int1 = - old.f_int1;
58414 END|
58415 DELETE FROM t0_aux
58416 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58417         
58418 # check trigger-8 success:      1
58419 DROP TRIGGER trg_1;
58420 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58421 f_int2 = CAST(f_char1 AS SIGNED INT),
58422 f_charbig = 'just inserted'
58423    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58424 DELETE FROM t0_aux
58425 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58426 DELETE FROM t1
58427 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58428 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
58429 BEGIN
58430 SET new.f_int1 = old.f_int1 + @max_row,
58431 new.f_int2 = old.f_int2 - @max_row,
58432 new.f_charbig = '####updated per update trigger####';
58433 END|
58434 UPDATE t1
58435 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
58436 f_charbig = '####updated per update statement itself####';
58437         
58438 # check trigger-9 success:      1
58439 DROP TRIGGER trg_2;
58440 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58441 f_int2 = CAST(f_char1 AS SIGNED INT),
58442 f_charbig = CONCAT('===',f_char1,'===');
58443 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
58444 BEGIN
58445 SET new.f_int1 = new.f_int1 + @max_row,
58446 new.f_int2 = new.f_int2 - @max_row,
58447 new.f_charbig = '####updated per update trigger####';
58448 END|
58449 UPDATE t1
58450 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
58451 f_charbig = '####updated per update statement itself####';
58452         
58453 # check trigger-10 success:     1
58454 DROP TRIGGER trg_2;
58455 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58456 f_int2 = CAST(f_char1 AS SIGNED INT),
58457 f_charbig = CONCAT('===',f_char1,'===');
58458 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
58459 BEGIN
58460 SET new.f_int1 = @my_max1 + @counter,
58461 new.f_int2 = @my_min2 - @counter,
58462 new.f_charbig = '####updated per insert trigger####';
58463 SET @counter = @counter + 1;
58464 END|
58465 SET @counter = 1;
58466 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
58467 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58468 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
58469 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
58470 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
58471 ORDER BY f_int1;
58472 DROP TRIGGER trg_3;
58473         
58474 # check trigger-11 success:     1
58475 DELETE FROM t1
58476 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
58477 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
58478 AND f_charbig = '####updated per insert trigger####';
58479 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
58480 BEGIN
58481 SET new.f_int1 = @my_max1 + @counter,
58482 new.f_int2 = @my_min2 - @counter,
58483 new.f_charbig = '####updated per insert trigger####';
58484 SET @counter = @counter + 1;
58485 END|
58486 SET @counter = 1;
58487 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
58488 INSERT INTO t1 (f_char1, f_char2, f_charbig)
58489 SELECT CAST(f_int1 AS CHAR),
58490 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
58491 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
58492 ORDER BY f_int1;
58493 DROP TRIGGER trg_3;
58494         
58495 # check trigger-12 success:     1
58496 DELETE FROM t1
58497 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
58498 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
58499 AND f_charbig = '####updated per insert trigger####';
58500 ANALYZE  TABLE t1;
58501 Table   Op      Msg_type        Msg_text
58502 test.t1 analyze status  OK
58503 CHECK    TABLE t1 EXTENDED;
58504 Table   Op      Msg_type        Msg_text
58505 test.t1 check   status  OK
58506 CHECKSUM TABLE t1 EXTENDED;
58507 Table   Checksum
58508 test.t1 <some_value>
58509 OPTIMIZE TABLE t1;
58510 Table   Op      Msg_type        Msg_text
58511 test.t1 optimize        status  OK
58512 # check layout success:    1
58513 REPAIR   TABLE t1 EXTENDED;
58514 Table   Op      Msg_type        Msg_text
58515 test.t1 repair  status  OK
58516 # check layout success:    1
58517 TRUNCATE t1;
58518         
58519 # check TRUNCATE success:       1
58520 # check layout success:    1
58521 # End usability test (inc/partition_check.inc)
58522 DROP TABLE t1;
58523 #------------------------------------------------------------------------
58524 #  4   ALTER ... REBUILD PARTITION
58525 #------------------------------------------------------------------------
58526 #  4.1 ALTER ... REBUILD PARTITION part_1;
58527 DROP TABLE IF EXISTS t1;
58528 CREATE TABLE t1 (
58529 f_int1 INTEGER,
58530 f_int2 INTEGER,
58531 f_char1 CHAR(20),
58532 f_char2 CHAR(20),
58533 f_charbig VARCHAR(1000)
58536 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
58537 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
58538 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
58539 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
58540 ALTER TABLE t1 REBUILD PARTITION part_1;
58541 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
58542 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
58543 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
58544 # Start usability test (inc/partition_check.inc)
58545 create_command
58546 SHOW CREATE TABLE t1;
58547 Table   Create Table
58548 t1      CREATE TABLE `t1` (
58549   `f_int1` int(11) DEFAULT NULL,
58550   `f_int2` int(11) DEFAULT NULL,
58551   `f_char1` char(20) DEFAULT NULL,
58552   `f_char2` char(20) DEFAULT NULL,
58553   `f_charbig` varchar(1000) DEFAULT NULL
58554 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
58555 /*!50100 PARTITION BY HASH (f_int1)
58556 (PARTITION part_1 ENGINE = MyISAM,
58557  PARTITION part_2 ENGINE = MyISAM) */
58559 unified filelist
58560 t1#P#part_1.MYD
58561 t1#P#part_1.MYI
58562 t1#P#part_2.MYD
58563 t1#P#part_2.MYI
58564 t1.frm
58565 t1.par
58567 # check prerequisites-1 success:    1
58568 # check COUNT(*) success:    1
58569 # check MIN/MAX(f_int1) success:    1
58570 # check MIN/MAX(f_int2) success:    1
58571 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58572 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
58573 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
58574 WHERE f_int1 IN (2,3);
58575 # check prerequisites-3 success:    1
58576 DELETE FROM t1 WHERE f_charbig = 'delete me';
58577 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
58578 # check read via f_int1 success: 1
58579 # check read via f_int2 success: 1
58580         
58581 # check multiple-1 success:     1
58582 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
58583         
58584 # check multiple-2 success:     1
58585 INSERT INTO t1 SELECT * FROM t0_template
58586 WHERE MOD(f_int1,3) = 0;
58587         
58588 # check multiple-3 success:     1
58589 UPDATE t1 SET f_int1 = f_int1 + @max_row
58590 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
58591 AND @max_row_div2 + @max_row_div4;
58592         
58593 # check multiple-4 success:     1
58594 DELETE FROM t1
58595 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
58596 AND @max_row_div2 + @max_row_div4 + @max_row;
58597         
58598 # check multiple-5 success:     1
58599 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
58600 INSERT INTO t1
58601 SET f_int1 = @cur_value , f_int2 = @cur_value,
58602 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
58603 f_charbig = '#SINGLE#';
58604         
58605 # check single-1 success:       1
58606 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
58607 INSERT INTO t1
58608 SET f_int1 = @cur_value , f_int2 = @cur_value,
58609 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
58610 f_charbig = '#SINGLE#';
58611         
58612 # check single-2 success:       1
58613 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
58614 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
58615 UPDATE t1 SET f_int1 = @cur_value2
58616 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
58617         
58618 # check single-3 success:       1
58619 SET @cur_value1= -1;
58620 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
58621 UPDATE t1 SET f_int1 = @cur_value1
58622 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
58623         
58624 # check single-4 success:       1
58625 SELECT MAX(f_int1) INTO @cur_value FROM t1;
58626 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
58627         
58628 # check single-5 success:       1
58629 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
58630         
58631 # check single-6 success:       1
58632 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
58633         
58634 # check single-7 success:       1
58635 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
58636 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
58637 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
58638 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
58639 f_charbig = '#NULL#';
58640 INSERT INTO t1
58641 SET f_int1 = NULL , f_int2 = -@max_row,
58642 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
58643 f_charbig = '#NULL#';
58644 # check null success:    1
58645         
58646 # check null-1 success:         1
58647 UPDATE t1 SET f_int1 = -@max_row
58648 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
58649 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
58650         
58651 # check null-2 success:         1
58652 UPDATE t1 SET f_int1 = NULL
58653 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
58654 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
58655         
58656 # check null-3 success:         1
58657 DELETE FROM t1
58658 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
58659 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
58660         
58661 # check null-4 success:         1
58662 DELETE FROM t1
58663 WHERE f_int1 = 0 AND f_int2 = 0
58664 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
58665 AND f_charbig = '#NULL#';
58666 SET AUTOCOMMIT= 0;
58667 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58668 SELECT f_int1, f_int1, '', '', 'was inserted'
58669 FROM t0_template source_tab
58670 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
58671         
58672 # check transactions-1 success:         1
58673 COMMIT WORK;
58674         
58675 # check transactions-2 success:         1
58676 ROLLBACK WORK;
58677         
58678 # check transactions-3 success:         1
58679 DELETE FROM t1 WHERE f_charbig = 'was inserted';
58680 COMMIT WORK;
58681 ROLLBACK WORK;
58682         
58683 # check transactions-4 success:         1
58684 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58685 SELECT f_int1, f_int1, '', '', 'was inserted'
58686 FROM t0_template source_tab
58687 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
58688         
58689 # check transactions-5 success:         1
58690 ROLLBACK WORK;
58691 Warnings:
58692 Warning 1196    Some non-transactional changed tables couldn't be rolled back
58693         
58694 # check transactions-6 success:         1
58695 # INFO: Storage engine used for t1 seems to be not transactional.
58696 COMMIT;
58697         
58698 # check transactions-7 success:         1
58699 DELETE FROM t1 WHERE f_charbig = 'was inserted';
58700 COMMIT WORK;
58701 SET @@session.sql_mode = 'traditional';
58702 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
58703 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58704 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
58705 '', '', 'was inserted' FROM t0_template
58706 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
58707 ERROR 22012: Division by 0
58708 COMMIT;
58709         
58710 # check transactions-8 success:         1
58711 # INFO: Storage engine used for t1 seems to be unable to revert
58712 #       changes made by the failing statement.
58713 SET @@session.sql_mode = '';
58714 SET AUTOCOMMIT= 1;
58715 DELETE FROM t1 WHERE f_charbig = 'was inserted';
58716 COMMIT WORK;
58717 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
58718         
58719 # check special-1 success:      1
58720 UPDATE t1 SET f_charbig = '';
58721         
58722 # check special-2 success:      1
58723 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
58724 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
58725 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
58726 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58727 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58728 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58729 'just inserted' FROM t0_template
58730 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58731 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
58732 BEGIN
58733 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58734 f_charbig = 'updated by trigger'
58735       WHERE f_int1 = new.f_int1;
58736 END|
58737 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58738 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
58739 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58740         
58741 # check trigger-1 success:      1
58742 DROP TRIGGER trg_1;
58743 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58744 f_int2 = CAST(f_char1 AS SIGNED INT),
58745 f_charbig = 'just inserted'
58746    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58747 DELETE FROM t0_aux
58748 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58749 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58750 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58751 'just inserted' FROM t0_template
58752 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58753 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
58754 BEGIN
58755 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58756 f_charbig = 'updated by trigger'
58757       WHERE f_int1 = new.f_int1;
58758 END|
58759 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58760 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
58761 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58762         
58763 # check trigger-2 success:      1
58764 DROP TRIGGER trg_1;
58765 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58766 f_int2 = CAST(f_char1 AS SIGNED INT),
58767 f_charbig = 'just inserted'
58768    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58769 DELETE FROM t0_aux
58770 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58771 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58772 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58773 'just inserted' FROM t0_template
58774 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58775 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
58776 BEGIN
58777 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58778 f_charbig = 'updated by trigger'
58779       WHERE f_int1 = new.f_int1;
58780 END|
58781 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
58782 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58783         
58784 # check trigger-3 success:      1
58785 DROP TRIGGER trg_1;
58786 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58787 f_int2 = CAST(f_char1 AS SIGNED INT),
58788 f_charbig = 'just inserted'
58789    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58790 DELETE FROM t0_aux
58791 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58792 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58793 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58794 'just inserted' FROM t0_template
58795 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58796 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
58797 BEGIN
58798 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58799 f_charbig = 'updated by trigger'
58800       WHERE f_int1 = - old.f_int1;
58801 END|
58802 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
58803 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58804         
58805 # check trigger-4 success:      1
58806 DROP TRIGGER trg_1;
58807 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58808 f_int2 = CAST(f_char1 AS SIGNED INT),
58809 f_charbig = 'just inserted'
58810    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58811 DELETE FROM t0_aux
58812 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58813 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58814 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58815 'just inserted' FROM t0_template
58816 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58817 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
58818 BEGIN
58819 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58820 f_charbig = 'updated by trigger'
58821       WHERE f_int1 = new.f_int1;
58822 END|
58823 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
58824 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58825         
58826 # check trigger-5 success:      1
58827 DROP TRIGGER trg_1;
58828 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58829 f_int2 = CAST(f_char1 AS SIGNED INT),
58830 f_charbig = 'just inserted'
58831    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58832 DELETE FROM t0_aux
58833 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58834 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58835 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58836 'just inserted' FROM t0_template
58837 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58838 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
58839 BEGIN
58840 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58841 f_charbig = 'updated by trigger'
58842       WHERE f_int1 = - old.f_int1;
58843 END|
58844 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
58845 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58846         
58847 # check trigger-6 success:      1
58848 DROP TRIGGER trg_1;
58849 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58850 f_int2 = CAST(f_char1 AS SIGNED INT),
58851 f_charbig = 'just inserted'
58852    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58853 DELETE FROM t0_aux
58854 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58855 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58856 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58857 'just inserted' FROM t0_template
58858 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58859 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
58860 BEGIN
58861 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58862 f_charbig = 'updated by trigger'
58863       WHERE f_int1 = - old.f_int1;
58864 END|
58865 DELETE FROM t0_aux
58866 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58867         
58868 # check trigger-7 success:      1
58869 DROP TRIGGER trg_1;
58870 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58871 f_int2 = CAST(f_char1 AS SIGNED INT),
58872 f_charbig = 'just inserted'
58873    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58874 DELETE FROM t0_aux
58875 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58876 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58877 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58878 'just inserted' FROM t0_template
58879 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58880 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
58881 BEGIN
58882 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58883 f_charbig = 'updated by trigger'
58884       WHERE f_int1 = - old.f_int1;
58885 END|
58886 DELETE FROM t0_aux
58887 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58888         
58889 # check trigger-8 success:      1
58890 DROP TRIGGER trg_1;
58891 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58892 f_int2 = CAST(f_char1 AS SIGNED INT),
58893 f_charbig = 'just inserted'
58894    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58895 DELETE FROM t0_aux
58896 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58897 DELETE FROM t1
58898 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58899 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
58900 BEGIN
58901 SET new.f_int1 = old.f_int1 + @max_row,
58902 new.f_int2 = old.f_int2 - @max_row,
58903 new.f_charbig = '####updated per update trigger####';
58904 END|
58905 UPDATE t1
58906 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
58907 f_charbig = '####updated per update statement itself####';
58908         
58909 # check trigger-9 success:      1
58910 DROP TRIGGER trg_2;
58911 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58912 f_int2 = CAST(f_char1 AS SIGNED INT),
58913 f_charbig = CONCAT('===',f_char1,'===');
58914 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
58915 BEGIN
58916 SET new.f_int1 = new.f_int1 + @max_row,
58917 new.f_int2 = new.f_int2 - @max_row,
58918 new.f_charbig = '####updated per update trigger####';
58919 END|
58920 UPDATE t1
58921 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
58922 f_charbig = '####updated per update statement itself####';
58923         
58924 # check trigger-10 success:     1
58925 DROP TRIGGER trg_2;
58926 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58927 f_int2 = CAST(f_char1 AS SIGNED INT),
58928 f_charbig = CONCAT('===',f_char1,'===');
58929 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
58930 BEGIN
58931 SET new.f_int1 = @my_max1 + @counter,
58932 new.f_int2 = @my_min2 - @counter,
58933 new.f_charbig = '####updated per insert trigger####';
58934 SET @counter = @counter + 1;
58935 END|
58936 SET @counter = 1;
58937 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
58938 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58939 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
58940 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
58941 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
58942 ORDER BY f_int1;
58943 DROP TRIGGER trg_3;
58944         
58945 # check trigger-11 success:     1
58946 DELETE FROM t1
58947 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
58948 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
58949 AND f_charbig = '####updated per insert trigger####';
58950 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
58951 BEGIN
58952 SET new.f_int1 = @my_max1 + @counter,
58953 new.f_int2 = @my_min2 - @counter,
58954 new.f_charbig = '####updated per insert trigger####';
58955 SET @counter = @counter + 1;
58956 END|
58957 SET @counter = 1;
58958 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
58959 INSERT INTO t1 (f_char1, f_char2, f_charbig)
58960 SELECT CAST(f_int1 AS CHAR),
58961 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
58962 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
58963 ORDER BY f_int1;
58964 DROP TRIGGER trg_3;
58965         
58966 # check trigger-12 success:     1
58967 DELETE FROM t1
58968 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
58969 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
58970 AND f_charbig = '####updated per insert trigger####';
58971 ANALYZE  TABLE t1;
58972 Table   Op      Msg_type        Msg_text
58973 test.t1 analyze status  OK
58974 CHECK    TABLE t1 EXTENDED;
58975 Table   Op      Msg_type        Msg_text
58976 test.t1 check   status  OK
58977 CHECKSUM TABLE t1 EXTENDED;
58978 Table   Checksum
58979 test.t1 <some_value>
58980 OPTIMIZE TABLE t1;
58981 Table   Op      Msg_type        Msg_text
58982 test.t1 optimize        status  OK
58983 # check layout success:    1
58984 REPAIR   TABLE t1 EXTENDED;
58985 Table   Op      Msg_type        Msg_text
58986 test.t1 repair  status  OK
58987 # check layout success:    1
58988 TRUNCATE t1;
58989         
58990 # check TRUNCATE success:       1
58991 # check layout success:    1
58992 # End usability test (inc/partition_check.inc)
58993 DROP TABLE t1;
58994 CREATE TABLE t1 (
58995 f_int1 INTEGER,
58996 f_int2 INTEGER,
58997 f_char1 CHAR(20),
58998 f_char2 CHAR(20),
58999 f_charbig VARCHAR(1000)
59002 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
59003 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59004 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
59005 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
59006 ALTER TABLE t1 REBUILD PARTITION part_1;
59007 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59008 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
59009 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
59010 # Start usability test (inc/partition_check.inc)
59011 create_command
59012 SHOW CREATE TABLE t1;
59013 Table   Create Table
59014 t1      CREATE TABLE `t1` (
59015   `f_int1` int(11) DEFAULT NULL,
59016   `f_int2` int(11) DEFAULT NULL,
59017   `f_char1` char(20) DEFAULT NULL,
59018   `f_char2` char(20) DEFAULT NULL,
59019   `f_charbig` varchar(1000) DEFAULT NULL
59020 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
59021 /*!50100 PARTITION BY KEY (f_int1)
59022 (PARTITION part_1 ENGINE = MyISAM,
59023  PARTITION part_2 ENGINE = MyISAM,
59024  PARTITION part_3 ENGINE = MyISAM,
59025  PARTITION part_4 ENGINE = MyISAM,
59026  PARTITION part_5 ENGINE = MyISAM) */
59028 unified filelist
59029 t1#P#part_1.MYD
59030 t1#P#part_1.MYI
59031 t1#P#part_2.MYD
59032 t1#P#part_2.MYI
59033 t1#P#part_3.MYD
59034 t1#P#part_3.MYI
59035 t1#P#part_4.MYD
59036 t1#P#part_4.MYI
59037 t1#P#part_5.MYD
59038 t1#P#part_5.MYI
59039 t1.frm
59040 t1.par
59042 # check prerequisites-1 success:    1
59043 # check COUNT(*) success:    1
59044 # check MIN/MAX(f_int1) success:    1
59045 # check MIN/MAX(f_int2) success:    1
59046 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59047 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
59048 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
59049 WHERE f_int1 IN (2,3);
59050 # check prerequisites-3 success:    1
59051 DELETE FROM t1 WHERE f_charbig = 'delete me';
59052 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
59053 # check read via f_int1 success: 1
59054 # check read via f_int2 success: 1
59055         
59056 # check multiple-1 success:     1
59057 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
59058         
59059 # check multiple-2 success:     1
59060 INSERT INTO t1 SELECT * FROM t0_template
59061 WHERE MOD(f_int1,3) = 0;
59062         
59063 # check multiple-3 success:     1
59064 UPDATE t1 SET f_int1 = f_int1 + @max_row
59065 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
59066 AND @max_row_div2 + @max_row_div4;
59067         
59068 # check multiple-4 success:     1
59069 DELETE FROM t1
59070 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
59071 AND @max_row_div2 + @max_row_div4 + @max_row;
59072         
59073 # check multiple-5 success:     1
59074 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
59075 INSERT INTO t1
59076 SET f_int1 = @cur_value , f_int2 = @cur_value,
59077 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
59078 f_charbig = '#SINGLE#';
59079         
59080 # check single-1 success:       1
59081 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
59082 INSERT INTO t1
59083 SET f_int1 = @cur_value , f_int2 = @cur_value,
59084 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
59085 f_charbig = '#SINGLE#';
59086         
59087 # check single-2 success:       1
59088 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
59089 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
59090 UPDATE t1 SET f_int1 = @cur_value2
59091 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
59092         
59093 # check single-3 success:       1
59094 SET @cur_value1= -1;
59095 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
59096 UPDATE t1 SET f_int1 = @cur_value1
59097 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
59098         
59099 # check single-4 success:       1
59100 SELECT MAX(f_int1) INTO @cur_value FROM t1;
59101 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
59102         
59103 # check single-5 success:       1
59104 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
59105         
59106 # check single-6 success:       1
59107 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
59108         
59109 # check single-7 success:       1
59110 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
59111 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
59112 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
59113 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
59114 f_charbig = '#NULL#';
59115 INSERT INTO t1
59116 SET f_int1 = NULL , f_int2 = -@max_row,
59117 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
59118 f_charbig = '#NULL#';
59119 # check null success:    1
59120         
59121 # check null-1 success:         1
59122 UPDATE t1 SET f_int1 = -@max_row
59123 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
59124 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
59125         
59126 # check null-2 success:         1
59127 UPDATE t1 SET f_int1 = NULL
59128 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
59129 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
59130         
59131 # check null-3 success:         1
59132 DELETE FROM t1
59133 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
59134 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
59135         
59136 # check null-4 success:         1
59137 DELETE FROM t1
59138 WHERE f_int1 = 0 AND f_int2 = 0
59139 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
59140 AND f_charbig = '#NULL#';
59141 SET AUTOCOMMIT= 0;
59142 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59143 SELECT f_int1, f_int1, '', '', 'was inserted'
59144 FROM t0_template source_tab
59145 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
59146         
59147 # check transactions-1 success:         1
59148 COMMIT WORK;
59149         
59150 # check transactions-2 success:         1
59151 ROLLBACK WORK;
59152         
59153 # check transactions-3 success:         1
59154 DELETE FROM t1 WHERE f_charbig = 'was inserted';
59155 COMMIT WORK;
59156 ROLLBACK WORK;
59157         
59158 # check transactions-4 success:         1
59159 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59160 SELECT f_int1, f_int1, '', '', 'was inserted'
59161 FROM t0_template source_tab
59162 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
59163         
59164 # check transactions-5 success:         1
59165 ROLLBACK WORK;
59166 Warnings:
59167 Warning 1196    Some non-transactional changed tables couldn't be rolled back
59168         
59169 # check transactions-6 success:         1
59170 # INFO: Storage engine used for t1 seems to be not transactional.
59171 COMMIT;
59172         
59173 # check transactions-7 success:         1
59174 DELETE FROM t1 WHERE f_charbig = 'was inserted';
59175 COMMIT WORK;
59176 SET @@session.sql_mode = 'traditional';
59177 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
59178 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59179 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
59180 '', '', 'was inserted' FROM t0_template
59181 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
59182 ERROR 22012: Division by 0
59183 COMMIT;
59184         
59185 # check transactions-8 success:         1
59186 # INFO: Storage engine used for t1 seems to be unable to revert
59187 #       changes made by the failing statement.
59188 SET @@session.sql_mode = '';
59189 SET AUTOCOMMIT= 1;
59190 DELETE FROM t1 WHERE f_charbig = 'was inserted';
59191 COMMIT WORK;
59192 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
59193         
59194 # check special-1 success:      1
59195 UPDATE t1 SET f_charbig = '';
59196         
59197 # check special-2 success:      1
59198 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
59199 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59200 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
59201 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59202 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59203 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59204 'just inserted' FROM t0_template
59205 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59206 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
59207 BEGIN
59208 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59209 f_charbig = 'updated by trigger'
59210       WHERE f_int1 = new.f_int1;
59211 END|
59212 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59213 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
59214 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59215         
59216 # check trigger-1 success:      1
59217 DROP TRIGGER trg_1;
59218 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59219 f_int2 = CAST(f_char1 AS SIGNED INT),
59220 f_charbig = 'just inserted'
59221    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59222 DELETE FROM t0_aux
59223 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59224 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59225 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59226 'just inserted' FROM t0_template
59227 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59228 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
59229 BEGIN
59230 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59231 f_charbig = 'updated by trigger'
59232       WHERE f_int1 = new.f_int1;
59233 END|
59234 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59235 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
59236 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59237         
59238 # check trigger-2 success:      1
59239 DROP TRIGGER trg_1;
59240 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59241 f_int2 = CAST(f_char1 AS SIGNED INT),
59242 f_charbig = 'just inserted'
59243    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59244 DELETE FROM t0_aux
59245 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59246 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59247 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59248 'just inserted' FROM t0_template
59249 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59250 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
59251 BEGIN
59252 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59253 f_charbig = 'updated by trigger'
59254       WHERE f_int1 = new.f_int1;
59255 END|
59256 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
59257 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59258         
59259 # check trigger-3 success:      1
59260 DROP TRIGGER trg_1;
59261 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59262 f_int2 = CAST(f_char1 AS SIGNED INT),
59263 f_charbig = 'just inserted'
59264    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59265 DELETE FROM t0_aux
59266 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59267 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59268 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59269 'just inserted' FROM t0_template
59270 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59271 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
59272 BEGIN
59273 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59274 f_charbig = 'updated by trigger'
59275       WHERE f_int1 = - old.f_int1;
59276 END|
59277 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
59278 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59279         
59280 # check trigger-4 success:      1
59281 DROP TRIGGER trg_1;
59282 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59283 f_int2 = CAST(f_char1 AS SIGNED INT),
59284 f_charbig = 'just inserted'
59285    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59286 DELETE FROM t0_aux
59287 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59288 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59289 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59290 'just inserted' FROM t0_template
59291 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59292 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
59293 BEGIN
59294 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59295 f_charbig = 'updated by trigger'
59296       WHERE f_int1 = new.f_int1;
59297 END|
59298 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
59299 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59300         
59301 # check trigger-5 success:      1
59302 DROP TRIGGER trg_1;
59303 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59304 f_int2 = CAST(f_char1 AS SIGNED INT),
59305 f_charbig = 'just inserted'
59306    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59307 DELETE FROM t0_aux
59308 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59309 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59310 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59311 'just inserted' FROM t0_template
59312 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59313 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
59314 BEGIN
59315 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59316 f_charbig = 'updated by trigger'
59317       WHERE f_int1 = - old.f_int1;
59318 END|
59319 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
59320 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59321         
59322 # check trigger-6 success:      1
59323 DROP TRIGGER trg_1;
59324 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59325 f_int2 = CAST(f_char1 AS SIGNED INT),
59326 f_charbig = 'just inserted'
59327    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59328 DELETE FROM t0_aux
59329 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59330 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59331 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59332 'just inserted' FROM t0_template
59333 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59334 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
59335 BEGIN
59336 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59337 f_charbig = 'updated by trigger'
59338       WHERE f_int1 = - old.f_int1;
59339 END|
59340 DELETE FROM t0_aux
59341 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59342         
59343 # check trigger-7 success:      1
59344 DROP TRIGGER trg_1;
59345 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59346 f_int2 = CAST(f_char1 AS SIGNED INT),
59347 f_charbig = 'just inserted'
59348    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59349 DELETE FROM t0_aux
59350 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59351 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59352 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59353 'just inserted' FROM t0_template
59354 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59355 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
59356 BEGIN
59357 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59358 f_charbig = 'updated by trigger'
59359       WHERE f_int1 = - old.f_int1;
59360 END|
59361 DELETE FROM t0_aux
59362 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59363         
59364 # check trigger-8 success:      1
59365 DROP TRIGGER trg_1;
59366 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59367 f_int2 = CAST(f_char1 AS SIGNED INT),
59368 f_charbig = 'just inserted'
59369    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59370 DELETE FROM t0_aux
59371 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59372 DELETE FROM t1
59373 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59374 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
59375 BEGIN
59376 SET new.f_int1 = old.f_int1 + @max_row,
59377 new.f_int2 = old.f_int2 - @max_row,
59378 new.f_charbig = '####updated per update trigger####';
59379 END|
59380 UPDATE t1
59381 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
59382 f_charbig = '####updated per update statement itself####';
59383         
59384 # check trigger-9 success:      1
59385 DROP TRIGGER trg_2;
59386 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59387 f_int2 = CAST(f_char1 AS SIGNED INT),
59388 f_charbig = CONCAT('===',f_char1,'===');
59389 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
59390 BEGIN
59391 SET new.f_int1 = new.f_int1 + @max_row,
59392 new.f_int2 = new.f_int2 - @max_row,
59393 new.f_charbig = '####updated per update trigger####';
59394 END|
59395 UPDATE t1
59396 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
59397 f_charbig = '####updated per update statement itself####';
59398         
59399 # check trigger-10 success:     1
59400 DROP TRIGGER trg_2;
59401 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59402 f_int2 = CAST(f_char1 AS SIGNED INT),
59403 f_charbig = CONCAT('===',f_char1,'===');
59404 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
59405 BEGIN
59406 SET new.f_int1 = @my_max1 + @counter,
59407 new.f_int2 = @my_min2 - @counter,
59408 new.f_charbig = '####updated per insert trigger####';
59409 SET @counter = @counter + 1;
59410 END|
59411 SET @counter = 1;
59412 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
59413 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59414 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
59415 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
59416 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
59417 ORDER BY f_int1;
59418 DROP TRIGGER trg_3;
59419         
59420 # check trigger-11 success:     1
59421 DELETE FROM t1
59422 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
59423 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
59424 AND f_charbig = '####updated per insert trigger####';
59425 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
59426 BEGIN
59427 SET new.f_int1 = @my_max1 + @counter,
59428 new.f_int2 = @my_min2 - @counter,
59429 new.f_charbig = '####updated per insert trigger####';
59430 SET @counter = @counter + 1;
59431 END|
59432 SET @counter = 1;
59433 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
59434 INSERT INTO t1 (f_char1, f_char2, f_charbig)
59435 SELECT CAST(f_int1 AS CHAR),
59436 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
59437 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
59438 ORDER BY f_int1;
59439 DROP TRIGGER trg_3;
59440         
59441 # check trigger-12 success:     1
59442 DELETE FROM t1
59443 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
59444 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
59445 AND f_charbig = '####updated per insert trigger####';
59446 ANALYZE  TABLE t1;
59447 Table   Op      Msg_type        Msg_text
59448 test.t1 analyze status  OK
59449 CHECK    TABLE t1 EXTENDED;
59450 Table   Op      Msg_type        Msg_text
59451 test.t1 check   status  OK
59452 CHECKSUM TABLE t1 EXTENDED;
59453 Table   Checksum
59454 test.t1 <some_value>
59455 OPTIMIZE TABLE t1;
59456 Table   Op      Msg_type        Msg_text
59457 test.t1 optimize        status  OK
59458 # check layout success:    1
59459 REPAIR   TABLE t1 EXTENDED;
59460 Table   Op      Msg_type        Msg_text
59461 test.t1 repair  status  OK
59462 # check layout success:    1
59463 TRUNCATE t1;
59464         
59465 # check TRUNCATE success:       1
59466 # check layout success:    1
59467 # End usability test (inc/partition_check.inc)
59468 DROP TABLE t1;
59469 CREATE TABLE t1 (
59470 f_int1 INTEGER,
59471 f_int2 INTEGER,
59472 f_char1 CHAR(20),
59473 f_char2 CHAR(20),
59474 f_charbig VARCHAR(1000)
59477 PARTITION BY LIST(MOD(f_int1,4))
59478 (PARTITION part_3 VALUES IN (-3),
59479 PARTITION part_2 VALUES IN (-2),
59480 PARTITION part_1 VALUES IN (-1),
59481 PARTITION part_N VALUES IN (NULL),
59482 PARTITION part0 VALUES IN (0),
59483 PARTITION part1 VALUES IN (1),
59484 PARTITION part2 VALUES IN (2),
59485 PARTITION part3 VALUES IN (3));
59486 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59487 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
59488 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
59489 ALTER TABLE t1 REBUILD PARTITION part_1;
59490 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59491 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
59492 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
59493 # Start usability test (inc/partition_check.inc)
59494 create_command
59495 SHOW CREATE TABLE t1;
59496 Table   Create Table
59497 t1      CREATE TABLE `t1` (
59498   `f_int1` int(11) DEFAULT NULL,
59499   `f_int2` int(11) DEFAULT NULL,
59500   `f_char1` char(20) DEFAULT NULL,
59501   `f_char2` char(20) DEFAULT NULL,
59502   `f_charbig` varchar(1000) DEFAULT NULL
59503 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
59504 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
59505 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
59506  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
59507  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
59508  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
59509  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
59510  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
59511  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
59512  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
59514 unified filelist
59515 t1#P#part0.MYD
59516 t1#P#part0.MYI
59517 t1#P#part1.MYD
59518 t1#P#part1.MYI
59519 t1#P#part2.MYD
59520 t1#P#part2.MYI
59521 t1#P#part3.MYD
59522 t1#P#part3.MYI
59523 t1#P#part_1.MYD
59524 t1#P#part_1.MYI
59525 t1#P#part_2.MYD
59526 t1#P#part_2.MYI
59527 t1#P#part_3.MYD
59528 t1#P#part_3.MYI
59529 t1#P#part_N.MYD
59530 t1#P#part_N.MYI
59531 t1.frm
59532 t1.par
59534 # check prerequisites-1 success:    1
59535 # check COUNT(*) success:    1
59536 # check MIN/MAX(f_int1) success:    1
59537 # check MIN/MAX(f_int2) success:    1
59538 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59539 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
59540 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
59541 WHERE f_int1 IN (2,3);
59542 # check prerequisites-3 success:    1
59543 DELETE FROM t1 WHERE f_charbig = 'delete me';
59544 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
59545 # check read via f_int1 success: 1
59546 # check read via f_int2 success: 1
59547         
59548 # check multiple-1 success:     1
59549 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
59550         
59551 # check multiple-2 success:     1
59552 INSERT INTO t1 SELECT * FROM t0_template
59553 WHERE MOD(f_int1,3) = 0;
59554         
59555 # check multiple-3 success:     1
59556 UPDATE t1 SET f_int1 = f_int1 + @max_row
59557 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
59558 AND @max_row_div2 + @max_row_div4;
59559         
59560 # check multiple-4 success:     1
59561 DELETE FROM t1
59562 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
59563 AND @max_row_div2 + @max_row_div4 + @max_row;
59564         
59565 # check multiple-5 success:     1
59566 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
59567 INSERT INTO t1
59568 SET f_int1 = @cur_value , f_int2 = @cur_value,
59569 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
59570 f_charbig = '#SINGLE#';
59571         
59572 # check single-1 success:       1
59573 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
59574 INSERT INTO t1
59575 SET f_int1 = @cur_value , f_int2 = @cur_value,
59576 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
59577 f_charbig = '#SINGLE#';
59578         
59579 # check single-2 success:       1
59580 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
59581 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
59582 UPDATE t1 SET f_int1 = @cur_value2
59583 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
59584         
59585 # check single-3 success:       1
59586 SET @cur_value1= -1;
59587 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
59588 UPDATE t1 SET f_int1 = @cur_value1
59589 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
59590         
59591 # check single-4 success:       1
59592 SELECT MAX(f_int1) INTO @cur_value FROM t1;
59593 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
59594         
59595 # check single-5 success:       1
59596 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
59597         
59598 # check single-6 success:       1
59599 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
59600         
59601 # check single-7 success:       1
59602 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
59603 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
59604 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
59605 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
59606 f_charbig = '#NULL#';
59607 INSERT INTO t1
59608 SET f_int1 = NULL , f_int2 = -@max_row,
59609 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
59610 f_charbig = '#NULL#';
59611 # check null success:    1
59612         
59613 # check null-1 success:         1
59614 UPDATE t1 SET f_int1 = -@max_row
59615 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
59616 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
59617         
59618 # check null-2 success:         1
59619 UPDATE t1 SET f_int1 = NULL
59620 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
59621 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
59622         
59623 # check null-3 success:         1
59624 DELETE FROM t1
59625 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
59626 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
59627         
59628 # check null-4 success:         1
59629 DELETE FROM t1
59630 WHERE f_int1 = 0 AND f_int2 = 0
59631 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
59632 AND f_charbig = '#NULL#';
59633 SET AUTOCOMMIT= 0;
59634 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59635 SELECT f_int1, f_int1, '', '', 'was inserted'
59636 FROM t0_template source_tab
59637 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
59638         
59639 # check transactions-1 success:         1
59640 COMMIT WORK;
59641         
59642 # check transactions-2 success:         1
59643 ROLLBACK WORK;
59644         
59645 # check transactions-3 success:         1
59646 DELETE FROM t1 WHERE f_charbig = 'was inserted';
59647 COMMIT WORK;
59648 ROLLBACK WORK;
59649         
59650 # check transactions-4 success:         1
59651 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59652 SELECT f_int1, f_int1, '', '', 'was inserted'
59653 FROM t0_template source_tab
59654 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
59655         
59656 # check transactions-5 success:         1
59657 ROLLBACK WORK;
59658 Warnings:
59659 Warning 1196    Some non-transactional changed tables couldn't be rolled back
59660         
59661 # check transactions-6 success:         1
59662 # INFO: Storage engine used for t1 seems to be not transactional.
59663 COMMIT;
59664         
59665 # check transactions-7 success:         1
59666 DELETE FROM t1 WHERE f_charbig = 'was inserted';
59667 COMMIT WORK;
59668 SET @@session.sql_mode = 'traditional';
59669 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
59670 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59671 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
59672 '', '', 'was inserted' FROM t0_template
59673 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
59674 ERROR 22012: Division by 0
59675 COMMIT;
59676         
59677 # check transactions-8 success:         1
59678 # INFO: Storage engine used for t1 seems to be unable to revert
59679 #       changes made by the failing statement.
59680 SET @@session.sql_mode = '';
59681 SET AUTOCOMMIT= 1;
59682 DELETE FROM t1 WHERE f_charbig = 'was inserted';
59683 COMMIT WORK;
59684 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
59685         
59686 # check special-1 success:      1
59687 UPDATE t1 SET f_charbig = '';
59688         
59689 # check special-2 success:      1
59690 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
59691 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59692 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
59693 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59694 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59695 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59696 'just inserted' FROM t0_template
59697 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59698 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
59699 BEGIN
59700 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59701 f_charbig = 'updated by trigger'
59702       WHERE f_int1 = new.f_int1;
59703 END|
59704 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59705 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
59706 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59707         
59708 # check trigger-1 success:      1
59709 DROP TRIGGER trg_1;
59710 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59711 f_int2 = CAST(f_char1 AS SIGNED INT),
59712 f_charbig = 'just inserted'
59713    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59714 DELETE FROM t0_aux
59715 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59716 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59717 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59718 'just inserted' FROM t0_template
59719 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59720 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
59721 BEGIN
59722 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59723 f_charbig = 'updated by trigger'
59724       WHERE f_int1 = new.f_int1;
59725 END|
59726 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59727 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
59728 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59729         
59730 # check trigger-2 success:      1
59731 DROP TRIGGER trg_1;
59732 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59733 f_int2 = CAST(f_char1 AS SIGNED INT),
59734 f_charbig = 'just inserted'
59735    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59736 DELETE FROM t0_aux
59737 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59738 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59739 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59740 'just inserted' FROM t0_template
59741 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59742 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
59743 BEGIN
59744 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59745 f_charbig = 'updated by trigger'
59746       WHERE f_int1 = new.f_int1;
59747 END|
59748 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
59749 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59750         
59751 # check trigger-3 success:      1
59752 DROP TRIGGER trg_1;
59753 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59754 f_int2 = CAST(f_char1 AS SIGNED INT),
59755 f_charbig = 'just inserted'
59756    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59757 DELETE FROM t0_aux
59758 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59759 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59760 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59761 'just inserted' FROM t0_template
59762 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59763 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
59764 BEGIN
59765 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59766 f_charbig = 'updated by trigger'
59767       WHERE f_int1 = - old.f_int1;
59768 END|
59769 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
59770 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59771         
59772 # check trigger-4 success:      1
59773 DROP TRIGGER trg_1;
59774 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59775 f_int2 = CAST(f_char1 AS SIGNED INT),
59776 f_charbig = 'just inserted'
59777    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59778 DELETE FROM t0_aux
59779 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59780 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59781 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59782 'just inserted' FROM t0_template
59783 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59784 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
59785 BEGIN
59786 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59787 f_charbig = 'updated by trigger'
59788       WHERE f_int1 = new.f_int1;
59789 END|
59790 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
59791 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59792         
59793 # check trigger-5 success:      1
59794 DROP TRIGGER trg_1;
59795 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59796 f_int2 = CAST(f_char1 AS SIGNED INT),
59797 f_charbig = 'just inserted'
59798    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59799 DELETE FROM t0_aux
59800 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59801 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59802 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59803 'just inserted' FROM t0_template
59804 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59805 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
59806 BEGIN
59807 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59808 f_charbig = 'updated by trigger'
59809       WHERE f_int1 = - old.f_int1;
59810 END|
59811 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
59812 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59813         
59814 # check trigger-6 success:      1
59815 DROP TRIGGER trg_1;
59816 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59817 f_int2 = CAST(f_char1 AS SIGNED INT),
59818 f_charbig = 'just inserted'
59819    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59820 DELETE FROM t0_aux
59821 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59822 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59823 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59824 'just inserted' FROM t0_template
59825 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59826 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
59827 BEGIN
59828 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59829 f_charbig = 'updated by trigger'
59830       WHERE f_int1 = - old.f_int1;
59831 END|
59832 DELETE FROM t0_aux
59833 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59834         
59835 # check trigger-7 success:      1
59836 DROP TRIGGER trg_1;
59837 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59838 f_int2 = CAST(f_char1 AS SIGNED INT),
59839 f_charbig = 'just inserted'
59840    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59841 DELETE FROM t0_aux
59842 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59843 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59844 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59845 'just inserted' FROM t0_template
59846 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59847 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
59848 BEGIN
59849 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59850 f_charbig = 'updated by trigger'
59851       WHERE f_int1 = - old.f_int1;
59852 END|
59853 DELETE FROM t0_aux
59854 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59855         
59856 # check trigger-8 success:      1
59857 DROP TRIGGER trg_1;
59858 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59859 f_int2 = CAST(f_char1 AS SIGNED INT),
59860 f_charbig = 'just inserted'
59861    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59862 DELETE FROM t0_aux
59863 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59864 DELETE FROM t1
59865 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59866 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
59867 BEGIN
59868 SET new.f_int1 = old.f_int1 + @max_row,
59869 new.f_int2 = old.f_int2 - @max_row,
59870 new.f_charbig = '####updated per update trigger####';
59871 END|
59872 UPDATE t1
59873 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
59874 f_charbig = '####updated per update statement itself####';
59875         
59876 # check trigger-9 success:      1
59877 DROP TRIGGER trg_2;
59878 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59879 f_int2 = CAST(f_char1 AS SIGNED INT),
59880 f_charbig = CONCAT('===',f_char1,'===');
59881 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
59882 BEGIN
59883 SET new.f_int1 = new.f_int1 + @max_row,
59884 new.f_int2 = new.f_int2 - @max_row,
59885 new.f_charbig = '####updated per update trigger####';
59886 END|
59887 UPDATE t1
59888 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
59889 f_charbig = '####updated per update statement itself####';
59890         
59891 # check trigger-10 success:     1
59892 DROP TRIGGER trg_2;
59893 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59894 f_int2 = CAST(f_char1 AS SIGNED INT),
59895 f_charbig = CONCAT('===',f_char1,'===');
59896 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
59897 BEGIN
59898 SET new.f_int1 = @my_max1 + @counter,
59899 new.f_int2 = @my_min2 - @counter,
59900 new.f_charbig = '####updated per insert trigger####';
59901 SET @counter = @counter + 1;
59902 END|
59903 SET @counter = 1;
59904 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
59905 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59906 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
59907 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
59908 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
59909 ORDER BY f_int1;
59910 DROP TRIGGER trg_3;
59911         
59912 # check trigger-11 success:     1
59913 DELETE FROM t1
59914 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
59915 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
59916 AND f_charbig = '####updated per insert trigger####';
59917 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
59918 BEGIN
59919 SET new.f_int1 = @my_max1 + @counter,
59920 new.f_int2 = @my_min2 - @counter,
59921 new.f_charbig = '####updated per insert trigger####';
59922 SET @counter = @counter + 1;
59923 END|
59924 SET @counter = 1;
59925 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
59926 INSERT INTO t1 (f_char1, f_char2, f_charbig)
59927 SELECT CAST(f_int1 AS CHAR),
59928 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
59929 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
59930 ORDER BY f_int1;
59931 DROP TRIGGER trg_3;
59932         
59933 # check trigger-12 success:     1
59934 DELETE FROM t1
59935 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
59936 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
59937 AND f_charbig = '####updated per insert trigger####';
59938 ANALYZE  TABLE t1;
59939 Table   Op      Msg_type        Msg_text
59940 test.t1 analyze status  OK
59941 CHECK    TABLE t1 EXTENDED;
59942 Table   Op      Msg_type        Msg_text
59943 test.t1 check   status  OK
59944 CHECKSUM TABLE t1 EXTENDED;
59945 Table   Checksum
59946 test.t1 <some_value>
59947 OPTIMIZE TABLE t1;
59948 Table   Op      Msg_type        Msg_text
59949 test.t1 optimize        status  OK
59950 # check layout success:    1
59951 REPAIR   TABLE t1 EXTENDED;
59952 Table   Op      Msg_type        Msg_text
59953 test.t1 repair  status  OK
59954 # check layout success:    1
59955 TRUNCATE t1;
59956         
59957 # check TRUNCATE success:       1
59958 # check layout success:    1
59959 # End usability test (inc/partition_check.inc)
59960 DROP TABLE t1;
59961 CREATE TABLE t1 (
59962 f_int1 INTEGER,
59963 f_int2 INTEGER,
59964 f_char1 CHAR(20),
59965 f_char2 CHAR(20),
59966 f_charbig VARCHAR(1000)
59969 PARTITION BY RANGE(f_int1)
59970 (PARTITION parta VALUES LESS THAN (0),
59971 PARTITION part_1 VALUES LESS THAN (5),
59972 PARTITION part_2 VALUES LESS THAN (10),
59973 PARTITION part_3 VALUES LESS THAN (10 + 5),
59974 PARTITION part_4 VALUES LESS THAN (20),
59975 PARTITION part_5 VALUES LESS THAN (2147483646));
59976 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59977 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
59978 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
59979 ALTER TABLE t1 REBUILD PARTITION part_1;
59980 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59981 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
59982 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
59983 # Start usability test (inc/partition_check.inc)
59984 create_command
59985 SHOW CREATE TABLE t1;
59986 Table   Create Table
59987 t1      CREATE TABLE `t1` (
59988   `f_int1` int(11) DEFAULT NULL,
59989   `f_int2` int(11) DEFAULT NULL,
59990   `f_char1` char(20) DEFAULT NULL,
59991   `f_char2` char(20) DEFAULT NULL,
59992   `f_charbig` varchar(1000) DEFAULT NULL
59993 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
59994 /*!50100 PARTITION BY RANGE (f_int1)
59995 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
59996  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
59997  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
59998  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
59999  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
60000  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
60002 unified filelist
60003 t1#P#part_1.MYD
60004 t1#P#part_1.MYI
60005 t1#P#part_2.MYD
60006 t1#P#part_2.MYI
60007 t1#P#part_3.MYD
60008 t1#P#part_3.MYI
60009 t1#P#part_4.MYD
60010 t1#P#part_4.MYI
60011 t1#P#part_5.MYD
60012 t1#P#part_5.MYI
60013 t1#P#parta.MYD
60014 t1#P#parta.MYI
60015 t1.frm
60016 t1.par
60018 # check prerequisites-1 success:    1
60019 # check COUNT(*) success:    1
60020 # check MIN/MAX(f_int1) success:    1
60021 # check MIN/MAX(f_int2) success:    1
60022 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60023 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
60024 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
60025 WHERE f_int1 IN (2,3);
60026 # check prerequisites-3 success:    1
60027 DELETE FROM t1 WHERE f_charbig = 'delete me';
60028 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
60029 # check read via f_int1 success: 1
60030 # check read via f_int2 success: 1
60031         
60032 # check multiple-1 success:     1
60033 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
60034         
60035 # check multiple-2 success:     1
60036 INSERT INTO t1 SELECT * FROM t0_template
60037 WHERE MOD(f_int1,3) = 0;
60038         
60039 # check multiple-3 success:     1
60040 UPDATE t1 SET f_int1 = f_int1 + @max_row
60041 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
60042 AND @max_row_div2 + @max_row_div4;
60043         
60044 # check multiple-4 success:     1
60045 DELETE FROM t1
60046 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
60047 AND @max_row_div2 + @max_row_div4 + @max_row;
60048         
60049 # check multiple-5 success:     1
60050 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
60051 INSERT INTO t1
60052 SET f_int1 = @cur_value , f_int2 = @cur_value,
60053 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
60054 f_charbig = '#SINGLE#';
60055         
60056 # check single-1 success:       1
60057 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
60058 INSERT INTO t1
60059 SET f_int1 = @cur_value , f_int2 = @cur_value,
60060 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
60061 f_charbig = '#SINGLE#';
60062         
60063 # check single-2 success:       1
60064 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
60065 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
60066 UPDATE t1 SET f_int1 = @cur_value2
60067 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
60068         
60069 # check single-3 success:       1
60070 SET @cur_value1= -1;
60071 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
60072 UPDATE t1 SET f_int1 = @cur_value1
60073 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
60074         
60075 # check single-4 success:       1
60076 SELECT MAX(f_int1) INTO @cur_value FROM t1;
60077 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
60078         
60079 # check single-5 success:       1
60080 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
60081         
60082 # check single-6 success:       1
60083 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
60084 ERROR HY000: Table has no partition for value 2147483647
60085 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
60086 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
60087 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
60088 f_charbig = '#NULL#';
60089 INSERT INTO t1
60090 SET f_int1 = NULL , f_int2 = -@max_row,
60091 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
60092 f_charbig = '#NULL#';
60093 # check null success:    1
60094         
60095 # check null-1 success:         1
60096 UPDATE t1 SET f_int1 = -@max_row
60097 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
60098 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
60099         
60100 # check null-2 success:         1
60101 UPDATE t1 SET f_int1 = NULL
60102 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
60103 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
60104         
60105 # check null-3 success:         1
60106 DELETE FROM t1
60107 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
60108 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
60109         
60110 # check null-4 success:         1
60111 DELETE FROM t1
60112 WHERE f_int1 = 0 AND f_int2 = 0
60113 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
60114 AND f_charbig = '#NULL#';
60115 SET AUTOCOMMIT= 0;
60116 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60117 SELECT f_int1, f_int1, '', '', 'was inserted'
60118 FROM t0_template source_tab
60119 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
60120         
60121 # check transactions-1 success:         1
60122 COMMIT WORK;
60123         
60124 # check transactions-2 success:         1
60125 ROLLBACK WORK;
60126         
60127 # check transactions-3 success:         1
60128 DELETE FROM t1 WHERE f_charbig = 'was inserted';
60129 COMMIT WORK;
60130 ROLLBACK WORK;
60131         
60132 # check transactions-4 success:         1
60133 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60134 SELECT f_int1, f_int1, '', '', 'was inserted'
60135 FROM t0_template source_tab
60136 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
60137         
60138 # check transactions-5 success:         1
60139 ROLLBACK WORK;
60140 Warnings:
60141 Warning 1196    Some non-transactional changed tables couldn't be rolled back
60142         
60143 # check transactions-6 success:         1
60144 # INFO: Storage engine used for t1 seems to be not transactional.
60145 COMMIT;
60146         
60147 # check transactions-7 success:         1
60148 DELETE FROM t1 WHERE f_charbig = 'was inserted';
60149 COMMIT WORK;
60150 SET @@session.sql_mode = 'traditional';
60151 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
60152 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60153 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
60154 '', '', 'was inserted' FROM t0_template
60155 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
60156 ERROR 22012: Division by 0
60157 COMMIT;
60158         
60159 # check transactions-8 success:         1
60160 # INFO: Storage engine used for t1 seems to be unable to revert
60161 #       changes made by the failing statement.
60162 SET @@session.sql_mode = '';
60163 SET AUTOCOMMIT= 1;
60164 DELETE FROM t1 WHERE f_charbig = 'was inserted';
60165 COMMIT WORK;
60166 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
60167         
60168 # check special-1 success:      1
60169 UPDATE t1 SET f_charbig = '';
60170         
60171 # check special-2 success:      1
60172 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
60173 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
60174 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
60175 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60176 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60177 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60178 'just inserted' FROM t0_template
60179 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60180 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
60181 BEGIN
60182 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60183 f_charbig = 'updated by trigger'
60184       WHERE f_int1 = new.f_int1;
60185 END|
60186 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60187 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
60188 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60189         
60190 # check trigger-1 success:      1
60191 DROP TRIGGER trg_1;
60192 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60193 f_int2 = CAST(f_char1 AS SIGNED INT),
60194 f_charbig = 'just inserted'
60195    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60196 DELETE FROM t0_aux
60197 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60198 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60199 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60200 'just inserted' FROM t0_template
60201 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60202 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
60203 BEGIN
60204 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60205 f_charbig = 'updated by trigger'
60206       WHERE f_int1 = new.f_int1;
60207 END|
60208 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60209 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
60210 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60211         
60212 # check trigger-2 success:      1
60213 DROP TRIGGER trg_1;
60214 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60215 f_int2 = CAST(f_char1 AS SIGNED INT),
60216 f_charbig = 'just inserted'
60217    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60218 DELETE FROM t0_aux
60219 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60220 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60221 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60222 'just inserted' FROM t0_template
60223 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60224 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
60225 BEGIN
60226 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60227 f_charbig = 'updated by trigger'
60228       WHERE f_int1 = new.f_int1;
60229 END|
60230 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
60231 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60232         
60233 # check trigger-3 success:      1
60234 DROP TRIGGER trg_1;
60235 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60236 f_int2 = CAST(f_char1 AS SIGNED INT),
60237 f_charbig = 'just inserted'
60238    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60239 DELETE FROM t0_aux
60240 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60241 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60242 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60243 'just inserted' FROM t0_template
60244 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60245 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
60246 BEGIN
60247 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60248 f_charbig = 'updated by trigger'
60249       WHERE f_int1 = - old.f_int1;
60250 END|
60251 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
60252 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60253         
60254 # check trigger-4 success:      1
60255 DROP TRIGGER trg_1;
60256 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60257 f_int2 = CAST(f_char1 AS SIGNED INT),
60258 f_charbig = 'just inserted'
60259    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60260 DELETE FROM t0_aux
60261 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60262 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60263 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60264 'just inserted' FROM t0_template
60265 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60266 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
60267 BEGIN
60268 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60269 f_charbig = 'updated by trigger'
60270       WHERE f_int1 = new.f_int1;
60271 END|
60272 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
60273 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60274         
60275 # check trigger-5 success:      1
60276 DROP TRIGGER trg_1;
60277 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60278 f_int2 = CAST(f_char1 AS SIGNED INT),
60279 f_charbig = 'just inserted'
60280    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60281 DELETE FROM t0_aux
60282 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60283 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60284 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60285 'just inserted' FROM t0_template
60286 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60287 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
60288 BEGIN
60289 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60290 f_charbig = 'updated by trigger'
60291       WHERE f_int1 = - old.f_int1;
60292 END|
60293 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
60294 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60295         
60296 # check trigger-6 success:      1
60297 DROP TRIGGER trg_1;
60298 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60299 f_int2 = CAST(f_char1 AS SIGNED INT),
60300 f_charbig = 'just inserted'
60301    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60302 DELETE FROM t0_aux
60303 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60304 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60305 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60306 'just inserted' FROM t0_template
60307 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60308 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
60309 BEGIN
60310 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60311 f_charbig = 'updated by trigger'
60312       WHERE f_int1 = - old.f_int1;
60313 END|
60314 DELETE FROM t0_aux
60315 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60316         
60317 # check trigger-7 success:      1
60318 DROP TRIGGER trg_1;
60319 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60320 f_int2 = CAST(f_char1 AS SIGNED INT),
60321 f_charbig = 'just inserted'
60322    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60323 DELETE FROM t0_aux
60324 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60325 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60326 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60327 'just inserted' FROM t0_template
60328 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60329 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
60330 BEGIN
60331 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60332 f_charbig = 'updated by trigger'
60333       WHERE f_int1 = - old.f_int1;
60334 END|
60335 DELETE FROM t0_aux
60336 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60337         
60338 # check trigger-8 success:      1
60339 DROP TRIGGER trg_1;
60340 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60341 f_int2 = CAST(f_char1 AS SIGNED INT),
60342 f_charbig = 'just inserted'
60343    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60344 DELETE FROM t0_aux
60345 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60346 DELETE FROM t1
60347 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60348 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
60349 BEGIN
60350 SET new.f_int1 = old.f_int1 + @max_row,
60351 new.f_int2 = old.f_int2 - @max_row,
60352 new.f_charbig = '####updated per update trigger####';
60353 END|
60354 UPDATE t1
60355 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
60356 f_charbig = '####updated per update statement itself####';
60357         
60358 # check trigger-9 success:      1
60359 DROP TRIGGER trg_2;
60360 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60361 f_int2 = CAST(f_char1 AS SIGNED INT),
60362 f_charbig = CONCAT('===',f_char1,'===');
60363 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
60364 BEGIN
60365 SET new.f_int1 = new.f_int1 + @max_row,
60366 new.f_int2 = new.f_int2 - @max_row,
60367 new.f_charbig = '####updated per update trigger####';
60368 END|
60369 UPDATE t1
60370 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
60371 f_charbig = '####updated per update statement itself####';
60372         
60373 # check trigger-10 success:     1
60374 DROP TRIGGER trg_2;
60375 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60376 f_int2 = CAST(f_char1 AS SIGNED INT),
60377 f_charbig = CONCAT('===',f_char1,'===');
60378 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
60379 BEGIN
60380 SET new.f_int1 = @my_max1 + @counter,
60381 new.f_int2 = @my_min2 - @counter,
60382 new.f_charbig = '####updated per insert trigger####';
60383 SET @counter = @counter + 1;
60384 END|
60385 SET @counter = 1;
60386 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
60387 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60388 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
60389 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
60390 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
60391 ORDER BY f_int1;
60392 DROP TRIGGER trg_3;
60393         
60394 # check trigger-11 success:     1
60395 DELETE FROM t1
60396 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
60397 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
60398 AND f_charbig = '####updated per insert trigger####';
60399 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
60400 BEGIN
60401 SET new.f_int1 = @my_max1 + @counter,
60402 new.f_int2 = @my_min2 - @counter,
60403 new.f_charbig = '####updated per insert trigger####';
60404 SET @counter = @counter + 1;
60405 END|
60406 SET @counter = 1;
60407 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
60408 INSERT INTO t1 (f_char1, f_char2, f_charbig)
60409 SELECT CAST(f_int1 AS CHAR),
60410 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
60411 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
60412 ORDER BY f_int1;
60413 DROP TRIGGER trg_3;
60414         
60415 # check trigger-12 success:     1
60416 DELETE FROM t1
60417 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
60418 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
60419 AND f_charbig = '####updated per insert trigger####';
60420 ANALYZE  TABLE t1;
60421 Table   Op      Msg_type        Msg_text
60422 test.t1 analyze status  OK
60423 CHECK    TABLE t1 EXTENDED;
60424 Table   Op      Msg_type        Msg_text
60425 test.t1 check   status  OK
60426 CHECKSUM TABLE t1 EXTENDED;
60427 Table   Checksum
60428 test.t1 <some_value>
60429 OPTIMIZE TABLE t1;
60430 Table   Op      Msg_type        Msg_text
60431 test.t1 optimize        status  OK
60432 # check layout success:    1
60433 REPAIR   TABLE t1 EXTENDED;
60434 Table   Op      Msg_type        Msg_text
60435 test.t1 repair  status  OK
60436 # check layout success:    1
60437 TRUNCATE t1;
60438         
60439 # check TRUNCATE success:       1
60440 # check layout success:    1
60441 # End usability test (inc/partition_check.inc)
60442 DROP TABLE t1;
60443 CREATE TABLE t1 (
60444 f_int1 INTEGER,
60445 f_int2 INTEGER,
60446 f_char1 CHAR(20),
60447 f_char2 CHAR(20),
60448 f_charbig VARCHAR(1000)
60451 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
60452 (PARTITION part_1 VALUES LESS THAN (0),
60453 PARTITION part_2 VALUES LESS THAN (5),
60454 PARTITION part_3 VALUES LESS THAN (10),
60455 PARTITION part_4 VALUES LESS THAN (2147483646));
60456 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
60457 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
60458 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
60459 ALTER TABLE t1 REBUILD PARTITION part_1;
60460 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
60461 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
60462 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
60463 # Start usability test (inc/partition_check.inc)
60464 create_command
60465 SHOW CREATE TABLE t1;
60466 Table   Create Table
60467 t1      CREATE TABLE `t1` (
60468   `f_int1` int(11) DEFAULT NULL,
60469   `f_int2` int(11) DEFAULT NULL,
60470   `f_char1` char(20) DEFAULT NULL,
60471   `f_char2` char(20) DEFAULT NULL,
60472   `f_charbig` varchar(1000) DEFAULT NULL
60473 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
60474 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
60475 SUBPARTITION BY HASH (f_int1)
60476 SUBPARTITIONS 2
60477 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
60478  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
60479  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
60480  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
60482 unified filelist
60483 t1#P#part_1#SP#part_1sp0.MYD
60484 t1#P#part_1#SP#part_1sp0.MYI
60485 t1#P#part_1#SP#part_1sp1.MYD
60486 t1#P#part_1#SP#part_1sp1.MYI
60487 t1#P#part_2#SP#part_2sp0.MYD
60488 t1#P#part_2#SP#part_2sp0.MYI
60489 t1#P#part_2#SP#part_2sp1.MYD
60490 t1#P#part_2#SP#part_2sp1.MYI
60491 t1#P#part_3#SP#part_3sp0.MYD
60492 t1#P#part_3#SP#part_3sp0.MYI
60493 t1#P#part_3#SP#part_3sp1.MYD
60494 t1#P#part_3#SP#part_3sp1.MYI
60495 t1#P#part_4#SP#part_4sp0.MYD
60496 t1#P#part_4#SP#part_4sp0.MYI
60497 t1#P#part_4#SP#part_4sp1.MYD
60498 t1#P#part_4#SP#part_4sp1.MYI
60499 t1.frm
60500 t1.par
60502 # check prerequisites-1 success:    1
60503 # check COUNT(*) success:    1
60504 # check MIN/MAX(f_int1) success:    1
60505 # check MIN/MAX(f_int2) success:    1
60506 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60507 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
60508 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
60509 WHERE f_int1 IN (2,3);
60510 # check prerequisites-3 success:    1
60511 DELETE FROM t1 WHERE f_charbig = 'delete me';
60512 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
60513 # check read via f_int1 success: 1
60514 # check read via f_int2 success: 1
60515         
60516 # check multiple-1 success:     1
60517 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
60518         
60519 # check multiple-2 success:     1
60520 INSERT INTO t1 SELECT * FROM t0_template
60521 WHERE MOD(f_int1,3) = 0;
60522         
60523 # check multiple-3 success:     1
60524 UPDATE t1 SET f_int1 = f_int1 + @max_row
60525 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
60526 AND @max_row_div2 + @max_row_div4;
60527         
60528 # check multiple-4 success:     1
60529 DELETE FROM t1
60530 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
60531 AND @max_row_div2 + @max_row_div4 + @max_row;
60532         
60533 # check multiple-5 success:     1
60534 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
60535 INSERT INTO t1
60536 SET f_int1 = @cur_value , f_int2 = @cur_value,
60537 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
60538 f_charbig = '#SINGLE#';
60539         
60540 # check single-1 success:       1
60541 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
60542 INSERT INTO t1
60543 SET f_int1 = @cur_value , f_int2 = @cur_value,
60544 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
60545 f_charbig = '#SINGLE#';
60546         
60547 # check single-2 success:       1
60548 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
60549 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
60550 UPDATE t1 SET f_int1 = @cur_value2
60551 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
60552         
60553 # check single-3 success:       1
60554 SET @cur_value1= -1;
60555 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
60556 UPDATE t1 SET f_int1 = @cur_value1
60557 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
60558         
60559 # check single-4 success:       1
60560 SELECT MAX(f_int1) INTO @cur_value FROM t1;
60561 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
60562         
60563 # check single-5 success:       1
60564 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
60565         
60566 # check single-6 success:       1
60567 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
60568         
60569 # check single-7 success:       1
60570 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
60571 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
60572 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
60573 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
60574 f_charbig = '#NULL#';
60575 INSERT INTO t1
60576 SET f_int1 = NULL , f_int2 = -@max_row,
60577 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
60578 f_charbig = '#NULL#';
60579 # check null success:    1
60580         
60581 # check null-1 success:         1
60582 UPDATE t1 SET f_int1 = -@max_row
60583 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
60584 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
60585         
60586 # check null-2 success:         1
60587 UPDATE t1 SET f_int1 = NULL
60588 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
60589 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
60590         
60591 # check null-3 success:         1
60592 DELETE FROM t1
60593 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
60594 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
60595         
60596 # check null-4 success:         1
60597 DELETE FROM t1
60598 WHERE f_int1 = 0 AND f_int2 = 0
60599 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
60600 AND f_charbig = '#NULL#';
60601 SET AUTOCOMMIT= 0;
60602 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60603 SELECT f_int1, f_int1, '', '', 'was inserted'
60604 FROM t0_template source_tab
60605 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
60606         
60607 # check transactions-1 success:         1
60608 COMMIT WORK;
60609         
60610 # check transactions-2 success:         1
60611 ROLLBACK WORK;
60612         
60613 # check transactions-3 success:         1
60614 DELETE FROM t1 WHERE f_charbig = 'was inserted';
60615 COMMIT WORK;
60616 ROLLBACK WORK;
60617         
60618 # check transactions-4 success:         1
60619 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60620 SELECT f_int1, f_int1, '', '', 'was inserted'
60621 FROM t0_template source_tab
60622 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
60623         
60624 # check transactions-5 success:         1
60625 ROLLBACK WORK;
60626 Warnings:
60627 Warning 1196    Some non-transactional changed tables couldn't be rolled back
60628         
60629 # check transactions-6 success:         1
60630 # INFO: Storage engine used for t1 seems to be not transactional.
60631 COMMIT;
60632         
60633 # check transactions-7 success:         1
60634 DELETE FROM t1 WHERE f_charbig = 'was inserted';
60635 COMMIT WORK;
60636 SET @@session.sql_mode = 'traditional';
60637 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
60638 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60639 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
60640 '', '', 'was inserted' FROM t0_template
60641 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
60642 ERROR 22012: Division by 0
60643 COMMIT;
60644         
60645 # check transactions-8 success:         1
60646 # INFO: Storage engine used for t1 seems to be unable to revert
60647 #       changes made by the failing statement.
60648 SET @@session.sql_mode = '';
60649 SET AUTOCOMMIT= 1;
60650 DELETE FROM t1 WHERE f_charbig = 'was inserted';
60651 COMMIT WORK;
60652 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
60653         
60654 # check special-1 success:      1
60655 UPDATE t1 SET f_charbig = '';
60656         
60657 # check special-2 success:      1
60658 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
60659 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
60660 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
60661 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60662 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60663 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60664 'just inserted' FROM t0_template
60665 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60666 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
60667 BEGIN
60668 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60669 f_charbig = 'updated by trigger'
60670       WHERE f_int1 = new.f_int1;
60671 END|
60672 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60673 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
60674 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60675         
60676 # check trigger-1 success:      1
60677 DROP TRIGGER trg_1;
60678 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60679 f_int2 = CAST(f_char1 AS SIGNED INT),
60680 f_charbig = 'just inserted'
60681    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60682 DELETE FROM t0_aux
60683 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60684 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60685 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60686 'just inserted' FROM t0_template
60687 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60688 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
60689 BEGIN
60690 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60691 f_charbig = 'updated by trigger'
60692       WHERE f_int1 = new.f_int1;
60693 END|
60694 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60695 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
60696 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60697         
60698 # check trigger-2 success:      1
60699 DROP TRIGGER trg_1;
60700 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60701 f_int2 = CAST(f_char1 AS SIGNED INT),
60702 f_charbig = 'just inserted'
60703    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60704 DELETE FROM t0_aux
60705 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60706 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60707 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60708 'just inserted' FROM t0_template
60709 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60710 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
60711 BEGIN
60712 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60713 f_charbig = 'updated by trigger'
60714       WHERE f_int1 = new.f_int1;
60715 END|
60716 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
60717 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60718         
60719 # check trigger-3 success:      1
60720 DROP TRIGGER trg_1;
60721 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60722 f_int2 = CAST(f_char1 AS SIGNED INT),
60723 f_charbig = 'just inserted'
60724    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60725 DELETE FROM t0_aux
60726 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60727 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60728 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60729 'just inserted' FROM t0_template
60730 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60731 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
60732 BEGIN
60733 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60734 f_charbig = 'updated by trigger'
60735       WHERE f_int1 = - old.f_int1;
60736 END|
60737 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
60738 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60739         
60740 # check trigger-4 success:      1
60741 DROP TRIGGER trg_1;
60742 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60743 f_int2 = CAST(f_char1 AS SIGNED INT),
60744 f_charbig = 'just inserted'
60745    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60746 DELETE FROM t0_aux
60747 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60748 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60749 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60750 'just inserted' FROM t0_template
60751 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60752 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
60753 BEGIN
60754 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60755 f_charbig = 'updated by trigger'
60756       WHERE f_int1 = new.f_int1;
60757 END|
60758 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
60759 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60760         
60761 # check trigger-5 success:      1
60762 DROP TRIGGER trg_1;
60763 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60764 f_int2 = CAST(f_char1 AS SIGNED INT),
60765 f_charbig = 'just inserted'
60766    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60767 DELETE FROM t0_aux
60768 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60769 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60770 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60771 'just inserted' FROM t0_template
60772 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60773 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
60774 BEGIN
60775 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60776 f_charbig = 'updated by trigger'
60777       WHERE f_int1 = - old.f_int1;
60778 END|
60779 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
60780 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60781         
60782 # check trigger-6 success:      1
60783 DROP TRIGGER trg_1;
60784 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60785 f_int2 = CAST(f_char1 AS SIGNED INT),
60786 f_charbig = 'just inserted'
60787    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60788 DELETE FROM t0_aux
60789 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60790 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60791 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60792 'just inserted' FROM t0_template
60793 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60794 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
60795 BEGIN
60796 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60797 f_charbig = 'updated by trigger'
60798       WHERE f_int1 = - old.f_int1;
60799 END|
60800 DELETE FROM t0_aux
60801 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60802         
60803 # check trigger-7 success:      1
60804 DROP TRIGGER trg_1;
60805 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60806 f_int2 = CAST(f_char1 AS SIGNED INT),
60807 f_charbig = 'just inserted'
60808    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60809 DELETE FROM t0_aux
60810 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60811 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60812 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60813 'just inserted' FROM t0_template
60814 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60815 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
60816 BEGIN
60817 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60818 f_charbig = 'updated by trigger'
60819       WHERE f_int1 = - old.f_int1;
60820 END|
60821 DELETE FROM t0_aux
60822 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60823         
60824 # check trigger-8 success:      1
60825 DROP TRIGGER trg_1;
60826 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60827 f_int2 = CAST(f_char1 AS SIGNED INT),
60828 f_charbig = 'just inserted'
60829    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60830 DELETE FROM t0_aux
60831 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60832 DELETE FROM t1
60833 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60834 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
60835 BEGIN
60836 SET new.f_int1 = old.f_int1 + @max_row,
60837 new.f_int2 = old.f_int2 - @max_row,
60838 new.f_charbig = '####updated per update trigger####';
60839 END|
60840 UPDATE t1
60841 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
60842 f_charbig = '####updated per update statement itself####';
60843         
60844 # check trigger-9 success:      1
60845 DROP TRIGGER trg_2;
60846 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60847 f_int2 = CAST(f_char1 AS SIGNED INT),
60848 f_charbig = CONCAT('===',f_char1,'===');
60849 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
60850 BEGIN
60851 SET new.f_int1 = new.f_int1 + @max_row,
60852 new.f_int2 = new.f_int2 - @max_row,
60853 new.f_charbig = '####updated per update trigger####';
60854 END|
60855 UPDATE t1
60856 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
60857 f_charbig = '####updated per update statement itself####';
60858         
60859 # check trigger-10 success:     1
60860 DROP TRIGGER trg_2;
60861 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60862 f_int2 = CAST(f_char1 AS SIGNED INT),
60863 f_charbig = CONCAT('===',f_char1,'===');
60864 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
60865 BEGIN
60866 SET new.f_int1 = @my_max1 + @counter,
60867 new.f_int2 = @my_min2 - @counter,
60868 new.f_charbig = '####updated per insert trigger####';
60869 SET @counter = @counter + 1;
60870 END|
60871 SET @counter = 1;
60872 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
60873 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60874 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
60875 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
60876 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
60877 ORDER BY f_int1;
60878 DROP TRIGGER trg_3;
60879         
60880 # check trigger-11 success:     1
60881 DELETE FROM t1
60882 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
60883 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
60884 AND f_charbig = '####updated per insert trigger####';
60885 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
60886 BEGIN
60887 SET new.f_int1 = @my_max1 + @counter,
60888 new.f_int2 = @my_min2 - @counter,
60889 new.f_charbig = '####updated per insert trigger####';
60890 SET @counter = @counter + 1;
60891 END|
60892 SET @counter = 1;
60893 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
60894 INSERT INTO t1 (f_char1, f_char2, f_charbig)
60895 SELECT CAST(f_int1 AS CHAR),
60896 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
60897 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
60898 ORDER BY f_int1;
60899 DROP TRIGGER trg_3;
60900         
60901 # check trigger-12 success:     1
60902 DELETE FROM t1
60903 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
60904 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
60905 AND f_charbig = '####updated per insert trigger####';
60906 ANALYZE  TABLE t1;
60907 Table   Op      Msg_type        Msg_text
60908 test.t1 analyze status  OK
60909 CHECK    TABLE t1 EXTENDED;
60910 Table   Op      Msg_type        Msg_text
60911 test.t1 check   status  OK
60912 CHECKSUM TABLE t1 EXTENDED;
60913 Table   Checksum
60914 test.t1 <some_value>
60915 OPTIMIZE TABLE t1;
60916 Table   Op      Msg_type        Msg_text
60917 test.t1 optimize        status  OK
60918 # check layout success:    1
60919 REPAIR   TABLE t1 EXTENDED;
60920 Table   Op      Msg_type        Msg_text
60921 test.t1 repair  status  OK
60922 # check layout success:    1
60923 TRUNCATE t1;
60924         
60925 # check TRUNCATE success:       1
60926 # check layout success:    1
60927 # End usability test (inc/partition_check.inc)
60928 DROP TABLE t1;
60929 CREATE TABLE t1 (
60930 f_int1 INTEGER,
60931 f_int2 INTEGER,
60932 f_char1 CHAR(20),
60933 f_char2 CHAR(20),
60934 f_charbig VARCHAR(1000)
60937 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
60938 (PARTITION part_1 VALUES LESS THAN (0)
60939 (SUBPARTITION subpart11, SUBPARTITION subpart12),
60940 PARTITION part_2 VALUES LESS THAN (5)
60941 (SUBPARTITION subpart21, SUBPARTITION subpart22),
60942 PARTITION part_3 VALUES LESS THAN (10)
60943 (SUBPARTITION subpart31, SUBPARTITION subpart32),
60944 PARTITION part_4 VALUES LESS THAN (2147483646)
60945 (SUBPARTITION subpart41, SUBPARTITION subpart42));
60946 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
60947 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
60948 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
60949 ALTER TABLE t1 REBUILD PARTITION part_1;
60950 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
60951 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
60952 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
60953 # Start usability test (inc/partition_check.inc)
60954 create_command
60955 SHOW CREATE TABLE t1;
60956 Table   Create Table
60957 t1      CREATE TABLE `t1` (
60958   `f_int1` int(11) DEFAULT NULL,
60959   `f_int2` int(11) DEFAULT NULL,
60960   `f_char1` char(20) DEFAULT NULL,
60961   `f_char2` char(20) DEFAULT NULL,
60962   `f_charbig` varchar(1000) DEFAULT NULL
60963 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
60964 /*!50100 PARTITION BY RANGE (f_int1)
60965 SUBPARTITION BY KEY (f_int1)
60966 (PARTITION part_1 VALUES LESS THAN (0)
60967  (SUBPARTITION subpart11 ENGINE = MyISAM,
60968   SUBPARTITION subpart12 ENGINE = MyISAM),
60969  PARTITION part_2 VALUES LESS THAN (5)
60970  (SUBPARTITION subpart21 ENGINE = MyISAM,
60971   SUBPARTITION subpart22 ENGINE = MyISAM),
60972  PARTITION part_3 VALUES LESS THAN (10)
60973  (SUBPARTITION subpart31 ENGINE = MyISAM,
60974   SUBPARTITION subpart32 ENGINE = MyISAM),
60975  PARTITION part_4 VALUES LESS THAN (2147483646)
60976  (SUBPARTITION subpart41 ENGINE = MyISAM,
60977   SUBPARTITION subpart42 ENGINE = MyISAM)) */
60979 unified filelist
60980 t1#P#part_1#SP#subpart11.MYD
60981 t1#P#part_1#SP#subpart11.MYI
60982 t1#P#part_1#SP#subpart12.MYD
60983 t1#P#part_1#SP#subpart12.MYI
60984 t1#P#part_2#SP#subpart21.MYD
60985 t1#P#part_2#SP#subpart21.MYI
60986 t1#P#part_2#SP#subpart22.MYD
60987 t1#P#part_2#SP#subpart22.MYI
60988 t1#P#part_3#SP#subpart31.MYD
60989 t1#P#part_3#SP#subpart31.MYI
60990 t1#P#part_3#SP#subpart32.MYD
60991 t1#P#part_3#SP#subpart32.MYI
60992 t1#P#part_4#SP#subpart41.MYD
60993 t1#P#part_4#SP#subpart41.MYI
60994 t1#P#part_4#SP#subpart42.MYD
60995 t1#P#part_4#SP#subpart42.MYI
60996 t1.frm
60997 t1.par
60999 # check prerequisites-1 success:    1
61000 # check COUNT(*) success:    1
61001 # check MIN/MAX(f_int1) success:    1
61002 # check MIN/MAX(f_int2) success:    1
61003 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
61004 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
61005 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
61006 WHERE f_int1 IN (2,3);
61007 # check prerequisites-3 success:    1
61008 DELETE FROM t1 WHERE f_charbig = 'delete me';
61009 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
61010 # check read via f_int1 success: 1
61011 # check read via f_int2 success: 1
61012         
61013 # check multiple-1 success:     1
61014 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
61015         
61016 # check multiple-2 success:     1
61017 INSERT INTO t1 SELECT * FROM t0_template
61018 WHERE MOD(f_int1,3) = 0;
61019         
61020 # check multiple-3 success:     1
61021 UPDATE t1 SET f_int1 = f_int1 + @max_row
61022 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
61023 AND @max_row_div2 + @max_row_div4;
61024         
61025 # check multiple-4 success:     1
61026 DELETE FROM t1
61027 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
61028 AND @max_row_div2 + @max_row_div4 + @max_row;
61029         
61030 # check multiple-5 success:     1
61031 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
61032 INSERT INTO t1
61033 SET f_int1 = @cur_value , f_int2 = @cur_value,
61034 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
61035 f_charbig = '#SINGLE#';
61036         
61037 # check single-1 success:       1
61038 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
61039 INSERT INTO t1
61040 SET f_int1 = @cur_value , f_int2 = @cur_value,
61041 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
61042 f_charbig = '#SINGLE#';
61043         
61044 # check single-2 success:       1
61045 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
61046 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
61047 UPDATE t1 SET f_int1 = @cur_value2
61048 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
61049         
61050 # check single-3 success:       1
61051 SET @cur_value1= -1;
61052 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
61053 UPDATE t1 SET f_int1 = @cur_value1
61054 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
61055         
61056 # check single-4 success:       1
61057 SELECT MAX(f_int1) INTO @cur_value FROM t1;
61058 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
61059         
61060 # check single-5 success:       1
61061 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
61062         
61063 # check single-6 success:       1
61064 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
61065 ERROR HY000: Table has no partition for value 2147483647
61066 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
61067 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
61068 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
61069 f_charbig = '#NULL#';
61070 INSERT INTO t1
61071 SET f_int1 = NULL , f_int2 = -@max_row,
61072 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
61073 f_charbig = '#NULL#';
61074 # check null success:    1
61075         
61076 # check null-1 success:         1
61077 UPDATE t1 SET f_int1 = -@max_row
61078 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
61079 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
61080         
61081 # check null-2 success:         1
61082 UPDATE t1 SET f_int1 = NULL
61083 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
61084 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
61085         
61086 # check null-3 success:         1
61087 DELETE FROM t1
61088 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
61089 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
61090         
61091 # check null-4 success:         1
61092 DELETE FROM t1
61093 WHERE f_int1 = 0 AND f_int2 = 0
61094 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
61095 AND f_charbig = '#NULL#';
61096 SET AUTOCOMMIT= 0;
61097 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
61098 SELECT f_int1, f_int1, '', '', 'was inserted'
61099 FROM t0_template source_tab
61100 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
61101         
61102 # check transactions-1 success:         1
61103 COMMIT WORK;
61104         
61105 # check transactions-2 success:         1
61106 ROLLBACK WORK;
61107         
61108 # check transactions-3 success:         1
61109 DELETE FROM t1 WHERE f_charbig = 'was inserted';
61110 COMMIT WORK;
61111 ROLLBACK WORK;
61112         
61113 # check transactions-4 success:         1
61114 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
61115 SELECT f_int1, f_int1, '', '', 'was inserted'
61116 FROM t0_template source_tab
61117 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
61118         
61119 # check transactions-5 success:         1
61120 ROLLBACK WORK;
61121 Warnings:
61122 Warning 1196    Some non-transactional changed tables couldn't be rolled back
61123         
61124 # check transactions-6 success:         1
61125 # INFO: Storage engine used for t1 seems to be not transactional.
61126 COMMIT;
61127         
61128 # check transactions-7 success:         1
61129 DELETE FROM t1 WHERE f_charbig = 'was inserted';
61130 COMMIT WORK;
61131 SET @@session.sql_mode = 'traditional';
61132 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
61133 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
61134 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
61135 '', '', 'was inserted' FROM t0_template
61136 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
61137 ERROR 22012: Division by 0
61138 COMMIT;
61139         
61140 # check transactions-8 success:         1
61141 # INFO: Storage engine used for t1 seems to be unable to revert
61142 #       changes made by the failing statement.
61143 SET @@session.sql_mode = '';
61144 SET AUTOCOMMIT= 1;
61145 DELETE FROM t1 WHERE f_charbig = 'was inserted';
61146 COMMIT WORK;
61147 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
61148         
61149 # check special-1 success:      1
61150 UPDATE t1 SET f_charbig = '';
61151         
61152 # check special-2 success:      1
61153 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
61154 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
61155 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
61156 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61157 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61158 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61159 'just inserted' FROM t0_template
61160 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61161 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
61162 BEGIN
61163 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61164 f_charbig = 'updated by trigger'
61165       WHERE f_int1 = new.f_int1;
61166 END|
61167 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61168 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
61169 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61170         
61171 # check trigger-1 success:      1
61172 DROP TRIGGER trg_1;
61173 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61174 f_int2 = CAST(f_char1 AS SIGNED INT),
61175 f_charbig = 'just inserted'
61176    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61177 DELETE FROM t0_aux
61178 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61179 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61180 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61181 'just inserted' FROM t0_template
61182 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61183 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
61184 BEGIN
61185 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61186 f_charbig = 'updated by trigger'
61187       WHERE f_int1 = new.f_int1;
61188 END|
61189 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61190 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
61191 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61192         
61193 # check trigger-2 success:      1
61194 DROP TRIGGER trg_1;
61195 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61196 f_int2 = CAST(f_char1 AS SIGNED INT),
61197 f_charbig = 'just inserted'
61198    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61199 DELETE FROM t0_aux
61200 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61201 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61202 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61203 'just inserted' FROM t0_template
61204 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61205 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
61206 BEGIN
61207 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61208 f_charbig = 'updated by trigger'
61209       WHERE f_int1 = new.f_int1;
61210 END|
61211 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
61212 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
61213         
61214 # check trigger-3 success:      1
61215 DROP TRIGGER trg_1;
61216 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61217 f_int2 = CAST(f_char1 AS SIGNED INT),
61218 f_charbig = 'just inserted'
61219    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61220 DELETE FROM t0_aux
61221 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61222 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61223 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61224 'just inserted' FROM t0_template
61225 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61226 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
61227 BEGIN
61228 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61229 f_charbig = 'updated by trigger'
61230       WHERE f_int1 = - old.f_int1;
61231 END|
61232 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
61233 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
61234         
61235 # check trigger-4 success:      1
61236 DROP TRIGGER trg_1;
61237 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61238 f_int2 = CAST(f_char1 AS SIGNED INT),
61239 f_charbig = 'just inserted'
61240    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61241 DELETE FROM t0_aux
61242 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61243 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61244 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61245 'just inserted' FROM t0_template
61246 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61247 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
61248 BEGIN
61249 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61250 f_charbig = 'updated by trigger'
61251       WHERE f_int1 = new.f_int1;
61252 END|
61253 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
61254 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
61255         
61256 # check trigger-5 success:      1
61257 DROP TRIGGER trg_1;
61258 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61259 f_int2 = CAST(f_char1 AS SIGNED INT),
61260 f_charbig = 'just inserted'
61261    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61262 DELETE FROM t0_aux
61263 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61264 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61265 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61266 'just inserted' FROM t0_template
61267 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61268 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
61269 BEGIN
61270 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61271 f_charbig = 'updated by trigger'
61272       WHERE f_int1 = - old.f_int1;
61273 END|
61274 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
61275 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
61276         
61277 # check trigger-6 success:      1
61278 DROP TRIGGER trg_1;
61279 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61280 f_int2 = CAST(f_char1 AS SIGNED INT),
61281 f_charbig = 'just inserted'
61282    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61283 DELETE FROM t0_aux
61284 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61285 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61286 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61287 'just inserted' FROM t0_template
61288 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61289 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
61290 BEGIN
61291 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61292 f_charbig = 'updated by trigger'
61293       WHERE f_int1 = - old.f_int1;
61294 END|
61295 DELETE FROM t0_aux
61296 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
61297         
61298 # check trigger-7 success:      1
61299 DROP TRIGGER trg_1;
61300 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61301 f_int2 = CAST(f_char1 AS SIGNED INT),
61302 f_charbig = 'just inserted'
61303    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61304 DELETE FROM t0_aux
61305 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61306 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61307 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61308 'just inserted' FROM t0_template
61309 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61310 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
61311 BEGIN
61312 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61313 f_charbig = 'updated by trigger'
61314       WHERE f_int1 = - old.f_int1;
61315 END|
61316 DELETE FROM t0_aux
61317 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
61318         
61319 # check trigger-8 success:      1
61320 DROP TRIGGER trg_1;
61321 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61322 f_int2 = CAST(f_char1 AS SIGNED INT),
61323 f_charbig = 'just inserted'
61324    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61325 DELETE FROM t0_aux
61326 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61327 DELETE FROM t1
61328 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61329 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
61330 BEGIN
61331 SET new.f_int1 = old.f_int1 + @max_row,
61332 new.f_int2 = old.f_int2 - @max_row,
61333 new.f_charbig = '####updated per update trigger####';
61334 END|
61335 UPDATE t1
61336 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
61337 f_charbig = '####updated per update statement itself####';
61338         
61339 # check trigger-9 success:      1
61340 DROP TRIGGER trg_2;
61341 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61342 f_int2 = CAST(f_char1 AS SIGNED INT),
61343 f_charbig = CONCAT('===',f_char1,'===');
61344 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
61345 BEGIN
61346 SET new.f_int1 = new.f_int1 + @max_row,
61347 new.f_int2 = new.f_int2 - @max_row,
61348 new.f_charbig = '####updated per update trigger####';
61349 END|
61350 UPDATE t1
61351 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
61352 f_charbig = '####updated per update statement itself####';
61353         
61354 # check trigger-10 success:     1
61355 DROP TRIGGER trg_2;
61356 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61357 f_int2 = CAST(f_char1 AS SIGNED INT),
61358 f_charbig = CONCAT('===',f_char1,'===');
61359 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
61360 BEGIN
61361 SET new.f_int1 = @my_max1 + @counter,
61362 new.f_int2 = @my_min2 - @counter,
61363 new.f_charbig = '####updated per insert trigger####';
61364 SET @counter = @counter + 1;
61365 END|
61366 SET @counter = 1;
61367 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
61368 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
61369 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
61370 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
61371 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
61372 ORDER BY f_int1;
61373 DROP TRIGGER trg_3;
61374         
61375 # check trigger-11 success:     1
61376 DELETE FROM t1
61377 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
61378 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
61379 AND f_charbig = '####updated per insert trigger####';
61380 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
61381 BEGIN
61382 SET new.f_int1 = @my_max1 + @counter,
61383 new.f_int2 = @my_min2 - @counter,
61384 new.f_charbig = '####updated per insert trigger####';
61385 SET @counter = @counter + 1;
61386 END|
61387 SET @counter = 1;
61388 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
61389 INSERT INTO t1 (f_char1, f_char2, f_charbig)
61390 SELECT CAST(f_int1 AS CHAR),
61391 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
61392 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
61393 ORDER BY f_int1;
61394 DROP TRIGGER trg_3;
61395         
61396 # check trigger-12 success:     1
61397 DELETE FROM t1
61398 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
61399 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
61400 AND f_charbig = '####updated per insert trigger####';
61401 ANALYZE  TABLE t1;
61402 Table   Op      Msg_type        Msg_text
61403 test.t1 analyze status  OK
61404 CHECK    TABLE t1 EXTENDED;
61405 Table   Op      Msg_type        Msg_text
61406 test.t1 check   status  OK
61407 CHECKSUM TABLE t1 EXTENDED;
61408 Table   Checksum
61409 test.t1 <some_value>
61410 OPTIMIZE TABLE t1;
61411 Table   Op      Msg_type        Msg_text
61412 test.t1 optimize        status  OK
61413 # check layout success:    1
61414 REPAIR   TABLE t1 EXTENDED;
61415 Table   Op      Msg_type        Msg_text
61416 test.t1 repair  status  OK
61417 # check layout success:    1
61418 TRUNCATE t1;
61419         
61420 # check TRUNCATE success:       1
61421 # check layout success:    1
61422 # End usability test (inc/partition_check.inc)
61423 DROP TABLE t1;
61424 CREATE TABLE t1 (
61425 f_int1 INTEGER,
61426 f_int2 INTEGER,
61427 f_char1 CHAR(20),
61428 f_char2 CHAR(20),
61429 f_charbig VARCHAR(1000)
61432 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
61433 (PARTITION part_1 VALUES IN (0)
61434 (SUBPARTITION sp11, SUBPARTITION sp12),
61435 PARTITION part_2 VALUES IN (1)
61436 (SUBPARTITION sp21, SUBPARTITION sp22),
61437 PARTITION part_3 VALUES IN (2)
61438 (SUBPARTITION sp31, SUBPARTITION sp32),
61439 PARTITION part_4 VALUES IN (NULL)
61440 (SUBPARTITION sp41, SUBPARTITION sp42));
61441 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
61442 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
61443 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
61444 ALTER TABLE t1 REBUILD PARTITION part_1;
61445 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
61446 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
61447 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
61448 # Start usability test (inc/partition_check.inc)
61449 create_command
61450 SHOW CREATE TABLE t1;
61451 Table   Create Table
61452 t1      CREATE TABLE `t1` (
61453   `f_int1` int(11) DEFAULT NULL,
61454   `f_int2` int(11) DEFAULT NULL,
61455   `f_char1` char(20) DEFAULT NULL,
61456   `f_char2` char(20) DEFAULT NULL,
61457   `f_charbig` varchar(1000) DEFAULT NULL
61458 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
61459 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
61460 SUBPARTITION BY HASH (f_int1 + 1)
61461 (PARTITION part_1 VALUES IN (0)
61462  (SUBPARTITION sp11 ENGINE = MyISAM,
61463   SUBPARTITION sp12 ENGINE = MyISAM),
61464  PARTITION part_2 VALUES IN (1)
61465  (SUBPARTITION sp21 ENGINE = MyISAM,
61466   SUBPARTITION sp22 ENGINE = MyISAM),
61467  PARTITION part_3 VALUES IN (2)
61468  (SUBPARTITION sp31 ENGINE = MyISAM,
61469   SUBPARTITION sp32 ENGINE = MyISAM),
61470  PARTITION part_4 VALUES IN (NULL)
61471  (SUBPARTITION sp41 ENGINE = MyISAM,
61472   SUBPARTITION sp42 ENGINE = MyISAM)) */
61474 unified filelist
61475 t1#P#part_1#SP#sp11.MYD
61476 t1#P#part_1#SP#sp11.MYI
61477 t1#P#part_1#SP#sp12.MYD
61478 t1#P#part_1#SP#sp12.MYI
61479 t1#P#part_2#SP#sp21.MYD
61480 t1#P#part_2#SP#sp21.MYI
61481 t1#P#part_2#SP#sp22.MYD
61482 t1#P#part_2#SP#sp22.MYI
61483 t1#P#part_3#SP#sp31.MYD
61484 t1#P#part_3#SP#sp31.MYI
61485 t1#P#part_3#SP#sp32.MYD
61486 t1#P#part_3#SP#sp32.MYI
61487 t1#P#part_4#SP#sp41.MYD
61488 t1#P#part_4#SP#sp41.MYI
61489 t1#P#part_4#SP#sp42.MYD
61490 t1#P#part_4#SP#sp42.MYI
61491 t1.frm
61492 t1.par
61494 # check prerequisites-1 success:    1
61495 # check COUNT(*) success:    1
61496 # check MIN/MAX(f_int1) success:    1
61497 # check MIN/MAX(f_int2) success:    1
61498 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
61499 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
61500 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
61501 WHERE f_int1 IN (2,3);
61502 # check prerequisites-3 success:    1
61503 DELETE FROM t1 WHERE f_charbig = 'delete me';
61504 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
61505 # check read via f_int1 success: 1
61506 # check read via f_int2 success: 1
61507         
61508 # check multiple-1 success:     1
61509 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
61510         
61511 # check multiple-2 success:     1
61512 INSERT INTO t1 SELECT * FROM t0_template
61513 WHERE MOD(f_int1,3) = 0;
61514         
61515 # check multiple-3 success:     1
61516 UPDATE t1 SET f_int1 = f_int1 + @max_row
61517 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
61518 AND @max_row_div2 + @max_row_div4;
61519         
61520 # check multiple-4 success:     1
61521 DELETE FROM t1
61522 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
61523 AND @max_row_div2 + @max_row_div4 + @max_row;
61524         
61525 # check multiple-5 success:     1
61526 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
61527 INSERT INTO t1
61528 SET f_int1 = @cur_value , f_int2 = @cur_value,
61529 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
61530 f_charbig = '#SINGLE#';
61531         
61532 # check single-1 success:       1
61533 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
61534 INSERT INTO t1
61535 SET f_int1 = @cur_value , f_int2 = @cur_value,
61536 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
61537 f_charbig = '#SINGLE#';
61538         
61539 # check single-2 success:       1
61540 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
61541 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
61542 UPDATE t1 SET f_int1 = @cur_value2
61543 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
61544         
61545 # check single-3 success:       1
61546 SET @cur_value1= -1;
61547 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
61548 UPDATE t1 SET f_int1 = @cur_value1
61549 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
61550         
61551 # check single-4 success:       1
61552 SELECT MAX(f_int1) INTO @cur_value FROM t1;
61553 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
61554         
61555 # check single-5 success:       1
61556 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
61557         
61558 # check single-6 success:       1
61559 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
61560         
61561 # check single-7 success:       1
61562 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
61563 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
61564 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
61565 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
61566 f_charbig = '#NULL#';
61567 INSERT INTO t1
61568 SET f_int1 = NULL , f_int2 = -@max_row,
61569 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
61570 f_charbig = '#NULL#';
61571 # check null success:    1
61572         
61573 # check null-1 success:         1
61574 UPDATE t1 SET f_int1 = -@max_row
61575 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
61576 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
61577         
61578 # check null-2 success:         1
61579 UPDATE t1 SET f_int1 = NULL
61580 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
61581 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
61582         
61583 # check null-3 success:         1
61584 DELETE FROM t1
61585 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
61586 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
61587         
61588 # check null-4 success:         1
61589 DELETE FROM t1
61590 WHERE f_int1 = 0 AND f_int2 = 0
61591 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
61592 AND f_charbig = '#NULL#';
61593 SET AUTOCOMMIT= 0;
61594 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
61595 SELECT f_int1, f_int1, '', '', 'was inserted'
61596 FROM t0_template source_tab
61597 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
61598         
61599 # check transactions-1 success:         1
61600 COMMIT WORK;
61601         
61602 # check transactions-2 success:         1
61603 ROLLBACK WORK;
61604         
61605 # check transactions-3 success:         1
61606 DELETE FROM t1 WHERE f_charbig = 'was inserted';
61607 COMMIT WORK;
61608 ROLLBACK WORK;
61609         
61610 # check transactions-4 success:         1
61611 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
61612 SELECT f_int1, f_int1, '', '', 'was inserted'
61613 FROM t0_template source_tab
61614 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
61615         
61616 # check transactions-5 success:         1
61617 ROLLBACK WORK;
61618 Warnings:
61619 Warning 1196    Some non-transactional changed tables couldn't be rolled back
61620         
61621 # check transactions-6 success:         1
61622 # INFO: Storage engine used for t1 seems to be not transactional.
61623 COMMIT;
61624         
61625 # check transactions-7 success:         1
61626 DELETE FROM t1 WHERE f_charbig = 'was inserted';
61627 COMMIT WORK;
61628 SET @@session.sql_mode = 'traditional';
61629 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
61630 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
61631 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
61632 '', '', 'was inserted' FROM t0_template
61633 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
61634 ERROR 22012: Division by 0
61635 COMMIT;
61636         
61637 # check transactions-8 success:         1
61638 # INFO: Storage engine used for t1 seems to be unable to revert
61639 #       changes made by the failing statement.
61640 SET @@session.sql_mode = '';
61641 SET AUTOCOMMIT= 1;
61642 DELETE FROM t1 WHERE f_charbig = 'was inserted';
61643 COMMIT WORK;
61644 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
61645         
61646 # check special-1 success:      1
61647 UPDATE t1 SET f_charbig = '';
61648         
61649 # check special-2 success:      1
61650 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
61651 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
61652 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
61653 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61654 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61655 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61656 'just inserted' FROM t0_template
61657 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61658 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
61659 BEGIN
61660 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61661 f_charbig = 'updated by trigger'
61662       WHERE f_int1 = new.f_int1;
61663 END|
61664 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61665 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
61666 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61667         
61668 # check trigger-1 success:      1
61669 DROP TRIGGER trg_1;
61670 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61671 f_int2 = CAST(f_char1 AS SIGNED INT),
61672 f_charbig = 'just inserted'
61673    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61674 DELETE FROM t0_aux
61675 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61676 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61677 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61678 'just inserted' FROM t0_template
61679 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61680 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
61681 BEGIN
61682 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61683 f_charbig = 'updated by trigger'
61684       WHERE f_int1 = new.f_int1;
61685 END|
61686 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61687 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
61688 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61689         
61690 # check trigger-2 success:      1
61691 DROP TRIGGER trg_1;
61692 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61693 f_int2 = CAST(f_char1 AS SIGNED INT),
61694 f_charbig = 'just inserted'
61695    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61696 DELETE FROM t0_aux
61697 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61698 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61699 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61700 'just inserted' FROM t0_template
61701 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61702 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
61703 BEGIN
61704 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61705 f_charbig = 'updated by trigger'
61706       WHERE f_int1 = new.f_int1;
61707 END|
61708 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
61709 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
61710         
61711 # check trigger-3 success:      1
61712 DROP TRIGGER trg_1;
61713 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61714 f_int2 = CAST(f_char1 AS SIGNED INT),
61715 f_charbig = 'just inserted'
61716    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61717 DELETE FROM t0_aux
61718 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61719 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61720 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61721 'just inserted' FROM t0_template
61722 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61723 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
61724 BEGIN
61725 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61726 f_charbig = 'updated by trigger'
61727       WHERE f_int1 = - old.f_int1;
61728 END|
61729 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
61730 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
61731         
61732 # check trigger-4 success:      1
61733 DROP TRIGGER trg_1;
61734 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61735 f_int2 = CAST(f_char1 AS SIGNED INT),
61736 f_charbig = 'just inserted'
61737    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61738 DELETE FROM t0_aux
61739 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61740 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61741 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61742 'just inserted' FROM t0_template
61743 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61744 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
61745 BEGIN
61746 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61747 f_charbig = 'updated by trigger'
61748       WHERE f_int1 = new.f_int1;
61749 END|
61750 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
61751 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
61752         
61753 # check trigger-5 success:      1
61754 DROP TRIGGER trg_1;
61755 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61756 f_int2 = CAST(f_char1 AS SIGNED INT),
61757 f_charbig = 'just inserted'
61758    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61759 DELETE FROM t0_aux
61760 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61761 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61762 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61763 'just inserted' FROM t0_template
61764 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61765 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
61766 BEGIN
61767 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61768 f_charbig = 'updated by trigger'
61769       WHERE f_int1 = - old.f_int1;
61770 END|
61771 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
61772 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
61773         
61774 # check trigger-6 success:      1
61775 DROP TRIGGER trg_1;
61776 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61777 f_int2 = CAST(f_char1 AS SIGNED INT),
61778 f_charbig = 'just inserted'
61779    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61780 DELETE FROM t0_aux
61781 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61782 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61783 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61784 'just inserted' FROM t0_template
61785 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61786 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
61787 BEGIN
61788 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61789 f_charbig = 'updated by trigger'
61790       WHERE f_int1 = - old.f_int1;
61791 END|
61792 DELETE FROM t0_aux
61793 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
61794         
61795 # check trigger-7 success:      1
61796 DROP TRIGGER trg_1;
61797 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61798 f_int2 = CAST(f_char1 AS SIGNED INT),
61799 f_charbig = 'just inserted'
61800    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61801 DELETE FROM t0_aux
61802 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61803 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
61804 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
61805 'just inserted' FROM t0_template
61806 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61807 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
61808 BEGIN
61809 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
61810 f_charbig = 'updated by trigger'
61811       WHERE f_int1 = - old.f_int1;
61812 END|
61813 DELETE FROM t0_aux
61814 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
61815         
61816 # check trigger-8 success:      1
61817 DROP TRIGGER trg_1;
61818 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61819 f_int2 = CAST(f_char1 AS SIGNED INT),
61820 f_charbig = 'just inserted'
61821    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
61822 DELETE FROM t0_aux
61823 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61824 DELETE FROM t1
61825 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
61826 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
61827 BEGIN
61828 SET new.f_int1 = old.f_int1 + @max_row,
61829 new.f_int2 = old.f_int2 - @max_row,
61830 new.f_charbig = '####updated per update trigger####';
61831 END|
61832 UPDATE t1
61833 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
61834 f_charbig = '####updated per update statement itself####';
61835         
61836 # check trigger-9 success:      1
61837 DROP TRIGGER trg_2;
61838 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61839 f_int2 = CAST(f_char1 AS SIGNED INT),
61840 f_charbig = CONCAT('===',f_char1,'===');
61841 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
61842 BEGIN
61843 SET new.f_int1 = new.f_int1 + @max_row,
61844 new.f_int2 = new.f_int2 - @max_row,
61845 new.f_charbig = '####updated per update trigger####';
61846 END|
61847 UPDATE t1
61848 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
61849 f_charbig = '####updated per update statement itself####';
61850         
61851 # check trigger-10 success:     1
61852 DROP TRIGGER trg_2;
61853 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
61854 f_int2 = CAST(f_char1 AS SIGNED INT),
61855 f_charbig = CONCAT('===',f_char1,'===');
61856 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
61857 BEGIN
61858 SET new.f_int1 = @my_max1 + @counter,
61859 new.f_int2 = @my_min2 - @counter,
61860 new.f_charbig = '####updated per insert trigger####';
61861 SET @counter = @counter + 1;
61862 END|
61863 SET @counter = 1;
61864 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
61865 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
61866 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
61867 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
61868 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
61869 ORDER BY f_int1;
61870 DROP TRIGGER trg_3;
61871         
61872 # check trigger-11 success:     1
61873 DELETE FROM t1
61874 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
61875 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
61876 AND f_charbig = '####updated per insert trigger####';
61877 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
61878 BEGIN
61879 SET new.f_int1 = @my_max1 + @counter,
61880 new.f_int2 = @my_min2 - @counter,
61881 new.f_charbig = '####updated per insert trigger####';
61882 SET @counter = @counter + 1;
61883 END|
61884 SET @counter = 1;
61885 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
61886 INSERT INTO t1 (f_char1, f_char2, f_charbig)
61887 SELECT CAST(f_int1 AS CHAR),
61888 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
61889 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
61890 ORDER BY f_int1;
61891 DROP TRIGGER trg_3;
61892         
61893 # check trigger-12 success:     1
61894 DELETE FROM t1
61895 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
61896 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
61897 AND f_charbig = '####updated per insert trigger####';
61898 ANALYZE  TABLE t1;
61899 Table   Op      Msg_type        Msg_text
61900 test.t1 analyze status  OK
61901 CHECK    TABLE t1 EXTENDED;
61902 Table   Op      Msg_type        Msg_text
61903 test.t1 check   status  OK
61904 CHECKSUM TABLE t1 EXTENDED;
61905 Table   Checksum
61906 test.t1 <some_value>
61907 OPTIMIZE TABLE t1;
61908 Table   Op      Msg_type        Msg_text
61909 test.t1 optimize        status  OK
61910 # check layout success:    1
61911 REPAIR   TABLE t1 EXTENDED;
61912 Table   Op      Msg_type        Msg_text
61913 test.t1 repair  status  OK
61914 # check layout success:    1
61915 TRUNCATE t1;
61916         
61917 # check TRUNCATE success:       1
61918 # check layout success:    1
61919 # End usability test (inc/partition_check.inc)
61920 DROP TABLE t1;
61921 CREATE TABLE t1 (
61922 f_int1 INTEGER,
61923 f_int2 INTEGER,
61924 f_char1 CHAR(20),
61925 f_char2 CHAR(20),
61926 f_charbig VARCHAR(1000)
61929 PARTITION BY LIST(ABS(MOD(f_int1,2)))
61930 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
61931 (PARTITION part_1 VALUES IN (0),
61932  PARTITION part_2 VALUES IN (1),
61933  PARTITION part_3 VALUES IN (NULL));
61934 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
61935 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
61936 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
61937 ALTER TABLE t1 REBUILD PARTITION part_1;
61938 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
61939 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
61940 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
61941 # Start usability test (inc/partition_check.inc)
61942 create_command
61943 SHOW CREATE TABLE t1;
61944 Table   Create Table
61945 t1      CREATE TABLE `t1` (
61946   `f_int1` int(11) DEFAULT NULL,
61947   `f_int2` int(11) DEFAULT NULL,
61948   `f_char1` char(20) DEFAULT NULL,
61949   `f_char2` char(20) DEFAULT NULL,
61950   `f_charbig` varchar(1000) DEFAULT NULL
61951 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
61952 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
61953 SUBPARTITION BY KEY (f_int1)
61954 SUBPARTITIONS 3
61955 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
61956  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
61957  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
61959 unified filelist
61960 t1#P#part_1#SP#part_1sp0.MYD
61961 t1#P#part_1#SP#part_1sp0.MYI
61962 t1#P#part_1#SP#part_1sp1.MYD
61963 t1#P#part_1#SP#part_1sp1.MYI
61964 t1#P#part_1#SP#part_1sp2.MYD
61965 t1#P#part_1#SP#part_1sp2.MYI
61966 t1#P#part_2#SP#part_2sp0.MYD
61967 t1#P#part_2#SP#part_2sp0.MYI
61968 t1#P#part_2#SP#part_2sp1.MYD
61969 t1#P#part_2#SP#part_2sp1.MYI
61970 t1#P#part_2#SP#part_2sp2.MYD
61971 t1#P#part_2#SP#part_2sp2.MYI
61972 t1#P#part_3#SP#part_3sp0.MYD
61973 t1#P#part_3#SP#part_3sp0.MYI
61974 t1#P#part_3#SP#part_3sp1.MYD
61975 t1#P#part_3#SP#part_3sp1.MYI
61976 t1#P#part_3#SP#part_3sp2.MYD
61977 t1#P#part_3#SP#part_3sp2.MYI
61978 t1.frm
61979 t1.par
61981 # check prerequisites-1 success:    1
61982 # check COUNT(*) success:    1
61983 # check MIN/MAX(f_int1) success:    1
61984 # check MIN/MAX(f_int2) success:    1
61985 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
61986 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
61987 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
61988 WHERE f_int1 IN (2,3);
61989 # check prerequisites-3 success:    1
61990 DELETE FROM t1 WHERE f_charbig = 'delete me';
61991 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
61992 # check read via f_int1 success: 1
61993 # check read via f_int2 success: 1
61994         
61995 # check multiple-1 success:     1
61996 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
61997         
61998 # check multiple-2 success:     1
61999 INSERT INTO t1 SELECT * FROM t0_template
62000 WHERE MOD(f_int1,3) = 0;
62001         
62002 # check multiple-3 success:     1
62003 UPDATE t1 SET f_int1 = f_int1 + @max_row
62004 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
62005 AND @max_row_div2 + @max_row_div4;
62006         
62007 # check multiple-4 success:     1
62008 DELETE FROM t1
62009 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
62010 AND @max_row_div2 + @max_row_div4 + @max_row;
62011         
62012 # check multiple-5 success:     1
62013 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
62014 INSERT INTO t1
62015 SET f_int1 = @cur_value , f_int2 = @cur_value,
62016 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
62017 f_charbig = '#SINGLE#';
62018         
62019 # check single-1 success:       1
62020 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
62021 INSERT INTO t1
62022 SET f_int1 = @cur_value , f_int2 = @cur_value,
62023 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
62024 f_charbig = '#SINGLE#';
62025         
62026 # check single-2 success:       1
62027 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
62028 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
62029 UPDATE t1 SET f_int1 = @cur_value2
62030 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
62031         
62032 # check single-3 success:       1
62033 SET @cur_value1= -1;
62034 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
62035 UPDATE t1 SET f_int1 = @cur_value1
62036 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
62037         
62038 # check single-4 success:       1
62039 SELECT MAX(f_int1) INTO @cur_value FROM t1;
62040 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
62041         
62042 # check single-5 success:       1
62043 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
62044         
62045 # check single-6 success:       1
62046 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
62047         
62048 # check single-7 success:       1
62049 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
62050 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
62051 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
62052 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
62053 f_charbig = '#NULL#';
62054 INSERT INTO t1
62055 SET f_int1 = NULL , f_int2 = -@max_row,
62056 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
62057 f_charbig = '#NULL#';
62058 # check null success:    1
62059         
62060 # check null-1 success:         1
62061 UPDATE t1 SET f_int1 = -@max_row
62062 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
62063 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
62064         
62065 # check null-2 success:         1
62066 UPDATE t1 SET f_int1 = NULL
62067 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
62068 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
62069         
62070 # check null-3 success:         1
62071 DELETE FROM t1
62072 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
62073 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
62074         
62075 # check null-4 success:         1
62076 DELETE FROM t1
62077 WHERE f_int1 = 0 AND f_int2 = 0
62078 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
62079 AND f_charbig = '#NULL#';
62080 SET AUTOCOMMIT= 0;
62081 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
62082 SELECT f_int1, f_int1, '', '', 'was inserted'
62083 FROM t0_template source_tab
62084 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
62085         
62086 # check transactions-1 success:         1
62087 COMMIT WORK;
62088         
62089 # check transactions-2 success:         1
62090 ROLLBACK WORK;
62091         
62092 # check transactions-3 success:         1
62093 DELETE FROM t1 WHERE f_charbig = 'was inserted';
62094 COMMIT WORK;
62095 ROLLBACK WORK;
62096         
62097 # check transactions-4 success:         1
62098 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
62099 SELECT f_int1, f_int1, '', '', 'was inserted'
62100 FROM t0_template source_tab
62101 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
62102         
62103 # check transactions-5 success:         1
62104 ROLLBACK WORK;
62105 Warnings:
62106 Warning 1196    Some non-transactional changed tables couldn't be rolled back
62107         
62108 # check transactions-6 success:         1
62109 # INFO: Storage engine used for t1 seems to be not transactional.
62110 COMMIT;
62111         
62112 # check transactions-7 success:         1
62113 DELETE FROM t1 WHERE f_charbig = 'was inserted';
62114 COMMIT WORK;
62115 SET @@session.sql_mode = 'traditional';
62116 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
62117 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
62118 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
62119 '', '', 'was inserted' FROM t0_template
62120 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
62121 ERROR 22012: Division by 0
62122 COMMIT;
62123         
62124 # check transactions-8 success:         1
62125 # INFO: Storage engine used for t1 seems to be unable to revert
62126 #       changes made by the failing statement.
62127 SET @@session.sql_mode = '';
62128 SET AUTOCOMMIT= 1;
62129 DELETE FROM t1 WHERE f_charbig = 'was inserted';
62130 COMMIT WORK;
62131 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
62132         
62133 # check special-1 success:      1
62134 UPDATE t1 SET f_charbig = '';
62135         
62136 # check special-2 success:      1
62137 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
62138 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
62139 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
62140 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62141 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62142 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62143 'just inserted' FROM t0_template
62144 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62145 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
62146 BEGIN
62147 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62148 f_charbig = 'updated by trigger'
62149       WHERE f_int1 = new.f_int1;
62150 END|
62151 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62152 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
62153 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62154         
62155 # check trigger-1 success:      1
62156 DROP TRIGGER trg_1;
62157 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62158 f_int2 = CAST(f_char1 AS SIGNED INT),
62159 f_charbig = 'just inserted'
62160    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62161 DELETE FROM t0_aux
62162 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62163 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62164 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62165 'just inserted' FROM t0_template
62166 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62167 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
62168 BEGIN
62169 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62170 f_charbig = 'updated by trigger'
62171       WHERE f_int1 = new.f_int1;
62172 END|
62173 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62174 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
62175 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62176         
62177 # check trigger-2 success:      1
62178 DROP TRIGGER trg_1;
62179 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62180 f_int2 = CAST(f_char1 AS SIGNED INT),
62181 f_charbig = 'just inserted'
62182    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62183 DELETE FROM t0_aux
62184 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62185 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62186 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62187 'just inserted' FROM t0_template
62188 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62189 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
62190 BEGIN
62191 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62192 f_charbig = 'updated by trigger'
62193       WHERE f_int1 = new.f_int1;
62194 END|
62195 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
62196 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
62197         
62198 # check trigger-3 success:      1
62199 DROP TRIGGER trg_1;
62200 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62201 f_int2 = CAST(f_char1 AS SIGNED INT),
62202 f_charbig = 'just inserted'
62203    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62204 DELETE FROM t0_aux
62205 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62206 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62207 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62208 'just inserted' FROM t0_template
62209 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62210 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
62211 BEGIN
62212 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62213 f_charbig = 'updated by trigger'
62214       WHERE f_int1 = - old.f_int1;
62215 END|
62216 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
62217 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
62218         
62219 # check trigger-4 success:      1
62220 DROP TRIGGER trg_1;
62221 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62222 f_int2 = CAST(f_char1 AS SIGNED INT),
62223 f_charbig = 'just inserted'
62224    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62225 DELETE FROM t0_aux
62226 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62227 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62228 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62229 'just inserted' FROM t0_template
62230 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62231 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
62232 BEGIN
62233 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62234 f_charbig = 'updated by trigger'
62235       WHERE f_int1 = new.f_int1;
62236 END|
62237 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
62238 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
62239         
62240 # check trigger-5 success:      1
62241 DROP TRIGGER trg_1;
62242 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62243 f_int2 = CAST(f_char1 AS SIGNED INT),
62244 f_charbig = 'just inserted'
62245    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62246 DELETE FROM t0_aux
62247 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62248 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62249 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62250 'just inserted' FROM t0_template
62251 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62252 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
62253 BEGIN
62254 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62255 f_charbig = 'updated by trigger'
62256       WHERE f_int1 = - old.f_int1;
62257 END|
62258 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
62259 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
62260         
62261 # check trigger-6 success:      1
62262 DROP TRIGGER trg_1;
62263 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62264 f_int2 = CAST(f_char1 AS SIGNED INT),
62265 f_charbig = 'just inserted'
62266    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62267 DELETE FROM t0_aux
62268 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62269 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62270 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62271 'just inserted' FROM t0_template
62272 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62273 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
62274 BEGIN
62275 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62276 f_charbig = 'updated by trigger'
62277       WHERE f_int1 = - old.f_int1;
62278 END|
62279 DELETE FROM t0_aux
62280 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
62281         
62282 # check trigger-7 success:      1
62283 DROP TRIGGER trg_1;
62284 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62285 f_int2 = CAST(f_char1 AS SIGNED INT),
62286 f_charbig = 'just inserted'
62287    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62288 DELETE FROM t0_aux
62289 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62290 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62291 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62292 'just inserted' FROM t0_template
62293 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62294 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
62295 BEGIN
62296 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62297 f_charbig = 'updated by trigger'
62298       WHERE f_int1 = - old.f_int1;
62299 END|
62300 DELETE FROM t0_aux
62301 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
62302         
62303 # check trigger-8 success:      1
62304 DROP TRIGGER trg_1;
62305 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62306 f_int2 = CAST(f_char1 AS SIGNED INT),
62307 f_charbig = 'just inserted'
62308    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62309 DELETE FROM t0_aux
62310 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62311 DELETE FROM t1
62312 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62313 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
62314 BEGIN
62315 SET new.f_int1 = old.f_int1 + @max_row,
62316 new.f_int2 = old.f_int2 - @max_row,
62317 new.f_charbig = '####updated per update trigger####';
62318 END|
62319 UPDATE t1
62320 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
62321 f_charbig = '####updated per update statement itself####';
62322         
62323 # check trigger-9 success:      1
62324 DROP TRIGGER trg_2;
62325 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62326 f_int2 = CAST(f_char1 AS SIGNED INT),
62327 f_charbig = CONCAT('===',f_char1,'===');
62328 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
62329 BEGIN
62330 SET new.f_int1 = new.f_int1 + @max_row,
62331 new.f_int2 = new.f_int2 - @max_row,
62332 new.f_charbig = '####updated per update trigger####';
62333 END|
62334 UPDATE t1
62335 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
62336 f_charbig = '####updated per update statement itself####';
62337         
62338 # check trigger-10 success:     1
62339 DROP TRIGGER trg_2;
62340 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62341 f_int2 = CAST(f_char1 AS SIGNED INT),
62342 f_charbig = CONCAT('===',f_char1,'===');
62343 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
62344 BEGIN
62345 SET new.f_int1 = @my_max1 + @counter,
62346 new.f_int2 = @my_min2 - @counter,
62347 new.f_charbig = '####updated per insert trigger####';
62348 SET @counter = @counter + 1;
62349 END|
62350 SET @counter = 1;
62351 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
62352 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
62353 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
62354 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
62355 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
62356 ORDER BY f_int1;
62357 DROP TRIGGER trg_3;
62358         
62359 # check trigger-11 success:     1
62360 DELETE FROM t1
62361 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
62362 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
62363 AND f_charbig = '####updated per insert trigger####';
62364 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
62365 BEGIN
62366 SET new.f_int1 = @my_max1 + @counter,
62367 new.f_int2 = @my_min2 - @counter,
62368 new.f_charbig = '####updated per insert trigger####';
62369 SET @counter = @counter + 1;
62370 END|
62371 SET @counter = 1;
62372 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
62373 INSERT INTO t1 (f_char1, f_char2, f_charbig)
62374 SELECT CAST(f_int1 AS CHAR),
62375 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
62376 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
62377 ORDER BY f_int1;
62378 DROP TRIGGER trg_3;
62379         
62380 # check trigger-12 success:     1
62381 DELETE FROM t1
62382 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
62383 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
62384 AND f_charbig = '####updated per insert trigger####';
62385 ANALYZE  TABLE t1;
62386 Table   Op      Msg_type        Msg_text
62387 test.t1 analyze status  OK
62388 CHECK    TABLE t1 EXTENDED;
62389 Table   Op      Msg_type        Msg_text
62390 test.t1 check   status  OK
62391 CHECKSUM TABLE t1 EXTENDED;
62392 Table   Checksum
62393 test.t1 <some_value>
62394 OPTIMIZE TABLE t1;
62395 Table   Op      Msg_type        Msg_text
62396 test.t1 optimize        status  OK
62397 # check layout success:    1
62398 REPAIR   TABLE t1 EXTENDED;
62399 Table   Op      Msg_type        Msg_text
62400 test.t1 repair  status  OK
62401 # check layout success:    1
62402 TRUNCATE t1;
62403         
62404 # check TRUNCATE success:       1
62405 # check layout success:    1
62406 # End usability test (inc/partition_check.inc)
62407 DROP TABLE t1;
62408 #  4.2 ALTER ... REBUILD PARTITION part_1,part_2;
62409 DROP TABLE IF EXISTS t1;
62410 CREATE TABLE t1 (
62411 f_int1 INTEGER,
62412 f_int2 INTEGER,
62413 f_char1 CHAR(20),
62414 f_char2 CHAR(20),
62415 f_charbig VARCHAR(1000)
62418 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
62419 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
62420 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
62421 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
62422 ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
62423 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
62424 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
62425 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
62426 # Start usability test (inc/partition_check.inc)
62427 create_command
62428 SHOW CREATE TABLE t1;
62429 Table   Create Table
62430 t1      CREATE TABLE `t1` (
62431   `f_int1` int(11) DEFAULT NULL,
62432   `f_int2` int(11) DEFAULT NULL,
62433   `f_char1` char(20) DEFAULT NULL,
62434   `f_char2` char(20) DEFAULT NULL,
62435   `f_charbig` varchar(1000) DEFAULT NULL
62436 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
62437 /*!50100 PARTITION BY HASH (f_int1)
62438 (PARTITION part_1 ENGINE = MyISAM,
62439  PARTITION part_2 ENGINE = MyISAM) */
62441 unified filelist
62442 t1#P#part_1.MYD
62443 t1#P#part_1.MYI
62444 t1#P#part_2.MYD
62445 t1#P#part_2.MYI
62446 t1.frm
62447 t1.par
62449 # check prerequisites-1 success:    1
62450 # check COUNT(*) success:    1
62451 # check MIN/MAX(f_int1) success:    1
62452 # check MIN/MAX(f_int2) success:    1
62453 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
62454 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
62455 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
62456 WHERE f_int1 IN (2,3);
62457 # check prerequisites-3 success:    1
62458 DELETE FROM t1 WHERE f_charbig = 'delete me';
62459 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
62460 # check read via f_int1 success: 1
62461 # check read via f_int2 success: 1
62462         
62463 # check multiple-1 success:     1
62464 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
62465         
62466 # check multiple-2 success:     1
62467 INSERT INTO t1 SELECT * FROM t0_template
62468 WHERE MOD(f_int1,3) = 0;
62469         
62470 # check multiple-3 success:     1
62471 UPDATE t1 SET f_int1 = f_int1 + @max_row
62472 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
62473 AND @max_row_div2 + @max_row_div4;
62474         
62475 # check multiple-4 success:     1
62476 DELETE FROM t1
62477 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
62478 AND @max_row_div2 + @max_row_div4 + @max_row;
62479         
62480 # check multiple-5 success:     1
62481 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
62482 INSERT INTO t1
62483 SET f_int1 = @cur_value , f_int2 = @cur_value,
62484 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
62485 f_charbig = '#SINGLE#';
62486         
62487 # check single-1 success:       1
62488 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
62489 INSERT INTO t1
62490 SET f_int1 = @cur_value , f_int2 = @cur_value,
62491 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
62492 f_charbig = '#SINGLE#';
62493         
62494 # check single-2 success:       1
62495 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
62496 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
62497 UPDATE t1 SET f_int1 = @cur_value2
62498 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
62499         
62500 # check single-3 success:       1
62501 SET @cur_value1= -1;
62502 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
62503 UPDATE t1 SET f_int1 = @cur_value1
62504 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
62505         
62506 # check single-4 success:       1
62507 SELECT MAX(f_int1) INTO @cur_value FROM t1;
62508 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
62509         
62510 # check single-5 success:       1
62511 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
62512         
62513 # check single-6 success:       1
62514 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
62515         
62516 # check single-7 success:       1
62517 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
62518 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
62519 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
62520 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
62521 f_charbig = '#NULL#';
62522 INSERT INTO t1
62523 SET f_int1 = NULL , f_int2 = -@max_row,
62524 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
62525 f_charbig = '#NULL#';
62526 # check null success:    1
62527         
62528 # check null-1 success:         1
62529 UPDATE t1 SET f_int1 = -@max_row
62530 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
62531 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
62532         
62533 # check null-2 success:         1
62534 UPDATE t1 SET f_int1 = NULL
62535 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
62536 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
62537         
62538 # check null-3 success:         1
62539 DELETE FROM t1
62540 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
62541 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
62542         
62543 # check null-4 success:         1
62544 DELETE FROM t1
62545 WHERE f_int1 = 0 AND f_int2 = 0
62546 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
62547 AND f_charbig = '#NULL#';
62548 SET AUTOCOMMIT= 0;
62549 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
62550 SELECT f_int1, f_int1, '', '', 'was inserted'
62551 FROM t0_template source_tab
62552 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
62553         
62554 # check transactions-1 success:         1
62555 COMMIT WORK;
62556         
62557 # check transactions-2 success:         1
62558 ROLLBACK WORK;
62559         
62560 # check transactions-3 success:         1
62561 DELETE FROM t1 WHERE f_charbig = 'was inserted';
62562 COMMIT WORK;
62563 ROLLBACK WORK;
62564         
62565 # check transactions-4 success:         1
62566 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
62567 SELECT f_int1, f_int1, '', '', 'was inserted'
62568 FROM t0_template source_tab
62569 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
62570         
62571 # check transactions-5 success:         1
62572 ROLLBACK WORK;
62573 Warnings:
62574 Warning 1196    Some non-transactional changed tables couldn't be rolled back
62575         
62576 # check transactions-6 success:         1
62577 # INFO: Storage engine used for t1 seems to be not transactional.
62578 COMMIT;
62579         
62580 # check transactions-7 success:         1
62581 DELETE FROM t1 WHERE f_charbig = 'was inserted';
62582 COMMIT WORK;
62583 SET @@session.sql_mode = 'traditional';
62584 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
62585 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
62586 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
62587 '', '', 'was inserted' FROM t0_template
62588 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
62589 ERROR 22012: Division by 0
62590 COMMIT;
62591         
62592 # check transactions-8 success:         1
62593 # INFO: Storage engine used for t1 seems to be unable to revert
62594 #       changes made by the failing statement.
62595 SET @@session.sql_mode = '';
62596 SET AUTOCOMMIT= 1;
62597 DELETE FROM t1 WHERE f_charbig = 'was inserted';
62598 COMMIT WORK;
62599 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
62600         
62601 # check special-1 success:      1
62602 UPDATE t1 SET f_charbig = '';
62603         
62604 # check special-2 success:      1
62605 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
62606 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
62607 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
62608 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62609 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62610 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62611 'just inserted' FROM t0_template
62612 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62613 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
62614 BEGIN
62615 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62616 f_charbig = 'updated by trigger'
62617       WHERE f_int1 = new.f_int1;
62618 END|
62619 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62620 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
62621 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62622         
62623 # check trigger-1 success:      1
62624 DROP TRIGGER trg_1;
62625 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62626 f_int2 = CAST(f_char1 AS SIGNED INT),
62627 f_charbig = 'just inserted'
62628    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62629 DELETE FROM t0_aux
62630 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62631 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62632 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62633 'just inserted' FROM t0_template
62634 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62635 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
62636 BEGIN
62637 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62638 f_charbig = 'updated by trigger'
62639       WHERE f_int1 = new.f_int1;
62640 END|
62641 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62642 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
62643 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62644         
62645 # check trigger-2 success:      1
62646 DROP TRIGGER trg_1;
62647 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62648 f_int2 = CAST(f_char1 AS SIGNED INT),
62649 f_charbig = 'just inserted'
62650    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62651 DELETE FROM t0_aux
62652 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62653 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62654 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62655 'just inserted' FROM t0_template
62656 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62657 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
62658 BEGIN
62659 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62660 f_charbig = 'updated by trigger'
62661       WHERE f_int1 = new.f_int1;
62662 END|
62663 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
62664 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
62665         
62666 # check trigger-3 success:      1
62667 DROP TRIGGER trg_1;
62668 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62669 f_int2 = CAST(f_char1 AS SIGNED INT),
62670 f_charbig = 'just inserted'
62671    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62672 DELETE FROM t0_aux
62673 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62674 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62675 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62676 'just inserted' FROM t0_template
62677 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62678 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
62679 BEGIN
62680 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62681 f_charbig = 'updated by trigger'
62682       WHERE f_int1 = - old.f_int1;
62683 END|
62684 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
62685 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
62686         
62687 # check trigger-4 success:      1
62688 DROP TRIGGER trg_1;
62689 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62690 f_int2 = CAST(f_char1 AS SIGNED INT),
62691 f_charbig = 'just inserted'
62692    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62693 DELETE FROM t0_aux
62694 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62695 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62696 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62697 'just inserted' FROM t0_template
62698 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62699 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
62700 BEGIN
62701 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62702 f_charbig = 'updated by trigger'
62703       WHERE f_int1 = new.f_int1;
62704 END|
62705 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
62706 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
62707         
62708 # check trigger-5 success:      1
62709 DROP TRIGGER trg_1;
62710 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62711 f_int2 = CAST(f_char1 AS SIGNED INT),
62712 f_charbig = 'just inserted'
62713    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62714 DELETE FROM t0_aux
62715 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62716 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62717 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62718 'just inserted' FROM t0_template
62719 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62720 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
62721 BEGIN
62722 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62723 f_charbig = 'updated by trigger'
62724       WHERE f_int1 = - old.f_int1;
62725 END|
62726 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
62727 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
62728         
62729 # check trigger-6 success:      1
62730 DROP TRIGGER trg_1;
62731 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62732 f_int2 = CAST(f_char1 AS SIGNED INT),
62733 f_charbig = 'just inserted'
62734    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62735 DELETE FROM t0_aux
62736 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62737 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62738 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62739 'just inserted' FROM t0_template
62740 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62741 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
62742 BEGIN
62743 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62744 f_charbig = 'updated by trigger'
62745       WHERE f_int1 = - old.f_int1;
62746 END|
62747 DELETE FROM t0_aux
62748 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
62749         
62750 # check trigger-7 success:      1
62751 DROP TRIGGER trg_1;
62752 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62753 f_int2 = CAST(f_char1 AS SIGNED INT),
62754 f_charbig = 'just inserted'
62755    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62756 DELETE FROM t0_aux
62757 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62758 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
62759 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
62760 'just inserted' FROM t0_template
62761 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62762 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
62763 BEGIN
62764 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
62765 f_charbig = 'updated by trigger'
62766       WHERE f_int1 = - old.f_int1;
62767 END|
62768 DELETE FROM t0_aux
62769 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
62770         
62771 # check trigger-8 success:      1
62772 DROP TRIGGER trg_1;
62773 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62774 f_int2 = CAST(f_char1 AS SIGNED INT),
62775 f_charbig = 'just inserted'
62776    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
62777 DELETE FROM t0_aux
62778 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62779 DELETE FROM t1
62780 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
62781 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
62782 BEGIN
62783 SET new.f_int1 = old.f_int1 + @max_row,
62784 new.f_int2 = old.f_int2 - @max_row,
62785 new.f_charbig = '####updated per update trigger####';
62786 END|
62787 UPDATE t1
62788 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
62789 f_charbig = '####updated per update statement itself####';
62790         
62791 # check trigger-9 success:      1
62792 DROP TRIGGER trg_2;
62793 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62794 f_int2 = CAST(f_char1 AS SIGNED INT),
62795 f_charbig = CONCAT('===',f_char1,'===');
62796 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
62797 BEGIN
62798 SET new.f_int1 = new.f_int1 + @max_row,
62799 new.f_int2 = new.f_int2 - @max_row,
62800 new.f_charbig = '####updated per update trigger####';
62801 END|
62802 UPDATE t1
62803 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
62804 f_charbig = '####updated per update statement itself####';
62805         
62806 # check trigger-10 success:     1
62807 DROP TRIGGER trg_2;
62808 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
62809 f_int2 = CAST(f_char1 AS SIGNED INT),
62810 f_charbig = CONCAT('===',f_char1,'===');
62811 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
62812 BEGIN
62813 SET new.f_int1 = @my_max1 + @counter,
62814 new.f_int2 = @my_min2 - @counter,
62815 new.f_charbig = '####updated per insert trigger####';
62816 SET @counter = @counter + 1;
62817 END|
62818 SET @counter = 1;
62819 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
62820 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
62821 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
62822 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
62823 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
62824 ORDER BY f_int1;
62825 DROP TRIGGER trg_3;
62826         
62827 # check trigger-11 success:     1
62828 DELETE FROM t1
62829 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
62830 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
62831 AND f_charbig = '####updated per insert trigger####';
62832 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
62833 BEGIN
62834 SET new.f_int1 = @my_max1 + @counter,
62835 new.f_int2 = @my_min2 - @counter,
62836 new.f_charbig = '####updated per insert trigger####';
62837 SET @counter = @counter + 1;
62838 END|
62839 SET @counter = 1;
62840 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
62841 INSERT INTO t1 (f_char1, f_char2, f_charbig)
62842 SELECT CAST(f_int1 AS CHAR),
62843 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
62844 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
62845 ORDER BY f_int1;
62846 DROP TRIGGER trg_3;
62847         
62848 # check trigger-12 success:     1
62849 DELETE FROM t1
62850 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
62851 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
62852 AND f_charbig = '####updated per insert trigger####';
62853 ANALYZE  TABLE t1;
62854 Table   Op      Msg_type        Msg_text
62855 test.t1 analyze status  OK
62856 CHECK    TABLE t1 EXTENDED;
62857 Table   Op      Msg_type        Msg_text
62858 test.t1 check   status  OK
62859 CHECKSUM TABLE t1 EXTENDED;
62860 Table   Checksum
62861 test.t1 <some_value>
62862 OPTIMIZE TABLE t1;
62863 Table   Op      Msg_type        Msg_text
62864 test.t1 optimize        status  OK
62865 # check layout success:    1
62866 REPAIR   TABLE t1 EXTENDED;
62867 Table   Op      Msg_type        Msg_text
62868 test.t1 repair  status  OK
62869 # check layout success:    1
62870 TRUNCATE t1;
62871         
62872 # check TRUNCATE success:       1
62873 # check layout success:    1
62874 # End usability test (inc/partition_check.inc)
62875 DROP TABLE t1;
62876 CREATE TABLE t1 (
62877 f_int1 INTEGER,
62878 f_int2 INTEGER,
62879 f_char1 CHAR(20),
62880 f_char2 CHAR(20),
62881 f_charbig VARCHAR(1000)
62884 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
62885 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
62886 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
62887 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
62888 ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
62889 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
62890 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
62891 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
62892 # Start usability test (inc/partition_check.inc)
62893 create_command
62894 SHOW CREATE TABLE t1;
62895 Table   Create Table
62896 t1      CREATE TABLE `t1` (
62897   `f_int1` int(11) DEFAULT NULL,
62898   `f_int2` int(11) DEFAULT NULL,
62899   `f_char1` char(20) DEFAULT NULL,
62900   `f_char2` char(20) DEFAULT NULL,
62901   `f_charbig` varchar(1000) DEFAULT NULL
62902 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
62903 /*!50100 PARTITION BY KEY (f_int1)
62904 (PARTITION part_1 ENGINE = MyISAM,
62905  PARTITION part_2 ENGINE = MyISAM,
62906  PARTITION part_3 ENGINE = MyISAM,
62907  PARTITION part_4 ENGINE = MyISAM,
62908  PARTITION part_5 ENGINE = MyISAM) */
62910 unified filelist
62911 t1#P#part_1.MYD
62912 t1#P#part_1.MYI
62913 t1#P#part_2.MYD
62914 t1#P#part_2.MYI
62915 t1#P#part_3.MYD
62916 t1#P#part_3.MYI
62917 t1#P#part_4.MYD
62918 t1#P#part_4.MYI
62919 t1#P#part_5.MYD
62920 t1#P#part_5.MYI
62921 t1.frm
62922 t1.par
62924 # check prerequisites-1 success:    1
62925 # check COUNT(*) success:    1
62926 # check MIN/MAX(f_int1) success:    1
62927 # check MIN/MAX(f_int2) success:    1
62928 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
62929 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
62930 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
62931 WHERE f_int1 IN (2,3);
62932 # check prerequisites-3 success:    1
62933 DELETE FROM t1 WHERE f_charbig = 'delete me';
62934 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
62935 # check read via f_int1 success: 1
62936 # check read via f_int2 success: 1
62937         
62938 # check multiple-1 success:     1
62939 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
62940         
62941 # check multiple-2 success:     1
62942 INSERT INTO t1 SELECT * FROM t0_template
62943 WHERE MOD(f_int1,3) = 0;
62944         
62945 # check multiple-3 success:     1
62946 UPDATE t1 SET f_int1 = f_int1 + @max_row
62947 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
62948 AND @max_row_div2 + @max_row_div4;
62949         
62950 # check multiple-4 success:     1
62951 DELETE FROM t1
62952 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
62953 AND @max_row_div2 + @max_row_div4 + @max_row;
62954         
62955 # check multiple-5 success:     1
62956 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
62957 INSERT INTO t1
62958 SET f_int1 = @cur_value , f_int2 = @cur_value,
62959 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
62960 f_charbig = '#SINGLE#';
62961         
62962 # check single-1 success:       1
62963 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
62964 INSERT INTO t1
62965 SET f_int1 = @cur_value , f_int2 = @cur_value,
62966 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
62967 f_charbig = '#SINGLE#';
62968         
62969 # check single-2 success:       1
62970 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
62971 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
62972 UPDATE t1 SET f_int1 = @cur_value2
62973 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
62974         
62975 # check single-3 success:       1
62976 SET @cur_value1= -1;
62977 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
62978 UPDATE t1 SET f_int1 = @cur_value1
62979 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
62980         
62981 # check single-4 success:       1
62982 SELECT MAX(f_int1) INTO @cur_value FROM t1;
62983 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
62984         
62985 # check single-5 success:       1
62986 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
62987         
62988 # check single-6 success:       1
62989 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
62990         
62991 # check single-7 success:       1
62992 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
62993 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
62994 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
62995 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
62996 f_charbig = '#NULL#';
62997 INSERT INTO t1
62998 SET f_int1 = NULL , f_int2 = -@max_row,
62999 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
63000 f_charbig = '#NULL#';
63001 # check null success:    1
63002         
63003 # check null-1 success:         1
63004 UPDATE t1 SET f_int1 = -@max_row
63005 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
63006 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
63007         
63008 # check null-2 success:         1
63009 UPDATE t1 SET f_int1 = NULL
63010 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
63011 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
63012         
63013 # check null-3 success:         1
63014 DELETE FROM t1
63015 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
63016 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
63017         
63018 # check null-4 success:         1
63019 DELETE FROM t1
63020 WHERE f_int1 = 0 AND f_int2 = 0
63021 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
63022 AND f_charbig = '#NULL#';
63023 SET AUTOCOMMIT= 0;
63024 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
63025 SELECT f_int1, f_int1, '', '', 'was inserted'
63026 FROM t0_template source_tab
63027 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
63028         
63029 # check transactions-1 success:         1
63030 COMMIT WORK;
63031         
63032 # check transactions-2 success:         1
63033 ROLLBACK WORK;
63034         
63035 # check transactions-3 success:         1
63036 DELETE FROM t1 WHERE f_charbig = 'was inserted';
63037 COMMIT WORK;
63038 ROLLBACK WORK;
63039         
63040 # check transactions-4 success:         1
63041 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
63042 SELECT f_int1, f_int1, '', '', 'was inserted'
63043 FROM t0_template source_tab
63044 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
63045         
63046 # check transactions-5 success:         1
63047 ROLLBACK WORK;
63048 Warnings:
63049 Warning 1196    Some non-transactional changed tables couldn't be rolled back
63050         
63051 # check transactions-6 success:         1
63052 # INFO: Storage engine used for t1 seems to be not transactional.
63053 COMMIT;
63054         
63055 # check transactions-7 success:         1
63056 DELETE FROM t1 WHERE f_charbig = 'was inserted';
63057 COMMIT WORK;
63058 SET @@session.sql_mode = 'traditional';
63059 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
63060 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
63061 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
63062 '', '', 'was inserted' FROM t0_template
63063 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
63064 ERROR 22012: Division by 0
63065 COMMIT;
63066         
63067 # check transactions-8 success:         1
63068 # INFO: Storage engine used for t1 seems to be unable to revert
63069 #       changes made by the failing statement.
63070 SET @@session.sql_mode = '';
63071 SET AUTOCOMMIT= 1;
63072 DELETE FROM t1 WHERE f_charbig = 'was inserted';
63073 COMMIT WORK;
63074 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
63075         
63076 # check special-1 success:      1
63077 UPDATE t1 SET f_charbig = '';
63078         
63079 # check special-2 success:      1
63080 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
63081 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
63082 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
63083 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63084 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63085 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63086 'just inserted' FROM t0_template
63087 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63088 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
63089 BEGIN
63090 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63091 f_charbig = 'updated by trigger'
63092       WHERE f_int1 = new.f_int1;
63093 END|
63094 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63095 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
63096 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63097         
63098 # check trigger-1 success:      1
63099 DROP TRIGGER trg_1;
63100 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63101 f_int2 = CAST(f_char1 AS SIGNED INT),
63102 f_charbig = 'just inserted'
63103    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63104 DELETE FROM t0_aux
63105 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63106 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63107 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63108 'just inserted' FROM t0_template
63109 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63110 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
63111 BEGIN
63112 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63113 f_charbig = 'updated by trigger'
63114       WHERE f_int1 = new.f_int1;
63115 END|
63116 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63117 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
63118 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63119         
63120 # check trigger-2 success:      1
63121 DROP TRIGGER trg_1;
63122 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63123 f_int2 = CAST(f_char1 AS SIGNED INT),
63124 f_charbig = 'just inserted'
63125    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63126 DELETE FROM t0_aux
63127 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63128 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63129 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63130 'just inserted' FROM t0_template
63131 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63132 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
63133 BEGIN
63134 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63135 f_charbig = 'updated by trigger'
63136       WHERE f_int1 = new.f_int1;
63137 END|
63138 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
63139 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
63140         
63141 # check trigger-3 success:      1
63142 DROP TRIGGER trg_1;
63143 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63144 f_int2 = CAST(f_char1 AS SIGNED INT),
63145 f_charbig = 'just inserted'
63146    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63147 DELETE FROM t0_aux
63148 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63149 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63150 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63151 'just inserted' FROM t0_template
63152 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63153 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
63154 BEGIN
63155 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63156 f_charbig = 'updated by trigger'
63157       WHERE f_int1 = - old.f_int1;
63158 END|
63159 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
63160 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
63161         
63162 # check trigger-4 success:      1
63163 DROP TRIGGER trg_1;
63164 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63165 f_int2 = CAST(f_char1 AS SIGNED INT),
63166 f_charbig = 'just inserted'
63167    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63168 DELETE FROM t0_aux
63169 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63170 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63171 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63172 'just inserted' FROM t0_template
63173 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63174 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
63175 BEGIN
63176 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63177 f_charbig = 'updated by trigger'
63178       WHERE f_int1 = new.f_int1;
63179 END|
63180 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
63181 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
63182         
63183 # check trigger-5 success:      1
63184 DROP TRIGGER trg_1;
63185 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63186 f_int2 = CAST(f_char1 AS SIGNED INT),
63187 f_charbig = 'just inserted'
63188    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63189 DELETE FROM t0_aux
63190 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63191 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63192 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63193 'just inserted' FROM t0_template
63194 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63195 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
63196 BEGIN
63197 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63198 f_charbig = 'updated by trigger'
63199       WHERE f_int1 = - old.f_int1;
63200 END|
63201 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
63202 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
63203         
63204 # check trigger-6 success:      1
63205 DROP TRIGGER trg_1;
63206 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63207 f_int2 = CAST(f_char1 AS SIGNED INT),
63208 f_charbig = 'just inserted'
63209    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63210 DELETE FROM t0_aux
63211 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63212 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63213 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63214 'just inserted' FROM t0_template
63215 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63216 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
63217 BEGIN
63218 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63219 f_charbig = 'updated by trigger'
63220       WHERE f_int1 = - old.f_int1;
63221 END|
63222 DELETE FROM t0_aux
63223 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
63224         
63225 # check trigger-7 success:      1
63226 DROP TRIGGER trg_1;
63227 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63228 f_int2 = CAST(f_char1 AS SIGNED INT),
63229 f_charbig = 'just inserted'
63230    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63231 DELETE FROM t0_aux
63232 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63233 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63234 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63235 'just inserted' FROM t0_template
63236 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63237 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
63238 BEGIN
63239 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63240 f_charbig = 'updated by trigger'
63241       WHERE f_int1 = - old.f_int1;
63242 END|
63243 DELETE FROM t0_aux
63244 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
63245         
63246 # check trigger-8 success:      1
63247 DROP TRIGGER trg_1;
63248 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63249 f_int2 = CAST(f_char1 AS SIGNED INT),
63250 f_charbig = 'just inserted'
63251    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63252 DELETE FROM t0_aux
63253 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63254 DELETE FROM t1
63255 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63256 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
63257 BEGIN
63258 SET new.f_int1 = old.f_int1 + @max_row,
63259 new.f_int2 = old.f_int2 - @max_row,
63260 new.f_charbig = '####updated per update trigger####';
63261 END|
63262 UPDATE t1
63263 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
63264 f_charbig = '####updated per update statement itself####';
63265         
63266 # check trigger-9 success:      1
63267 DROP TRIGGER trg_2;
63268 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63269 f_int2 = CAST(f_char1 AS SIGNED INT),
63270 f_charbig = CONCAT('===',f_char1,'===');
63271 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
63272 BEGIN
63273 SET new.f_int1 = new.f_int1 + @max_row,
63274 new.f_int2 = new.f_int2 - @max_row,
63275 new.f_charbig = '####updated per update trigger####';
63276 END|
63277 UPDATE t1
63278 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
63279 f_charbig = '####updated per update statement itself####';
63280         
63281 # check trigger-10 success:     1
63282 DROP TRIGGER trg_2;
63283 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63284 f_int2 = CAST(f_char1 AS SIGNED INT),
63285 f_charbig = CONCAT('===',f_char1,'===');
63286 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
63287 BEGIN
63288 SET new.f_int1 = @my_max1 + @counter,
63289 new.f_int2 = @my_min2 - @counter,
63290 new.f_charbig = '####updated per insert trigger####';
63291 SET @counter = @counter + 1;
63292 END|
63293 SET @counter = 1;
63294 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
63295 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
63296 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
63297 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
63298 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
63299 ORDER BY f_int1;
63300 DROP TRIGGER trg_3;
63301         
63302 # check trigger-11 success:     1
63303 DELETE FROM t1
63304 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
63305 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
63306 AND f_charbig = '####updated per insert trigger####';
63307 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
63308 BEGIN
63309 SET new.f_int1 = @my_max1 + @counter,
63310 new.f_int2 = @my_min2 - @counter,
63311 new.f_charbig = '####updated per insert trigger####';
63312 SET @counter = @counter + 1;
63313 END|
63314 SET @counter = 1;
63315 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
63316 INSERT INTO t1 (f_char1, f_char2, f_charbig)
63317 SELECT CAST(f_int1 AS CHAR),
63318 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
63319 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
63320 ORDER BY f_int1;
63321 DROP TRIGGER trg_3;
63322         
63323 # check trigger-12 success:     1
63324 DELETE FROM t1
63325 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
63326 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
63327 AND f_charbig = '####updated per insert trigger####';
63328 ANALYZE  TABLE t1;
63329 Table   Op      Msg_type        Msg_text
63330 test.t1 analyze status  OK
63331 CHECK    TABLE t1 EXTENDED;
63332 Table   Op      Msg_type        Msg_text
63333 test.t1 check   status  OK
63334 CHECKSUM TABLE t1 EXTENDED;
63335 Table   Checksum
63336 test.t1 <some_value>
63337 OPTIMIZE TABLE t1;
63338 Table   Op      Msg_type        Msg_text
63339 test.t1 optimize        status  OK
63340 # check layout success:    1
63341 REPAIR   TABLE t1 EXTENDED;
63342 Table   Op      Msg_type        Msg_text
63343 test.t1 repair  status  OK
63344 # check layout success:    1
63345 TRUNCATE t1;
63346         
63347 # check TRUNCATE success:       1
63348 # check layout success:    1
63349 # End usability test (inc/partition_check.inc)
63350 DROP TABLE t1;
63351 CREATE TABLE t1 (
63352 f_int1 INTEGER,
63353 f_int2 INTEGER,
63354 f_char1 CHAR(20),
63355 f_char2 CHAR(20),
63356 f_charbig VARCHAR(1000)
63359 PARTITION BY LIST(MOD(f_int1,4))
63360 (PARTITION part_3 VALUES IN (-3),
63361 PARTITION part_2 VALUES IN (-2),
63362 PARTITION part_1 VALUES IN (-1),
63363 PARTITION part_N VALUES IN (NULL),
63364 PARTITION part0 VALUES IN (0),
63365 PARTITION part1 VALUES IN (1),
63366 PARTITION part2 VALUES IN (2),
63367 PARTITION part3 VALUES IN (3));
63368 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
63369 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
63370 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
63371 ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
63372 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
63373 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
63374 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
63375 # Start usability test (inc/partition_check.inc)
63376 create_command
63377 SHOW CREATE TABLE t1;
63378 Table   Create Table
63379 t1      CREATE TABLE `t1` (
63380   `f_int1` int(11) DEFAULT NULL,
63381   `f_int2` int(11) DEFAULT NULL,
63382   `f_char1` char(20) DEFAULT NULL,
63383   `f_char2` char(20) DEFAULT NULL,
63384   `f_charbig` varchar(1000) DEFAULT NULL
63385 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
63386 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
63387 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
63388  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
63389  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
63390  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
63391  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
63392  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
63393  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
63394  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
63396 unified filelist
63397 t1#P#part0.MYD
63398 t1#P#part0.MYI
63399 t1#P#part1.MYD
63400 t1#P#part1.MYI
63401 t1#P#part2.MYD
63402 t1#P#part2.MYI
63403 t1#P#part3.MYD
63404 t1#P#part3.MYI
63405 t1#P#part_1.MYD
63406 t1#P#part_1.MYI
63407 t1#P#part_2.MYD
63408 t1#P#part_2.MYI
63409 t1#P#part_3.MYD
63410 t1#P#part_3.MYI
63411 t1#P#part_N.MYD
63412 t1#P#part_N.MYI
63413 t1.frm
63414 t1.par
63416 # check prerequisites-1 success:    1
63417 # check COUNT(*) success:    1
63418 # check MIN/MAX(f_int1) success:    1
63419 # check MIN/MAX(f_int2) success:    1
63420 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
63421 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
63422 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
63423 WHERE f_int1 IN (2,3);
63424 # check prerequisites-3 success:    1
63425 DELETE FROM t1 WHERE f_charbig = 'delete me';
63426 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
63427 # check read via f_int1 success: 1
63428 # check read via f_int2 success: 1
63429         
63430 # check multiple-1 success:     1
63431 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
63432         
63433 # check multiple-2 success:     1
63434 INSERT INTO t1 SELECT * FROM t0_template
63435 WHERE MOD(f_int1,3) = 0;
63436         
63437 # check multiple-3 success:     1
63438 UPDATE t1 SET f_int1 = f_int1 + @max_row
63439 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
63440 AND @max_row_div2 + @max_row_div4;
63441         
63442 # check multiple-4 success:     1
63443 DELETE FROM t1
63444 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
63445 AND @max_row_div2 + @max_row_div4 + @max_row;
63446         
63447 # check multiple-5 success:     1
63448 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
63449 INSERT INTO t1
63450 SET f_int1 = @cur_value , f_int2 = @cur_value,
63451 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
63452 f_charbig = '#SINGLE#';
63453         
63454 # check single-1 success:       1
63455 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
63456 INSERT INTO t1
63457 SET f_int1 = @cur_value , f_int2 = @cur_value,
63458 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
63459 f_charbig = '#SINGLE#';
63460         
63461 # check single-2 success:       1
63462 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
63463 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
63464 UPDATE t1 SET f_int1 = @cur_value2
63465 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
63466         
63467 # check single-3 success:       1
63468 SET @cur_value1= -1;
63469 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
63470 UPDATE t1 SET f_int1 = @cur_value1
63471 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
63472         
63473 # check single-4 success:       1
63474 SELECT MAX(f_int1) INTO @cur_value FROM t1;
63475 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
63476         
63477 # check single-5 success:       1
63478 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
63479         
63480 # check single-6 success:       1
63481 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
63482         
63483 # check single-7 success:       1
63484 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
63485 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
63486 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
63487 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
63488 f_charbig = '#NULL#';
63489 INSERT INTO t1
63490 SET f_int1 = NULL , f_int2 = -@max_row,
63491 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
63492 f_charbig = '#NULL#';
63493 # check null success:    1
63494         
63495 # check null-1 success:         1
63496 UPDATE t1 SET f_int1 = -@max_row
63497 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
63498 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
63499         
63500 # check null-2 success:         1
63501 UPDATE t1 SET f_int1 = NULL
63502 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
63503 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
63504         
63505 # check null-3 success:         1
63506 DELETE FROM t1
63507 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
63508 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
63509         
63510 # check null-4 success:         1
63511 DELETE FROM t1
63512 WHERE f_int1 = 0 AND f_int2 = 0
63513 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
63514 AND f_charbig = '#NULL#';
63515 SET AUTOCOMMIT= 0;
63516 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
63517 SELECT f_int1, f_int1, '', '', 'was inserted'
63518 FROM t0_template source_tab
63519 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
63520         
63521 # check transactions-1 success:         1
63522 COMMIT WORK;
63523         
63524 # check transactions-2 success:         1
63525 ROLLBACK WORK;
63526         
63527 # check transactions-3 success:         1
63528 DELETE FROM t1 WHERE f_charbig = 'was inserted';
63529 COMMIT WORK;
63530 ROLLBACK WORK;
63531         
63532 # check transactions-4 success:         1
63533 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
63534 SELECT f_int1, f_int1, '', '', 'was inserted'
63535 FROM t0_template source_tab
63536 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
63537         
63538 # check transactions-5 success:         1
63539 ROLLBACK WORK;
63540 Warnings:
63541 Warning 1196    Some non-transactional changed tables couldn't be rolled back
63542         
63543 # check transactions-6 success:         1
63544 # INFO: Storage engine used for t1 seems to be not transactional.
63545 COMMIT;
63546         
63547 # check transactions-7 success:         1
63548 DELETE FROM t1 WHERE f_charbig = 'was inserted';
63549 COMMIT WORK;
63550 SET @@session.sql_mode = 'traditional';
63551 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
63552 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
63553 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
63554 '', '', 'was inserted' FROM t0_template
63555 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
63556 ERROR 22012: Division by 0
63557 COMMIT;
63558         
63559 # check transactions-8 success:         1
63560 # INFO: Storage engine used for t1 seems to be unable to revert
63561 #       changes made by the failing statement.
63562 SET @@session.sql_mode = '';
63563 SET AUTOCOMMIT= 1;
63564 DELETE FROM t1 WHERE f_charbig = 'was inserted';
63565 COMMIT WORK;
63566 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
63567         
63568 # check special-1 success:      1
63569 UPDATE t1 SET f_charbig = '';
63570         
63571 # check special-2 success:      1
63572 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
63573 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
63574 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
63575 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63576 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63577 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63578 'just inserted' FROM t0_template
63579 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63580 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
63581 BEGIN
63582 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63583 f_charbig = 'updated by trigger'
63584       WHERE f_int1 = new.f_int1;
63585 END|
63586 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63587 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
63588 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63589         
63590 # check trigger-1 success:      1
63591 DROP TRIGGER trg_1;
63592 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63593 f_int2 = CAST(f_char1 AS SIGNED INT),
63594 f_charbig = 'just inserted'
63595    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63596 DELETE FROM t0_aux
63597 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63598 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63599 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63600 'just inserted' FROM t0_template
63601 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63602 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
63603 BEGIN
63604 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63605 f_charbig = 'updated by trigger'
63606       WHERE f_int1 = new.f_int1;
63607 END|
63608 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63609 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
63610 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63611         
63612 # check trigger-2 success:      1
63613 DROP TRIGGER trg_1;
63614 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63615 f_int2 = CAST(f_char1 AS SIGNED INT),
63616 f_charbig = 'just inserted'
63617    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63618 DELETE FROM t0_aux
63619 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63620 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63621 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63622 'just inserted' FROM t0_template
63623 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63624 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
63625 BEGIN
63626 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63627 f_charbig = 'updated by trigger'
63628       WHERE f_int1 = new.f_int1;
63629 END|
63630 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
63631 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
63632         
63633 # check trigger-3 success:      1
63634 DROP TRIGGER trg_1;
63635 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63636 f_int2 = CAST(f_char1 AS SIGNED INT),
63637 f_charbig = 'just inserted'
63638    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63639 DELETE FROM t0_aux
63640 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63641 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63642 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63643 'just inserted' FROM t0_template
63644 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63645 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
63646 BEGIN
63647 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63648 f_charbig = 'updated by trigger'
63649       WHERE f_int1 = - old.f_int1;
63650 END|
63651 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
63652 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
63653         
63654 # check trigger-4 success:      1
63655 DROP TRIGGER trg_1;
63656 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63657 f_int2 = CAST(f_char1 AS SIGNED INT),
63658 f_charbig = 'just inserted'
63659    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63660 DELETE FROM t0_aux
63661 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63662 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63663 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63664 'just inserted' FROM t0_template
63665 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63666 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
63667 BEGIN
63668 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63669 f_charbig = 'updated by trigger'
63670       WHERE f_int1 = new.f_int1;
63671 END|
63672 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
63673 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
63674         
63675 # check trigger-5 success:      1
63676 DROP TRIGGER trg_1;
63677 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63678 f_int2 = CAST(f_char1 AS SIGNED INT),
63679 f_charbig = 'just inserted'
63680    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63681 DELETE FROM t0_aux
63682 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63683 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63684 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63685 'just inserted' FROM t0_template
63686 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63687 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
63688 BEGIN
63689 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63690 f_charbig = 'updated by trigger'
63691       WHERE f_int1 = - old.f_int1;
63692 END|
63693 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
63694 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
63695         
63696 # check trigger-6 success:      1
63697 DROP TRIGGER trg_1;
63698 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63699 f_int2 = CAST(f_char1 AS SIGNED INT),
63700 f_charbig = 'just inserted'
63701    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63702 DELETE FROM t0_aux
63703 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63704 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63705 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63706 'just inserted' FROM t0_template
63707 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63708 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
63709 BEGIN
63710 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63711 f_charbig = 'updated by trigger'
63712       WHERE f_int1 = - old.f_int1;
63713 END|
63714 DELETE FROM t0_aux
63715 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
63716         
63717 # check trigger-7 success:      1
63718 DROP TRIGGER trg_1;
63719 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63720 f_int2 = CAST(f_char1 AS SIGNED INT),
63721 f_charbig = 'just inserted'
63722    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63723 DELETE FROM t0_aux
63724 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63725 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
63726 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
63727 'just inserted' FROM t0_template
63728 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63729 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
63730 BEGIN
63731 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
63732 f_charbig = 'updated by trigger'
63733       WHERE f_int1 = - old.f_int1;
63734 END|
63735 DELETE FROM t0_aux
63736 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
63737         
63738 # check trigger-8 success:      1
63739 DROP TRIGGER trg_1;
63740 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63741 f_int2 = CAST(f_char1 AS SIGNED INT),
63742 f_charbig = 'just inserted'
63743    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
63744 DELETE FROM t0_aux
63745 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63746 DELETE FROM t1
63747 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
63748 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
63749 BEGIN
63750 SET new.f_int1 = old.f_int1 + @max_row,
63751 new.f_int2 = old.f_int2 - @max_row,
63752 new.f_charbig = '####updated per update trigger####';
63753 END|
63754 UPDATE t1
63755 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
63756 f_charbig = '####updated per update statement itself####';
63757         
63758 # check trigger-9 success:      1
63759 DROP TRIGGER trg_2;
63760 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63761 f_int2 = CAST(f_char1 AS SIGNED INT),
63762 f_charbig = CONCAT('===',f_char1,'===');
63763 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
63764 BEGIN
63765 SET new.f_int1 = new.f_int1 + @max_row,
63766 new.f_int2 = new.f_int2 - @max_row,
63767 new.f_charbig = '####updated per update trigger####';
63768 END|
63769 UPDATE t1
63770 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
63771 f_charbig = '####updated per update statement itself####';
63772         
63773 # check trigger-10 success:     1
63774 DROP TRIGGER trg_2;
63775 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
63776 f_int2 = CAST(f_char1 AS SIGNED INT),
63777 f_charbig = CONCAT('===',f_char1,'===');
63778 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
63779 BEGIN
63780 SET new.f_int1 = @my_max1 + @counter,
63781 new.f_int2 = @my_min2 - @counter,
63782 new.f_charbig = '####updated per insert trigger####';
63783 SET @counter = @counter + 1;
63784 END|
63785 SET @counter = 1;
63786 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
63787 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
63788 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
63789 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
63790 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
63791 ORDER BY f_int1;
63792 DROP TRIGGER trg_3;
63793         
63794 # check trigger-11 success:     1
63795 DELETE FROM t1
63796 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
63797 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
63798 AND f_charbig = '####updated per insert trigger####';
63799 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
63800 BEGIN
63801 SET new.f_int1 = @my_max1 + @counter,
63802 new.f_int2 = @my_min2 - @counter,
63803 new.f_charbig = '####updated per insert trigger####';
63804 SET @counter = @counter + 1;
63805 END|
63806 SET @counter = 1;
63807 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
63808 INSERT INTO t1 (f_char1, f_char2, f_charbig)
63809 SELECT CAST(f_int1 AS CHAR),
63810 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
63811 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
63812 ORDER BY f_int1;
63813 DROP TRIGGER trg_3;
63814         
63815 # check trigger-12 success:     1
63816 DELETE FROM t1
63817 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
63818 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
63819 AND f_charbig = '####updated per insert trigger####';
63820 ANALYZE  TABLE t1;
63821 Table   Op      Msg_type        Msg_text
63822 test.t1 analyze status  OK
63823 CHECK    TABLE t1 EXTENDED;
63824 Table   Op      Msg_type        Msg_text
63825 test.t1 check   status  OK
63826 CHECKSUM TABLE t1 EXTENDED;
63827 Table   Checksum
63828 test.t1 <some_value>
63829 OPTIMIZE TABLE t1;
63830 Table   Op      Msg_type        Msg_text
63831 test.t1 optimize        status  OK
63832 # check layout success:    1
63833 REPAIR   TABLE t1 EXTENDED;
63834 Table   Op      Msg_type        Msg_text
63835 test.t1 repair  status  OK
63836 # check layout success:    1
63837 TRUNCATE t1;
63838         
63839 # check TRUNCATE success:       1
63840 # check layout success:    1
63841 # End usability test (inc/partition_check.inc)
63842 DROP TABLE t1;
63843 CREATE TABLE t1 (
63844 f_int1 INTEGER,
63845 f_int2 INTEGER,
63846 f_char1 CHAR(20),
63847 f_char2 CHAR(20),
63848 f_charbig VARCHAR(1000)
63851 PARTITION BY RANGE(f_int1)
63852 (PARTITION parta VALUES LESS THAN (0),
63853 PARTITION part_1 VALUES LESS THAN (5),
63854 PARTITION part_2 VALUES LESS THAN (10),
63855 PARTITION part_3 VALUES LESS THAN (10 + 5),
63856 PARTITION part_4 VALUES LESS THAN (20),
63857 PARTITION part_5 VALUES LESS THAN (2147483646));
63858 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
63859 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
63860 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
63861 ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
63862 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
63863 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
63864 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
63865 # Start usability test (inc/partition_check.inc)
63866 create_command
63867 SHOW CREATE TABLE t1;
63868 Table   Create Table
63869 t1      CREATE TABLE `t1` (
63870   `f_int1` int(11) DEFAULT NULL,
63871   `f_int2` int(11) DEFAULT NULL,
63872   `f_char1` char(20) DEFAULT NULL,
63873   `f_char2` char(20) DEFAULT NULL,
63874   `f_charbig` varchar(1000) DEFAULT NULL
63875 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
63876 /*!50100 PARTITION BY RANGE (f_int1)
63877 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
63878  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
63879  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
63880  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
63881  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
63882  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
63884 unified filelist
63885 t1#P#part_1.MYD
63886 t1#P#part_1.MYI
63887 t1#P#part_2.MYD
63888 t1#P#part_2.MYI
63889 t1#P#part_3.MYD
63890 t1#P#part_3.MYI
63891 t1#P#part_4.MYD
63892 t1#P#part_4.MYI
63893 t1#P#part_5.MYD
63894 t1#P#part_5.MYI
63895 t1#P#parta.MYD
63896 t1#P#parta.MYI
63897 t1.frm
63898 t1.par
63900 # check prerequisites-1 success:    1
63901 # check COUNT(*) success:    1
63902 # check MIN/MAX(f_int1) success:    1
63903 # check MIN/MAX(f_int2) success:    1
63904 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
63905 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
63906 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
63907 WHERE f_int1 IN (2,3);
63908 # check prerequisites-3 success:    1
63909 DELETE FROM t1 WHERE f_charbig = 'delete me';
63910 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
63911 # check read via f_int1 success: 1
63912 # check read via f_int2 success: 1
63913         
63914 # check multiple-1 success:     1
63915 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
63916         
63917 # check multiple-2 success:     1
63918 INSERT INTO t1 SELECT * FROM t0_template
63919 WHERE MOD(f_int1,3) = 0;
63920         
63921 # check multiple-3 success:     1
63922 UPDATE t1 SET f_int1 = f_int1 + @max_row
63923 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
63924 AND @max_row_div2 + @max_row_div4;
63925         
63926 # check multiple-4 success:     1
63927 DELETE FROM t1
63928 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
63929 AND @max_row_div2 + @max_row_div4 + @max_row;
63930         
63931 # check multiple-5 success:     1
63932 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
63933 INSERT INTO t1
63934 SET f_int1 = @cur_value , f_int2 = @cur_value,
63935 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
63936 f_charbig = '#SINGLE#';
63937         
63938 # check single-1 success:       1
63939 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
63940 INSERT INTO t1
63941 SET f_int1 = @cur_value , f_int2 = @cur_value,
63942 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
63943 f_charbig = '#SINGLE#';
63944         
63945 # check single-2 success:       1
63946 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
63947 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
63948 UPDATE t1 SET f_int1 = @cur_value2
63949 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
63950         
63951 # check single-3 success:       1
63952 SET @cur_value1= -1;
63953 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
63954 UPDATE t1 SET f_int1 = @cur_value1
63955 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
63956         
63957 # check single-4 success:       1
63958 SELECT MAX(f_int1) INTO @cur_value FROM t1;
63959 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
63960         
63961 # check single-5 success:       1
63962 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
63963         
63964 # check single-6 success:       1
63965 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
63966 ERROR HY000: Table has no partition for value 2147483647
63967 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
63968 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
63969 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
63970 f_charbig = '#NULL#';
63971 INSERT INTO t1
63972 SET f_int1 = NULL , f_int2 = -@max_row,
63973 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
63974 f_charbig = '#NULL#';
63975 # check null success:    1
63976         
63977 # check null-1 success:         1
63978 UPDATE t1 SET f_int1 = -@max_row
63979 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
63980 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
63981         
63982 # check null-2 success:         1
63983 UPDATE t1 SET f_int1 = NULL
63984 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
63985 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
63986         
63987 # check null-3 success:         1
63988 DELETE FROM t1
63989 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
63990 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
63991         
63992 # check null-4 success:         1
63993 DELETE FROM t1
63994 WHERE f_int1 = 0 AND f_int2 = 0
63995 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
63996 AND f_charbig = '#NULL#';
63997 SET AUTOCOMMIT= 0;
63998 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
63999 SELECT f_int1, f_int1, '', '', 'was inserted'
64000 FROM t0_template source_tab
64001 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
64002         
64003 # check transactions-1 success:         1
64004 COMMIT WORK;
64005         
64006 # check transactions-2 success:         1
64007 ROLLBACK WORK;
64008         
64009 # check transactions-3 success:         1
64010 DELETE FROM t1 WHERE f_charbig = 'was inserted';
64011 COMMIT WORK;
64012 ROLLBACK WORK;
64013         
64014 # check transactions-4 success:         1
64015 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
64016 SELECT f_int1, f_int1, '', '', 'was inserted'
64017 FROM t0_template source_tab
64018 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
64019         
64020 # check transactions-5 success:         1
64021 ROLLBACK WORK;
64022 Warnings:
64023 Warning 1196    Some non-transactional changed tables couldn't be rolled back
64024         
64025 # check transactions-6 success:         1
64026 # INFO: Storage engine used for t1 seems to be not transactional.
64027 COMMIT;
64028         
64029 # check transactions-7 success:         1
64030 DELETE FROM t1 WHERE f_charbig = 'was inserted';
64031 COMMIT WORK;
64032 SET @@session.sql_mode = 'traditional';
64033 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
64034 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
64035 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
64036 '', '', 'was inserted' FROM t0_template
64037 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
64038 ERROR 22012: Division by 0
64039 COMMIT;
64040         
64041 # check transactions-8 success:         1
64042 # INFO: Storage engine used for t1 seems to be unable to revert
64043 #       changes made by the failing statement.
64044 SET @@session.sql_mode = '';
64045 SET AUTOCOMMIT= 1;
64046 DELETE FROM t1 WHERE f_charbig = 'was inserted';
64047 COMMIT WORK;
64048 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
64049         
64050 # check special-1 success:      1
64051 UPDATE t1 SET f_charbig = '';
64052         
64053 # check special-2 success:      1
64054 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
64055 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
64056 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
64057 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64058 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64059 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64060 'just inserted' FROM t0_template
64061 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64062 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
64063 BEGIN
64064 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64065 f_charbig = 'updated by trigger'
64066       WHERE f_int1 = new.f_int1;
64067 END|
64068 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64069 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
64070 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64071         
64072 # check trigger-1 success:      1
64073 DROP TRIGGER trg_1;
64074 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64075 f_int2 = CAST(f_char1 AS SIGNED INT),
64076 f_charbig = 'just inserted'
64077    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64078 DELETE FROM t0_aux
64079 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64080 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64081 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64082 'just inserted' FROM t0_template
64083 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64084 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
64085 BEGIN
64086 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64087 f_charbig = 'updated by trigger'
64088       WHERE f_int1 = new.f_int1;
64089 END|
64090 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64091 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
64092 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64093         
64094 # check trigger-2 success:      1
64095 DROP TRIGGER trg_1;
64096 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64097 f_int2 = CAST(f_char1 AS SIGNED INT),
64098 f_charbig = 'just inserted'
64099    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64100 DELETE FROM t0_aux
64101 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64102 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64103 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64104 'just inserted' FROM t0_template
64105 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64106 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
64107 BEGIN
64108 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64109 f_charbig = 'updated by trigger'
64110       WHERE f_int1 = new.f_int1;
64111 END|
64112 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
64113 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
64114         
64115 # check trigger-3 success:      1
64116 DROP TRIGGER trg_1;
64117 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64118 f_int2 = CAST(f_char1 AS SIGNED INT),
64119 f_charbig = 'just inserted'
64120    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64121 DELETE FROM t0_aux
64122 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64123 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64124 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64125 'just inserted' FROM t0_template
64126 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64127 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
64128 BEGIN
64129 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64130 f_charbig = 'updated by trigger'
64131       WHERE f_int1 = - old.f_int1;
64132 END|
64133 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
64134 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
64135         
64136 # check trigger-4 success:      1
64137 DROP TRIGGER trg_1;
64138 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64139 f_int2 = CAST(f_char1 AS SIGNED INT),
64140 f_charbig = 'just inserted'
64141    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64142 DELETE FROM t0_aux
64143 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64144 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64145 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64146 'just inserted' FROM t0_template
64147 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64148 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
64149 BEGIN
64150 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64151 f_charbig = 'updated by trigger'
64152       WHERE f_int1 = new.f_int1;
64153 END|
64154 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
64155 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
64156         
64157 # check trigger-5 success:      1
64158 DROP TRIGGER trg_1;
64159 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64160 f_int2 = CAST(f_char1 AS SIGNED INT),
64161 f_charbig = 'just inserted'
64162    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64163 DELETE FROM t0_aux
64164 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64165 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64166 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64167 'just inserted' FROM t0_template
64168 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64169 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
64170 BEGIN
64171 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64172 f_charbig = 'updated by trigger'
64173       WHERE f_int1 = - old.f_int1;
64174 END|
64175 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
64176 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
64177         
64178 # check trigger-6 success:      1
64179 DROP TRIGGER trg_1;
64180 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64181 f_int2 = CAST(f_char1 AS SIGNED INT),
64182 f_charbig = 'just inserted'
64183    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64184 DELETE FROM t0_aux
64185 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64186 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64187 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64188 'just inserted' FROM t0_template
64189 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64190 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
64191 BEGIN
64192 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64193 f_charbig = 'updated by trigger'
64194       WHERE f_int1 = - old.f_int1;
64195 END|
64196 DELETE FROM t0_aux
64197 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
64198         
64199 # check trigger-7 success:      1
64200 DROP TRIGGER trg_1;
64201 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64202 f_int2 = CAST(f_char1 AS SIGNED INT),
64203 f_charbig = 'just inserted'
64204    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64205 DELETE FROM t0_aux
64206 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64207 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64208 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64209 'just inserted' FROM t0_template
64210 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64211 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
64212 BEGIN
64213 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64214 f_charbig = 'updated by trigger'
64215       WHERE f_int1 = - old.f_int1;
64216 END|
64217 DELETE FROM t0_aux
64218 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
64219         
64220 # check trigger-8 success:      1
64221 DROP TRIGGER trg_1;
64222 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64223 f_int2 = CAST(f_char1 AS SIGNED INT),
64224 f_charbig = 'just inserted'
64225    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64226 DELETE FROM t0_aux
64227 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64228 DELETE FROM t1
64229 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64230 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
64231 BEGIN
64232 SET new.f_int1 = old.f_int1 + @max_row,
64233 new.f_int2 = old.f_int2 - @max_row,
64234 new.f_charbig = '####updated per update trigger####';
64235 END|
64236 UPDATE t1
64237 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
64238 f_charbig = '####updated per update statement itself####';
64239         
64240 # check trigger-9 success:      1
64241 DROP TRIGGER trg_2;
64242 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64243 f_int2 = CAST(f_char1 AS SIGNED INT),
64244 f_charbig = CONCAT('===',f_char1,'===');
64245 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
64246 BEGIN
64247 SET new.f_int1 = new.f_int1 + @max_row,
64248 new.f_int2 = new.f_int2 - @max_row,
64249 new.f_charbig = '####updated per update trigger####';
64250 END|
64251 UPDATE t1
64252 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
64253 f_charbig = '####updated per update statement itself####';
64254         
64255 # check trigger-10 success:     1
64256 DROP TRIGGER trg_2;
64257 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64258 f_int2 = CAST(f_char1 AS SIGNED INT),
64259 f_charbig = CONCAT('===',f_char1,'===');
64260 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
64261 BEGIN
64262 SET new.f_int1 = @my_max1 + @counter,
64263 new.f_int2 = @my_min2 - @counter,
64264 new.f_charbig = '####updated per insert trigger####';
64265 SET @counter = @counter + 1;
64266 END|
64267 SET @counter = 1;
64268 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
64269 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
64270 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
64271 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
64272 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
64273 ORDER BY f_int1;
64274 DROP TRIGGER trg_3;
64275         
64276 # check trigger-11 success:     1
64277 DELETE FROM t1
64278 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
64279 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
64280 AND f_charbig = '####updated per insert trigger####';
64281 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
64282 BEGIN
64283 SET new.f_int1 = @my_max1 + @counter,
64284 new.f_int2 = @my_min2 - @counter,
64285 new.f_charbig = '####updated per insert trigger####';
64286 SET @counter = @counter + 1;
64287 END|
64288 SET @counter = 1;
64289 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
64290 INSERT INTO t1 (f_char1, f_char2, f_charbig)
64291 SELECT CAST(f_int1 AS CHAR),
64292 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
64293 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
64294 ORDER BY f_int1;
64295 DROP TRIGGER trg_3;
64296         
64297 # check trigger-12 success:     1
64298 DELETE FROM t1
64299 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
64300 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
64301 AND f_charbig = '####updated per insert trigger####';
64302 ANALYZE  TABLE t1;
64303 Table   Op      Msg_type        Msg_text
64304 test.t1 analyze status  OK
64305 CHECK    TABLE t1 EXTENDED;
64306 Table   Op      Msg_type        Msg_text
64307 test.t1 check   status  OK
64308 CHECKSUM TABLE t1 EXTENDED;
64309 Table   Checksum
64310 test.t1 <some_value>
64311 OPTIMIZE TABLE t1;
64312 Table   Op      Msg_type        Msg_text
64313 test.t1 optimize        status  OK
64314 # check layout success:    1
64315 REPAIR   TABLE t1 EXTENDED;
64316 Table   Op      Msg_type        Msg_text
64317 test.t1 repair  status  OK
64318 # check layout success:    1
64319 TRUNCATE t1;
64320         
64321 # check TRUNCATE success:       1
64322 # check layout success:    1
64323 # End usability test (inc/partition_check.inc)
64324 DROP TABLE t1;
64325 CREATE TABLE t1 (
64326 f_int1 INTEGER,
64327 f_int2 INTEGER,
64328 f_char1 CHAR(20),
64329 f_char2 CHAR(20),
64330 f_charbig VARCHAR(1000)
64333 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
64334 (PARTITION part_1 VALUES LESS THAN (0),
64335 PARTITION part_2 VALUES LESS THAN (5),
64336 PARTITION part_3 VALUES LESS THAN (10),
64337 PARTITION part_4 VALUES LESS THAN (2147483646));
64338 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
64339 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
64340 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
64341 ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
64342 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
64343 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
64344 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
64345 # Start usability test (inc/partition_check.inc)
64346 create_command
64347 SHOW CREATE TABLE t1;
64348 Table   Create Table
64349 t1      CREATE TABLE `t1` (
64350   `f_int1` int(11) DEFAULT NULL,
64351   `f_int2` int(11) DEFAULT NULL,
64352   `f_char1` char(20) DEFAULT NULL,
64353   `f_char2` char(20) DEFAULT NULL,
64354   `f_charbig` varchar(1000) DEFAULT NULL
64355 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
64356 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
64357 SUBPARTITION BY HASH (f_int1)
64358 SUBPARTITIONS 2
64359 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
64360  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
64361  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
64362  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
64364 unified filelist
64365 t1#P#part_1#SP#part_1sp0.MYD
64366 t1#P#part_1#SP#part_1sp0.MYI
64367 t1#P#part_1#SP#part_1sp1.MYD
64368 t1#P#part_1#SP#part_1sp1.MYI
64369 t1#P#part_2#SP#part_2sp0.MYD
64370 t1#P#part_2#SP#part_2sp0.MYI
64371 t1#P#part_2#SP#part_2sp1.MYD
64372 t1#P#part_2#SP#part_2sp1.MYI
64373 t1#P#part_3#SP#part_3sp0.MYD
64374 t1#P#part_3#SP#part_3sp0.MYI
64375 t1#P#part_3#SP#part_3sp1.MYD
64376 t1#P#part_3#SP#part_3sp1.MYI
64377 t1#P#part_4#SP#part_4sp0.MYD
64378 t1#P#part_4#SP#part_4sp0.MYI
64379 t1#P#part_4#SP#part_4sp1.MYD
64380 t1#P#part_4#SP#part_4sp1.MYI
64381 t1.frm
64382 t1.par
64384 # check prerequisites-1 success:    1
64385 # check COUNT(*) success:    1
64386 # check MIN/MAX(f_int1) success:    1
64387 # check MIN/MAX(f_int2) success:    1
64388 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
64389 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
64390 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
64391 WHERE f_int1 IN (2,3);
64392 # check prerequisites-3 success:    1
64393 DELETE FROM t1 WHERE f_charbig = 'delete me';
64394 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
64395 # check read via f_int1 success: 1
64396 # check read via f_int2 success: 1
64397         
64398 # check multiple-1 success:     1
64399 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
64400         
64401 # check multiple-2 success:     1
64402 INSERT INTO t1 SELECT * FROM t0_template
64403 WHERE MOD(f_int1,3) = 0;
64404         
64405 # check multiple-3 success:     1
64406 UPDATE t1 SET f_int1 = f_int1 + @max_row
64407 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
64408 AND @max_row_div2 + @max_row_div4;
64409         
64410 # check multiple-4 success:     1
64411 DELETE FROM t1
64412 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
64413 AND @max_row_div2 + @max_row_div4 + @max_row;
64414         
64415 # check multiple-5 success:     1
64416 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
64417 INSERT INTO t1
64418 SET f_int1 = @cur_value , f_int2 = @cur_value,
64419 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
64420 f_charbig = '#SINGLE#';
64421         
64422 # check single-1 success:       1
64423 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
64424 INSERT INTO t1
64425 SET f_int1 = @cur_value , f_int2 = @cur_value,
64426 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
64427 f_charbig = '#SINGLE#';
64428         
64429 # check single-2 success:       1
64430 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
64431 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
64432 UPDATE t1 SET f_int1 = @cur_value2
64433 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
64434         
64435 # check single-3 success:       1
64436 SET @cur_value1= -1;
64437 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
64438 UPDATE t1 SET f_int1 = @cur_value1
64439 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
64440         
64441 # check single-4 success:       1
64442 SELECT MAX(f_int1) INTO @cur_value FROM t1;
64443 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
64444         
64445 # check single-5 success:       1
64446 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
64447         
64448 # check single-6 success:       1
64449 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
64450         
64451 # check single-7 success:       1
64452 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
64453 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
64454 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
64455 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
64456 f_charbig = '#NULL#';
64457 INSERT INTO t1
64458 SET f_int1 = NULL , f_int2 = -@max_row,
64459 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
64460 f_charbig = '#NULL#';
64461 # check null success:    1
64462         
64463 # check null-1 success:         1
64464 UPDATE t1 SET f_int1 = -@max_row
64465 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
64466 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
64467         
64468 # check null-2 success:         1
64469 UPDATE t1 SET f_int1 = NULL
64470 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
64471 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
64472         
64473 # check null-3 success:         1
64474 DELETE FROM t1
64475 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
64476 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
64477         
64478 # check null-4 success:         1
64479 DELETE FROM t1
64480 WHERE f_int1 = 0 AND f_int2 = 0
64481 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
64482 AND f_charbig = '#NULL#';
64483 SET AUTOCOMMIT= 0;
64484 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
64485 SELECT f_int1, f_int1, '', '', 'was inserted'
64486 FROM t0_template source_tab
64487 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
64488         
64489 # check transactions-1 success:         1
64490 COMMIT WORK;
64491         
64492 # check transactions-2 success:         1
64493 ROLLBACK WORK;
64494         
64495 # check transactions-3 success:         1
64496 DELETE FROM t1 WHERE f_charbig = 'was inserted';
64497 COMMIT WORK;
64498 ROLLBACK WORK;
64499         
64500 # check transactions-4 success:         1
64501 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
64502 SELECT f_int1, f_int1, '', '', 'was inserted'
64503 FROM t0_template source_tab
64504 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
64505         
64506 # check transactions-5 success:         1
64507 ROLLBACK WORK;
64508 Warnings:
64509 Warning 1196    Some non-transactional changed tables couldn't be rolled back
64510         
64511 # check transactions-6 success:         1
64512 # INFO: Storage engine used for t1 seems to be not transactional.
64513 COMMIT;
64514         
64515 # check transactions-7 success:         1
64516 DELETE FROM t1 WHERE f_charbig = 'was inserted';
64517 COMMIT WORK;
64518 SET @@session.sql_mode = 'traditional';
64519 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
64520 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
64521 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
64522 '', '', 'was inserted' FROM t0_template
64523 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
64524 ERROR 22012: Division by 0
64525 COMMIT;
64526         
64527 # check transactions-8 success:         1
64528 # INFO: Storage engine used for t1 seems to be unable to revert
64529 #       changes made by the failing statement.
64530 SET @@session.sql_mode = '';
64531 SET AUTOCOMMIT= 1;
64532 DELETE FROM t1 WHERE f_charbig = 'was inserted';
64533 COMMIT WORK;
64534 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
64535         
64536 # check special-1 success:      1
64537 UPDATE t1 SET f_charbig = '';
64538         
64539 # check special-2 success:      1
64540 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
64541 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
64542 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
64543 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64544 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64545 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64546 'just inserted' FROM t0_template
64547 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64548 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
64549 BEGIN
64550 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64551 f_charbig = 'updated by trigger'
64552       WHERE f_int1 = new.f_int1;
64553 END|
64554 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64555 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
64556 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64557         
64558 # check trigger-1 success:      1
64559 DROP TRIGGER trg_1;
64560 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64561 f_int2 = CAST(f_char1 AS SIGNED INT),
64562 f_charbig = 'just inserted'
64563    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64564 DELETE FROM t0_aux
64565 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64566 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64567 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64568 'just inserted' FROM t0_template
64569 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64570 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
64571 BEGIN
64572 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64573 f_charbig = 'updated by trigger'
64574       WHERE f_int1 = new.f_int1;
64575 END|
64576 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64577 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
64578 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64579         
64580 # check trigger-2 success:      1
64581 DROP TRIGGER trg_1;
64582 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64583 f_int2 = CAST(f_char1 AS SIGNED INT),
64584 f_charbig = 'just inserted'
64585    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64586 DELETE FROM t0_aux
64587 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64588 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64589 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64590 'just inserted' FROM t0_template
64591 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64592 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
64593 BEGIN
64594 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64595 f_charbig = 'updated by trigger'
64596       WHERE f_int1 = new.f_int1;
64597 END|
64598 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
64599 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
64600         
64601 # check trigger-3 success:      1
64602 DROP TRIGGER trg_1;
64603 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64604 f_int2 = CAST(f_char1 AS SIGNED INT),
64605 f_charbig = 'just inserted'
64606    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64607 DELETE FROM t0_aux
64608 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64609 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64610 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64611 'just inserted' FROM t0_template
64612 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64613 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
64614 BEGIN
64615 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64616 f_charbig = 'updated by trigger'
64617       WHERE f_int1 = - old.f_int1;
64618 END|
64619 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
64620 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
64621         
64622 # check trigger-4 success:      1
64623 DROP TRIGGER trg_1;
64624 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64625 f_int2 = CAST(f_char1 AS SIGNED INT),
64626 f_charbig = 'just inserted'
64627    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64628 DELETE FROM t0_aux
64629 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64630 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64631 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64632 'just inserted' FROM t0_template
64633 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64634 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
64635 BEGIN
64636 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64637 f_charbig = 'updated by trigger'
64638       WHERE f_int1 = new.f_int1;
64639 END|
64640 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
64641 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
64642         
64643 # check trigger-5 success:      1
64644 DROP TRIGGER trg_1;
64645 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64646 f_int2 = CAST(f_char1 AS SIGNED INT),
64647 f_charbig = 'just inserted'
64648    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64649 DELETE FROM t0_aux
64650 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64651 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64652 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64653 'just inserted' FROM t0_template
64654 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64655 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
64656 BEGIN
64657 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64658 f_charbig = 'updated by trigger'
64659       WHERE f_int1 = - old.f_int1;
64660 END|
64661 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
64662 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
64663         
64664 # check trigger-6 success:      1
64665 DROP TRIGGER trg_1;
64666 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64667 f_int2 = CAST(f_char1 AS SIGNED INT),
64668 f_charbig = 'just inserted'
64669    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64670 DELETE FROM t0_aux
64671 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64672 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64673 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64674 'just inserted' FROM t0_template
64675 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64676 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
64677 BEGIN
64678 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64679 f_charbig = 'updated by trigger'
64680       WHERE f_int1 = - old.f_int1;
64681 END|
64682 DELETE FROM t0_aux
64683 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
64684         
64685 # check trigger-7 success:      1
64686 DROP TRIGGER trg_1;
64687 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64688 f_int2 = CAST(f_char1 AS SIGNED INT),
64689 f_charbig = 'just inserted'
64690    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64691 DELETE FROM t0_aux
64692 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64693 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
64694 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
64695 'just inserted' FROM t0_template
64696 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64697 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
64698 BEGIN
64699 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
64700 f_charbig = 'updated by trigger'
64701       WHERE f_int1 = - old.f_int1;
64702 END|
64703 DELETE FROM t0_aux
64704 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
64705         
64706 # check trigger-8 success:      1
64707 DROP TRIGGER trg_1;
64708 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64709 f_int2 = CAST(f_char1 AS SIGNED INT),
64710 f_charbig = 'just inserted'
64711    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
64712 DELETE FROM t0_aux
64713 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64714 DELETE FROM t1
64715 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
64716 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
64717 BEGIN
64718 SET new.f_int1 = old.f_int1 + @max_row,
64719 new.f_int2 = old.f_int2 - @max_row,
64720 new.f_charbig = '####updated per update trigger####';
64721 END|
64722 UPDATE t1
64723 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
64724 f_charbig = '####updated per update statement itself####';
64725         
64726 # check trigger-9 success:      1
64727 DROP TRIGGER trg_2;
64728 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64729 f_int2 = CAST(f_char1 AS SIGNED INT),
64730 f_charbig = CONCAT('===',f_char1,'===');
64731 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
64732 BEGIN
64733 SET new.f_int1 = new.f_int1 + @max_row,
64734 new.f_int2 = new.f_int2 - @max_row,
64735 new.f_charbig = '####updated per update trigger####';
64736 END|
64737 UPDATE t1
64738 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
64739 f_charbig = '####updated per update statement itself####';
64740         
64741 # check trigger-10 success:     1
64742 DROP TRIGGER trg_2;
64743 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
64744 f_int2 = CAST(f_char1 AS SIGNED INT),
64745 f_charbig = CONCAT('===',f_char1,'===');
64746 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
64747 BEGIN
64748 SET new.f_int1 = @my_max1 + @counter,
64749 new.f_int2 = @my_min2 - @counter,
64750 new.f_charbig = '####updated per insert trigger####';
64751 SET @counter = @counter + 1;
64752 END|
64753 SET @counter = 1;
64754 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
64755 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
64756 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
64757 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
64758 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
64759 ORDER BY f_int1;
64760 DROP TRIGGER trg_3;
64761         
64762 # check trigger-11 success:     1
64763 DELETE FROM t1
64764 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
64765 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
64766 AND f_charbig = '####updated per insert trigger####';
64767 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
64768 BEGIN
64769 SET new.f_int1 = @my_max1 + @counter,
64770 new.f_int2 = @my_min2 - @counter,
64771 new.f_charbig = '####updated per insert trigger####';
64772 SET @counter = @counter + 1;
64773 END|
64774 SET @counter = 1;
64775 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
64776 INSERT INTO t1 (f_char1, f_char2, f_charbig)
64777 SELECT CAST(f_int1 AS CHAR),
64778 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
64779 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
64780 ORDER BY f_int1;
64781 DROP TRIGGER trg_3;
64782         
64783 # check trigger-12 success:     1
64784 DELETE FROM t1
64785 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
64786 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
64787 AND f_charbig = '####updated per insert trigger####';
64788 ANALYZE  TABLE t1;
64789 Table   Op      Msg_type        Msg_text
64790 test.t1 analyze status  OK
64791 CHECK    TABLE t1 EXTENDED;
64792 Table   Op      Msg_type        Msg_text
64793 test.t1 check   status  OK
64794 CHECKSUM TABLE t1 EXTENDED;
64795 Table   Checksum
64796 test.t1 <some_value>
64797 OPTIMIZE TABLE t1;
64798 Table   Op      Msg_type        Msg_text
64799 test.t1 optimize        status  OK
64800 # check layout success:    1
64801 REPAIR   TABLE t1 EXTENDED;
64802 Table   Op      Msg_type        Msg_text
64803 test.t1 repair  status  OK
64804 # check layout success:    1
64805 TRUNCATE t1;
64806         
64807 # check TRUNCATE success:       1
64808 # check layout success:    1
64809 # End usability test (inc/partition_check.inc)
64810 DROP TABLE t1;
64811 CREATE TABLE t1 (
64812 f_int1 INTEGER,
64813 f_int2 INTEGER,
64814 f_char1 CHAR(20),
64815 f_char2 CHAR(20),
64816 f_charbig VARCHAR(1000)
64819 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
64820 (PARTITION part_1 VALUES LESS THAN (0)
64821 (SUBPARTITION subpart11, SUBPARTITION subpart12),
64822 PARTITION part_2 VALUES LESS THAN (5)
64823 (SUBPARTITION subpart21, SUBPARTITION subpart22),
64824 PARTITION part_3 VALUES LESS THAN (10)
64825 (SUBPARTITION subpart31, SUBPARTITION subpart32),
64826 PARTITION part_4 VALUES LESS THAN (2147483646)
64827 (SUBPARTITION subpart41, SUBPARTITION subpart42));
64828 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
64829 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
64830 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
64831 ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
64832 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
64833 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
64834 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
64835 # Start usability test (inc/partition_check.inc)
64836 create_command
64837 SHOW CREATE TABLE t1;
64838 Table   Create Table
64839 t1      CREATE TABLE `t1` (
64840   `f_int1` int(11) DEFAULT NULL,
64841   `f_int2` int(11) DEFAULT NULL,
64842   `f_char1` char(20) DEFAULT NULL,
64843   `f_char2` char(20) DEFAULT NULL,
64844   `f_charbig` varchar(1000) DEFAULT NULL
64845 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
64846 /*!50100 PARTITION BY RANGE (f_int1)
64847 SUBPARTITION BY KEY (f_int1)
64848 (PARTITION part_1 VALUES LESS THAN (0)
64849  (SUBPARTITION subpart11 ENGINE = MyISAM,
64850   SUBPARTITION subpart12 ENGINE = MyISAM),
64851  PARTITION part_2 VALUES LESS THAN (5)
64852  (SUBPARTITION subpart21 ENGINE = MyISAM,
64853   SUBPARTITION subpart22 ENGINE = MyISAM),
64854  PARTITION part_3 VALUES LESS THAN (10)
64855  (SUBPARTITION subpart31 ENGINE = MyISAM,
64856   SUBPARTITION subpart32 ENGINE = MyISAM),
64857  PARTITION part_4 VALUES LESS THAN (2147483646)
64858  (SUBPARTITION subpart41 ENGINE = MyISAM,
64859   SUBPARTITION subpart42 ENGINE = MyISAM)) */
64861 unified filelist
64862 t1#P#part_1#SP#subpart11.MYD
64863 t1#P#part_1#SP#subpart11.MYI
64864 t1#P#part_1#SP#subpart12.MYD
64865 t1#P#part_1#SP#subpart12.MYI
64866 t1#P#part_2#SP#subpart21.MYD
64867 t1#P#part_2#SP#subpart21.MYI
64868 t1#P#part_2#SP#subpart22.MYD
64869 t1#P#part_2#SP#subpart22.MYI
64870 t1#P#part_3#SP#subpart31.MYD
64871 t1#P#part_3#SP#subpart31.MYI
64872 t1#P#part_3#SP#subpart32.MYD
64873 t1#P#part_3#SP#subpart32.MYI
64874 t1#P#part_4#SP#subpart41.MYD
64875 t1#P#part_4#SP#subpart41.MYI
64876 t1#P#part_4#SP#subpart42.MYD
64877 t1#P#part_4#SP#subpart42.MYI
64878 t1.frm
64879 t1.par
64881 # check prerequisites-1 success:    1
64882 # check COUNT(*) success:    1
64883 # check MIN/MAX(f_int1) success:    1
64884 # check MIN/MAX(f_int2) success:    1
64885 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
64886 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
64887 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
64888 WHERE f_int1 IN (2,3);
64889 # check prerequisites-3 success:    1
64890 DELETE FROM t1 WHERE f_charbig = 'delete me';
64891 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
64892 # check read via f_int1 success: 1
64893 # check read via f_int2 success: 1
64894         
64895 # check multiple-1 success:     1
64896 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
64897         
64898 # check multiple-2 success:     1
64899 INSERT INTO t1 SELECT * FROM t0_template
64900 WHERE MOD(f_int1,3) = 0;
64901         
64902 # check multiple-3 success:     1
64903 UPDATE t1 SET f_int1 = f_int1 + @max_row
64904 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
64905 AND @max_row_div2 + @max_row_div4;
64906         
64907 # check multiple-4 success:     1
64908 DELETE FROM t1
64909 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
64910 AND @max_row_div2 + @max_row_div4 + @max_row;
64911         
64912 # check multiple-5 success:     1
64913 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
64914 INSERT INTO t1
64915 SET f_int1 = @cur_value , f_int2 = @cur_value,
64916 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
64917 f_charbig = '#SINGLE#';
64918         
64919 # check single-1 success:       1
64920 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
64921 INSERT INTO t1
64922 SET f_int1 = @cur_value , f_int2 = @cur_value,
64923 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
64924 f_charbig = '#SINGLE#';
64925         
64926 # check single-2 success:       1
64927 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
64928 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
64929 UPDATE t1 SET f_int1 = @cur_value2
64930 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
64931         
64932 # check single-3 success:       1
64933 SET @cur_value1= -1;
64934 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
64935 UPDATE t1 SET f_int1 = @cur_value1
64936 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
64937         
64938 # check single-4 success:       1
64939 SELECT MAX(f_int1) INTO @cur_value FROM t1;
64940 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
64941         
64942 # check single-5 success:       1
64943 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
64944         
64945 # check single-6 success:       1
64946 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
64947 ERROR HY000: Table has no partition for value 2147483647
64948 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
64949 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
64950 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
64951 f_charbig = '#NULL#';
64952 INSERT INTO t1
64953 SET f_int1 = NULL , f_int2 = -@max_row,
64954 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
64955 f_charbig = '#NULL#';
64956 # check null success:    1
64957         
64958 # check null-1 success:         1
64959 UPDATE t1 SET f_int1 = -@max_row
64960 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
64961 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
64962         
64963 # check null-2 success:         1
64964 UPDATE t1 SET f_int1 = NULL
64965 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
64966 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
64967         
64968 # check null-3 success:         1
64969 DELETE FROM t1
64970 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
64971 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
64972         
64973 # check null-4 success:         1
64974 DELETE FROM t1
64975 WHERE f_int1 = 0 AND f_int2 = 0
64976 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
64977 AND f_charbig = '#NULL#';
64978 SET AUTOCOMMIT= 0;
64979 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
64980 SELECT f_int1, f_int1, '', '', 'was inserted'
64981 FROM t0_template source_tab
64982 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
64983         
64984 # check transactions-1 success:         1
64985 COMMIT WORK;
64986         
64987 # check transactions-2 success:         1
64988 ROLLBACK WORK;
64989         
64990 # check transactions-3 success:         1
64991 DELETE FROM t1 WHERE f_charbig = 'was inserted';
64992 COMMIT WORK;
64993 ROLLBACK WORK;
64994         
64995 # check transactions-4 success:         1
64996 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
64997 SELECT f_int1, f_int1, '', '', 'was inserted'
64998 FROM t0_template source_tab
64999 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
65000         
65001 # check transactions-5 success:         1
65002 ROLLBACK WORK;
65003 Warnings:
65004 Warning 1196    Some non-transactional changed tables couldn't be rolled back
65005         
65006 # check transactions-6 success:         1
65007 # INFO: Storage engine used for t1 seems to be not transactional.
65008 COMMIT;
65009         
65010 # check transactions-7 success:         1
65011 DELETE FROM t1 WHERE f_charbig = 'was inserted';
65012 COMMIT WORK;
65013 SET @@session.sql_mode = 'traditional';
65014 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
65015 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
65016 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
65017 '', '', 'was inserted' FROM t0_template
65018 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
65019 ERROR 22012: Division by 0
65020 COMMIT;
65021         
65022 # check transactions-8 success:         1
65023 # INFO: Storage engine used for t1 seems to be unable to revert
65024 #       changes made by the failing statement.
65025 SET @@session.sql_mode = '';
65026 SET AUTOCOMMIT= 1;
65027 DELETE FROM t1 WHERE f_charbig = 'was inserted';
65028 COMMIT WORK;
65029 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
65030         
65031 # check special-1 success:      1
65032 UPDATE t1 SET f_charbig = '';
65033         
65034 # check special-2 success:      1
65035 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
65036 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
65037 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
65038 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65039 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65040 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65041 'just inserted' FROM t0_template
65042 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65043 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
65044 BEGIN
65045 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65046 f_charbig = 'updated by trigger'
65047       WHERE f_int1 = new.f_int1;
65048 END|
65049 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65050 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
65051 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65052         
65053 # check trigger-1 success:      1
65054 DROP TRIGGER trg_1;
65055 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65056 f_int2 = CAST(f_char1 AS SIGNED INT),
65057 f_charbig = 'just inserted'
65058    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65059 DELETE FROM t0_aux
65060 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65061 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65062 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65063 'just inserted' FROM t0_template
65064 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65065 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
65066 BEGIN
65067 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65068 f_charbig = 'updated by trigger'
65069       WHERE f_int1 = new.f_int1;
65070 END|
65071 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65072 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
65073 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65074         
65075 # check trigger-2 success:      1
65076 DROP TRIGGER trg_1;
65077 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65078 f_int2 = CAST(f_char1 AS SIGNED INT),
65079 f_charbig = 'just inserted'
65080    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65081 DELETE FROM t0_aux
65082 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65083 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65084 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65085 'just inserted' FROM t0_template
65086 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65087 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
65088 BEGIN
65089 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65090 f_charbig = 'updated by trigger'
65091       WHERE f_int1 = new.f_int1;
65092 END|
65093 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
65094 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
65095         
65096 # check trigger-3 success:      1
65097 DROP TRIGGER trg_1;
65098 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65099 f_int2 = CAST(f_char1 AS SIGNED INT),
65100 f_charbig = 'just inserted'
65101    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65102 DELETE FROM t0_aux
65103 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65104 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65105 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65106 'just inserted' FROM t0_template
65107 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65108 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
65109 BEGIN
65110 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65111 f_charbig = 'updated by trigger'
65112       WHERE f_int1 = - old.f_int1;
65113 END|
65114 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
65115 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
65116         
65117 # check trigger-4 success:      1
65118 DROP TRIGGER trg_1;
65119 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65120 f_int2 = CAST(f_char1 AS SIGNED INT),
65121 f_charbig = 'just inserted'
65122    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65123 DELETE FROM t0_aux
65124 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65125 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65126 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65127 'just inserted' FROM t0_template
65128 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65129 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
65130 BEGIN
65131 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65132 f_charbig = 'updated by trigger'
65133       WHERE f_int1 = new.f_int1;
65134 END|
65135 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
65136 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
65137         
65138 # check trigger-5 success:      1
65139 DROP TRIGGER trg_1;
65140 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65141 f_int2 = CAST(f_char1 AS SIGNED INT),
65142 f_charbig = 'just inserted'
65143    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65144 DELETE FROM t0_aux
65145 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65146 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65147 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65148 'just inserted' FROM t0_template
65149 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65150 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
65151 BEGIN
65152 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65153 f_charbig = 'updated by trigger'
65154       WHERE f_int1 = - old.f_int1;
65155 END|
65156 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
65157 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
65158         
65159 # check trigger-6 success:      1
65160 DROP TRIGGER trg_1;
65161 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65162 f_int2 = CAST(f_char1 AS SIGNED INT),
65163 f_charbig = 'just inserted'
65164    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65165 DELETE FROM t0_aux
65166 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65167 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65168 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65169 'just inserted' FROM t0_template
65170 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65171 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
65172 BEGIN
65173 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65174 f_charbig = 'updated by trigger'
65175       WHERE f_int1 = - old.f_int1;
65176 END|
65177 DELETE FROM t0_aux
65178 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
65179         
65180 # check trigger-7 success:      1
65181 DROP TRIGGER trg_1;
65182 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65183 f_int2 = CAST(f_char1 AS SIGNED INT),
65184 f_charbig = 'just inserted'
65185    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65186 DELETE FROM t0_aux
65187 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65188 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65189 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65190 'just inserted' FROM t0_template
65191 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65192 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
65193 BEGIN
65194 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65195 f_charbig = 'updated by trigger'
65196       WHERE f_int1 = - old.f_int1;
65197 END|
65198 DELETE FROM t0_aux
65199 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
65200         
65201 # check trigger-8 success:      1
65202 DROP TRIGGER trg_1;
65203 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65204 f_int2 = CAST(f_char1 AS SIGNED INT),
65205 f_charbig = 'just inserted'
65206    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65207 DELETE FROM t0_aux
65208 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65209 DELETE FROM t1
65210 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65211 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
65212 BEGIN
65213 SET new.f_int1 = old.f_int1 + @max_row,
65214 new.f_int2 = old.f_int2 - @max_row,
65215 new.f_charbig = '####updated per update trigger####';
65216 END|
65217 UPDATE t1
65218 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
65219 f_charbig = '####updated per update statement itself####';
65220         
65221 # check trigger-9 success:      1
65222 DROP TRIGGER trg_2;
65223 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65224 f_int2 = CAST(f_char1 AS SIGNED INT),
65225 f_charbig = CONCAT('===',f_char1,'===');
65226 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
65227 BEGIN
65228 SET new.f_int1 = new.f_int1 + @max_row,
65229 new.f_int2 = new.f_int2 - @max_row,
65230 new.f_charbig = '####updated per update trigger####';
65231 END|
65232 UPDATE t1
65233 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
65234 f_charbig = '####updated per update statement itself####';
65235         
65236 # check trigger-10 success:     1
65237 DROP TRIGGER trg_2;
65238 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65239 f_int2 = CAST(f_char1 AS SIGNED INT),
65240 f_charbig = CONCAT('===',f_char1,'===');
65241 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
65242 BEGIN
65243 SET new.f_int1 = @my_max1 + @counter,
65244 new.f_int2 = @my_min2 - @counter,
65245 new.f_charbig = '####updated per insert trigger####';
65246 SET @counter = @counter + 1;
65247 END|
65248 SET @counter = 1;
65249 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
65250 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
65251 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
65252 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
65253 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
65254 ORDER BY f_int1;
65255 DROP TRIGGER trg_3;
65256         
65257 # check trigger-11 success:     1
65258 DELETE FROM t1
65259 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
65260 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
65261 AND f_charbig = '####updated per insert trigger####';
65262 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
65263 BEGIN
65264 SET new.f_int1 = @my_max1 + @counter,
65265 new.f_int2 = @my_min2 - @counter,
65266 new.f_charbig = '####updated per insert trigger####';
65267 SET @counter = @counter + 1;
65268 END|
65269 SET @counter = 1;
65270 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
65271 INSERT INTO t1 (f_char1, f_char2, f_charbig)
65272 SELECT CAST(f_int1 AS CHAR),
65273 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
65274 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
65275 ORDER BY f_int1;
65276 DROP TRIGGER trg_3;
65277         
65278 # check trigger-12 success:     1
65279 DELETE FROM t1
65280 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
65281 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
65282 AND f_charbig = '####updated per insert trigger####';
65283 ANALYZE  TABLE t1;
65284 Table   Op      Msg_type        Msg_text
65285 test.t1 analyze status  OK
65286 CHECK    TABLE t1 EXTENDED;
65287 Table   Op      Msg_type        Msg_text
65288 test.t1 check   status  OK
65289 CHECKSUM TABLE t1 EXTENDED;
65290 Table   Checksum
65291 test.t1 <some_value>
65292 OPTIMIZE TABLE t1;
65293 Table   Op      Msg_type        Msg_text
65294 test.t1 optimize        status  OK
65295 # check layout success:    1
65296 REPAIR   TABLE t1 EXTENDED;
65297 Table   Op      Msg_type        Msg_text
65298 test.t1 repair  status  OK
65299 # check layout success:    1
65300 TRUNCATE t1;
65301         
65302 # check TRUNCATE success:       1
65303 # check layout success:    1
65304 # End usability test (inc/partition_check.inc)
65305 DROP TABLE t1;
65306 CREATE TABLE t1 (
65307 f_int1 INTEGER,
65308 f_int2 INTEGER,
65309 f_char1 CHAR(20),
65310 f_char2 CHAR(20),
65311 f_charbig VARCHAR(1000)
65314 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
65315 (PARTITION part_1 VALUES IN (0)
65316 (SUBPARTITION sp11, SUBPARTITION sp12),
65317 PARTITION part_2 VALUES IN (1)
65318 (SUBPARTITION sp21, SUBPARTITION sp22),
65319 PARTITION part_3 VALUES IN (2)
65320 (SUBPARTITION sp31, SUBPARTITION sp32),
65321 PARTITION part_4 VALUES IN (NULL)
65322 (SUBPARTITION sp41, SUBPARTITION sp42));
65323 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
65324 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
65325 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
65326 ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
65327 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
65328 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
65329 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
65330 # Start usability test (inc/partition_check.inc)
65331 create_command
65332 SHOW CREATE TABLE t1;
65333 Table   Create Table
65334 t1      CREATE TABLE `t1` (
65335   `f_int1` int(11) DEFAULT NULL,
65336   `f_int2` int(11) DEFAULT NULL,
65337   `f_char1` char(20) DEFAULT NULL,
65338   `f_char2` char(20) DEFAULT NULL,
65339   `f_charbig` varchar(1000) DEFAULT NULL
65340 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
65341 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
65342 SUBPARTITION BY HASH (f_int1 + 1)
65343 (PARTITION part_1 VALUES IN (0)
65344  (SUBPARTITION sp11 ENGINE = MyISAM,
65345   SUBPARTITION sp12 ENGINE = MyISAM),
65346  PARTITION part_2 VALUES IN (1)
65347  (SUBPARTITION sp21 ENGINE = MyISAM,
65348   SUBPARTITION sp22 ENGINE = MyISAM),
65349  PARTITION part_3 VALUES IN (2)
65350  (SUBPARTITION sp31 ENGINE = MyISAM,
65351   SUBPARTITION sp32 ENGINE = MyISAM),
65352  PARTITION part_4 VALUES IN (NULL)
65353  (SUBPARTITION sp41 ENGINE = MyISAM,
65354   SUBPARTITION sp42 ENGINE = MyISAM)) */
65356 unified filelist
65357 t1#P#part_1#SP#sp11.MYD
65358 t1#P#part_1#SP#sp11.MYI
65359 t1#P#part_1#SP#sp12.MYD
65360 t1#P#part_1#SP#sp12.MYI
65361 t1#P#part_2#SP#sp21.MYD
65362 t1#P#part_2#SP#sp21.MYI
65363 t1#P#part_2#SP#sp22.MYD
65364 t1#P#part_2#SP#sp22.MYI
65365 t1#P#part_3#SP#sp31.MYD
65366 t1#P#part_3#SP#sp31.MYI
65367 t1#P#part_3#SP#sp32.MYD
65368 t1#P#part_3#SP#sp32.MYI
65369 t1#P#part_4#SP#sp41.MYD
65370 t1#P#part_4#SP#sp41.MYI
65371 t1#P#part_4#SP#sp42.MYD
65372 t1#P#part_4#SP#sp42.MYI
65373 t1.frm
65374 t1.par
65376 # check prerequisites-1 success:    1
65377 # check COUNT(*) success:    1
65378 # check MIN/MAX(f_int1) success:    1
65379 # check MIN/MAX(f_int2) success:    1
65380 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
65381 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
65382 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
65383 WHERE f_int1 IN (2,3);
65384 # check prerequisites-3 success:    1
65385 DELETE FROM t1 WHERE f_charbig = 'delete me';
65386 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
65387 # check read via f_int1 success: 1
65388 # check read via f_int2 success: 1
65389         
65390 # check multiple-1 success:     1
65391 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
65392         
65393 # check multiple-2 success:     1
65394 INSERT INTO t1 SELECT * FROM t0_template
65395 WHERE MOD(f_int1,3) = 0;
65396         
65397 # check multiple-3 success:     1
65398 UPDATE t1 SET f_int1 = f_int1 + @max_row
65399 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
65400 AND @max_row_div2 + @max_row_div4;
65401         
65402 # check multiple-4 success:     1
65403 DELETE FROM t1
65404 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
65405 AND @max_row_div2 + @max_row_div4 + @max_row;
65406         
65407 # check multiple-5 success:     1
65408 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
65409 INSERT INTO t1
65410 SET f_int1 = @cur_value , f_int2 = @cur_value,
65411 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
65412 f_charbig = '#SINGLE#';
65413         
65414 # check single-1 success:       1
65415 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
65416 INSERT INTO t1
65417 SET f_int1 = @cur_value , f_int2 = @cur_value,
65418 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
65419 f_charbig = '#SINGLE#';
65420         
65421 # check single-2 success:       1
65422 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
65423 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
65424 UPDATE t1 SET f_int1 = @cur_value2
65425 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
65426         
65427 # check single-3 success:       1
65428 SET @cur_value1= -1;
65429 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
65430 UPDATE t1 SET f_int1 = @cur_value1
65431 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
65432         
65433 # check single-4 success:       1
65434 SELECT MAX(f_int1) INTO @cur_value FROM t1;
65435 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
65436         
65437 # check single-5 success:       1
65438 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
65439         
65440 # check single-6 success:       1
65441 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
65442         
65443 # check single-7 success:       1
65444 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
65445 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
65446 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
65447 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
65448 f_charbig = '#NULL#';
65449 INSERT INTO t1
65450 SET f_int1 = NULL , f_int2 = -@max_row,
65451 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
65452 f_charbig = '#NULL#';
65453 # check null success:    1
65454         
65455 # check null-1 success:         1
65456 UPDATE t1 SET f_int1 = -@max_row
65457 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
65458 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
65459         
65460 # check null-2 success:         1
65461 UPDATE t1 SET f_int1 = NULL
65462 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
65463 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
65464         
65465 # check null-3 success:         1
65466 DELETE FROM t1
65467 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
65468 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
65469         
65470 # check null-4 success:         1
65471 DELETE FROM t1
65472 WHERE f_int1 = 0 AND f_int2 = 0
65473 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
65474 AND f_charbig = '#NULL#';
65475 SET AUTOCOMMIT= 0;
65476 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
65477 SELECT f_int1, f_int1, '', '', 'was inserted'
65478 FROM t0_template source_tab
65479 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
65480         
65481 # check transactions-1 success:         1
65482 COMMIT WORK;
65483         
65484 # check transactions-2 success:         1
65485 ROLLBACK WORK;
65486         
65487 # check transactions-3 success:         1
65488 DELETE FROM t1 WHERE f_charbig = 'was inserted';
65489 COMMIT WORK;
65490 ROLLBACK WORK;
65491         
65492 # check transactions-4 success:         1
65493 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
65494 SELECT f_int1, f_int1, '', '', 'was inserted'
65495 FROM t0_template source_tab
65496 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
65497         
65498 # check transactions-5 success:         1
65499 ROLLBACK WORK;
65500 Warnings:
65501 Warning 1196    Some non-transactional changed tables couldn't be rolled back
65502         
65503 # check transactions-6 success:         1
65504 # INFO: Storage engine used for t1 seems to be not transactional.
65505 COMMIT;
65506         
65507 # check transactions-7 success:         1
65508 DELETE FROM t1 WHERE f_charbig = 'was inserted';
65509 COMMIT WORK;
65510 SET @@session.sql_mode = 'traditional';
65511 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
65512 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
65513 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
65514 '', '', 'was inserted' FROM t0_template
65515 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
65516 ERROR 22012: Division by 0
65517 COMMIT;
65518         
65519 # check transactions-8 success:         1
65520 # INFO: Storage engine used for t1 seems to be unable to revert
65521 #       changes made by the failing statement.
65522 SET @@session.sql_mode = '';
65523 SET AUTOCOMMIT= 1;
65524 DELETE FROM t1 WHERE f_charbig = 'was inserted';
65525 COMMIT WORK;
65526 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
65527         
65528 # check special-1 success:      1
65529 UPDATE t1 SET f_charbig = '';
65530         
65531 # check special-2 success:      1
65532 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
65533 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
65534 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
65535 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65536 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65537 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65538 'just inserted' FROM t0_template
65539 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65540 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
65541 BEGIN
65542 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65543 f_charbig = 'updated by trigger'
65544       WHERE f_int1 = new.f_int1;
65545 END|
65546 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65547 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
65548 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65549         
65550 # check trigger-1 success:      1
65551 DROP TRIGGER trg_1;
65552 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65553 f_int2 = CAST(f_char1 AS SIGNED INT),
65554 f_charbig = 'just inserted'
65555    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65556 DELETE FROM t0_aux
65557 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65558 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65559 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65560 'just inserted' FROM t0_template
65561 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65562 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
65563 BEGIN
65564 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65565 f_charbig = 'updated by trigger'
65566       WHERE f_int1 = new.f_int1;
65567 END|
65568 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65569 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
65570 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65571         
65572 # check trigger-2 success:      1
65573 DROP TRIGGER trg_1;
65574 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65575 f_int2 = CAST(f_char1 AS SIGNED INT),
65576 f_charbig = 'just inserted'
65577    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65578 DELETE FROM t0_aux
65579 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65580 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65581 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65582 'just inserted' FROM t0_template
65583 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65584 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
65585 BEGIN
65586 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65587 f_charbig = 'updated by trigger'
65588       WHERE f_int1 = new.f_int1;
65589 END|
65590 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
65591 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
65592         
65593 # check trigger-3 success:      1
65594 DROP TRIGGER trg_1;
65595 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65596 f_int2 = CAST(f_char1 AS SIGNED INT),
65597 f_charbig = 'just inserted'
65598    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65599 DELETE FROM t0_aux
65600 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65601 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65602 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65603 'just inserted' FROM t0_template
65604 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65605 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
65606 BEGIN
65607 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65608 f_charbig = 'updated by trigger'
65609       WHERE f_int1 = - old.f_int1;
65610 END|
65611 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
65612 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
65613         
65614 # check trigger-4 success:      1
65615 DROP TRIGGER trg_1;
65616 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65617 f_int2 = CAST(f_char1 AS SIGNED INT),
65618 f_charbig = 'just inserted'
65619    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65620 DELETE FROM t0_aux
65621 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65622 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65623 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65624 'just inserted' FROM t0_template
65625 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65626 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
65627 BEGIN
65628 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65629 f_charbig = 'updated by trigger'
65630       WHERE f_int1 = new.f_int1;
65631 END|
65632 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
65633 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
65634         
65635 # check trigger-5 success:      1
65636 DROP TRIGGER trg_1;
65637 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65638 f_int2 = CAST(f_char1 AS SIGNED INT),
65639 f_charbig = 'just inserted'
65640    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65641 DELETE FROM t0_aux
65642 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65643 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65644 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65645 'just inserted' FROM t0_template
65646 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65647 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
65648 BEGIN
65649 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65650 f_charbig = 'updated by trigger'
65651       WHERE f_int1 = - old.f_int1;
65652 END|
65653 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
65654 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
65655         
65656 # check trigger-6 success:      1
65657 DROP TRIGGER trg_1;
65658 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65659 f_int2 = CAST(f_char1 AS SIGNED INT),
65660 f_charbig = 'just inserted'
65661    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65662 DELETE FROM t0_aux
65663 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65664 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65665 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65666 'just inserted' FROM t0_template
65667 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65668 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
65669 BEGIN
65670 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65671 f_charbig = 'updated by trigger'
65672       WHERE f_int1 = - old.f_int1;
65673 END|
65674 DELETE FROM t0_aux
65675 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
65676         
65677 # check trigger-7 success:      1
65678 DROP TRIGGER trg_1;
65679 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65680 f_int2 = CAST(f_char1 AS SIGNED INT),
65681 f_charbig = 'just inserted'
65682    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65683 DELETE FROM t0_aux
65684 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65685 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
65686 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
65687 'just inserted' FROM t0_template
65688 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65689 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
65690 BEGIN
65691 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
65692 f_charbig = 'updated by trigger'
65693       WHERE f_int1 = - old.f_int1;
65694 END|
65695 DELETE FROM t0_aux
65696 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
65697         
65698 # check trigger-8 success:      1
65699 DROP TRIGGER trg_1;
65700 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65701 f_int2 = CAST(f_char1 AS SIGNED INT),
65702 f_charbig = 'just inserted'
65703    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
65704 DELETE FROM t0_aux
65705 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65706 DELETE FROM t1
65707 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
65708 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
65709 BEGIN
65710 SET new.f_int1 = old.f_int1 + @max_row,
65711 new.f_int2 = old.f_int2 - @max_row,
65712 new.f_charbig = '####updated per update trigger####';
65713 END|
65714 UPDATE t1
65715 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
65716 f_charbig = '####updated per update statement itself####';
65717         
65718 # check trigger-9 success:      1
65719 DROP TRIGGER trg_2;
65720 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65721 f_int2 = CAST(f_char1 AS SIGNED INT),
65722 f_charbig = CONCAT('===',f_char1,'===');
65723 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
65724 BEGIN
65725 SET new.f_int1 = new.f_int1 + @max_row,
65726 new.f_int2 = new.f_int2 - @max_row,
65727 new.f_charbig = '####updated per update trigger####';
65728 END|
65729 UPDATE t1
65730 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
65731 f_charbig = '####updated per update statement itself####';
65732         
65733 # check trigger-10 success:     1
65734 DROP TRIGGER trg_2;
65735 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
65736 f_int2 = CAST(f_char1 AS SIGNED INT),
65737 f_charbig = CONCAT('===',f_char1,'===');
65738 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
65739 BEGIN
65740 SET new.f_int1 = @my_max1 + @counter,
65741 new.f_int2 = @my_min2 - @counter,
65742 new.f_charbig = '####updated per insert trigger####';
65743 SET @counter = @counter + 1;
65744 END|
65745 SET @counter = 1;
65746 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
65747 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
65748 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
65749 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
65750 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
65751 ORDER BY f_int1;
65752 DROP TRIGGER trg_3;
65753         
65754 # check trigger-11 success:     1
65755 DELETE FROM t1
65756 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
65757 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
65758 AND f_charbig = '####updated per insert trigger####';
65759 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
65760 BEGIN
65761 SET new.f_int1 = @my_max1 + @counter,
65762 new.f_int2 = @my_min2 - @counter,
65763 new.f_charbig = '####updated per insert trigger####';
65764 SET @counter = @counter + 1;
65765 END|
65766 SET @counter = 1;
65767 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
65768 INSERT INTO t1 (f_char1, f_char2, f_charbig)
65769 SELECT CAST(f_int1 AS CHAR),
65770 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
65771 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
65772 ORDER BY f_int1;
65773 DROP TRIGGER trg_3;
65774         
65775 # check trigger-12 success:     1
65776 DELETE FROM t1
65777 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
65778 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
65779 AND f_charbig = '####updated per insert trigger####';
65780 ANALYZE  TABLE t1;
65781 Table   Op      Msg_type        Msg_text
65782 test.t1 analyze status  OK
65783 CHECK    TABLE t1 EXTENDED;
65784 Table   Op      Msg_type        Msg_text
65785 test.t1 check   status  OK
65786 CHECKSUM TABLE t1 EXTENDED;
65787 Table   Checksum
65788 test.t1 <some_value>
65789 OPTIMIZE TABLE t1;
65790 Table   Op      Msg_type        Msg_text
65791 test.t1 optimize        status  OK
65792 # check layout success:    1
65793 REPAIR   TABLE t1 EXTENDED;
65794 Table   Op      Msg_type        Msg_text
65795 test.t1 repair  status  OK
65796 # check layout success:    1
65797 TRUNCATE t1;
65798         
65799 # check TRUNCATE success:       1
65800 # check layout success:    1
65801 # End usability test (inc/partition_check.inc)
65802 DROP TABLE t1;
65803 CREATE TABLE t1 (
65804 f_int1 INTEGER,
65805 f_int2 INTEGER,
65806 f_char1 CHAR(20),
65807 f_char2 CHAR(20),
65808 f_charbig VARCHAR(1000)
65811 PARTITION BY LIST(ABS(MOD(f_int1,2)))
65812 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
65813 (PARTITION part_1 VALUES IN (0),
65814  PARTITION part_2 VALUES IN (1),
65815  PARTITION part_3 VALUES IN (NULL));
65816 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
65817 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
65818 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
65819 ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
65820 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
65821 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
65822 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
65823 # Start usability test (inc/partition_check.inc)
65824 create_command
65825 SHOW CREATE TABLE t1;
65826 Table   Create Table
65827 t1      CREATE TABLE `t1` (
65828   `f_int1` int(11) DEFAULT NULL,
65829   `f_int2` int(11) DEFAULT NULL,
65830   `f_char1` char(20) DEFAULT NULL,
65831   `f_char2` char(20) DEFAULT NULL,
65832   `f_charbig` varchar(1000) DEFAULT NULL
65833 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
65834 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
65835 SUBPARTITION BY KEY (f_int1)
65836 SUBPARTITIONS 3
65837 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
65838  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
65839  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
65841 unified filelist
65842 t1#P#part_1#SP#part_1sp0.MYD
65843 t1#P#part_1#SP#part_1sp0.MYI
65844 t1#P#part_1#SP#part_1sp1.MYD
65845 t1#P#part_1#SP#part_1sp1.MYI
65846 t1#P#part_1#SP#part_1sp2.MYD
65847 t1#P#part_1#SP#part_1sp2.MYI
65848 t1#P#part_2#SP#part_2sp0.MYD
65849 t1#P#part_2#SP#part_2sp0.MYI
65850 t1#P#part_2#SP#part_2sp1.MYD
65851 t1#P#part_2#SP#part_2sp1.MYI
65852 t1#P#part_2#SP#part_2sp2.MYD
65853 t1#P#part_2#SP#part_2sp2.MYI
65854 t1#P#part_3#SP#part_3sp0.MYD
65855 t1#P#part_3#SP#part_3sp0.MYI
65856 t1#P#part_3#SP#part_3sp1.MYD
65857 t1#P#part_3#SP#part_3sp1.MYI
65858 t1#P#part_3#SP#part_3sp2.MYD
65859 t1#P#part_3#SP#part_3sp2.MYI
65860 t1.frm
65861 t1.par
65863 # check prerequisites-1 success:    1
65864 # check COUNT(*) success:    1
65865 # check MIN/MAX(f_int1) success:    1
65866 # check MIN/MAX(f_int2) success:    1
65867 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
65868 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
65869 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
65870 WHERE f_int1 IN (2,3);
65871 # check prerequisites-3 success:    1
65872 DELETE FROM t1 WHERE f_charbig = 'delete me';
65873 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
65874 # check read via f_int1 success: 1
65875 # check read via f_int2 success: 1
65876         
65877 # check multiple-1 success:     1
65878 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
65879         
65880 # check multiple-2 success:     1
65881 INSERT INTO t1 SELECT * FROM t0_template
65882 WHERE MOD(f_int1,3) = 0;
65883         
65884 # check multiple-3 success:     1
65885 UPDATE t1 SET f_int1 = f_int1 + @max_row
65886 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
65887 AND @max_row_div2 + @max_row_div4;
65888         
65889 # check multiple-4 success:     1
65890 DELETE FROM t1
65891 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
65892 AND @max_row_div2 + @max_row_div4 + @max_row;
65893         
65894 # check multiple-5 success:     1
65895 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
65896 INSERT INTO t1
65897 SET f_int1 = @cur_value , f_int2 = @cur_value,
65898 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
65899 f_charbig = '#SINGLE#';
65900         
65901 # check single-1 success:       1
65902 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
65903 INSERT INTO t1
65904 SET f_int1 = @cur_value , f_int2 = @cur_value,
65905 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
65906 f_charbig = '#SINGLE#';
65907         
65908 # check single-2 success:       1
65909 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
65910 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
65911 UPDATE t1 SET f_int1 = @cur_value2
65912 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
65913         
65914 # check single-3 success:       1
65915 SET @cur_value1= -1;
65916 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
65917 UPDATE t1 SET f_int1 = @cur_value1
65918 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
65919         
65920 # check single-4 success:       1
65921 SELECT MAX(f_int1) INTO @cur_value FROM t1;
65922 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
65923         
65924 # check single-5 success:       1
65925 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
65926         
65927 # check single-6 success:       1
65928 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
65929         
65930 # check single-7 success:       1
65931 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
65932 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
65933 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
65934 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
65935 f_charbig = '#NULL#';
65936 INSERT INTO t1
65937 SET f_int1 = NULL , f_int2 = -@max_row,
65938 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
65939 f_charbig = '#NULL#';
65940 # check null success:    1
65941         
65942 # check null-1 success:         1
65943 UPDATE t1 SET f_int1 = -@max_row
65944 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
65945 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
65946         
65947 # check null-2 success:         1
65948 UPDATE t1 SET f_int1 = NULL
65949 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
65950 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
65951         
65952 # check null-3 success:         1
65953 DELETE FROM t1
65954 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
65955 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
65956         
65957 # check null-4 success:         1
65958 DELETE FROM t1
65959 WHERE f_int1 = 0 AND f_int2 = 0
65960 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
65961 AND f_charbig = '#NULL#';
65962 SET AUTOCOMMIT= 0;
65963 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
65964 SELECT f_int1, f_int1, '', '', 'was inserted'
65965 FROM t0_template source_tab
65966 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
65967         
65968 # check transactions-1 success:         1
65969 COMMIT WORK;
65970         
65971 # check transactions-2 success:         1
65972 ROLLBACK WORK;
65973         
65974 # check transactions-3 success:         1
65975 DELETE FROM t1 WHERE f_charbig = 'was inserted';
65976 COMMIT WORK;
65977 ROLLBACK WORK;
65978         
65979 # check transactions-4 success:         1
65980 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
65981 SELECT f_int1, f_int1, '', '', 'was inserted'
65982 FROM t0_template source_tab
65983 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
65984         
65985 # check transactions-5 success:         1
65986 ROLLBACK WORK;
65987 Warnings:
65988 Warning 1196    Some non-transactional changed tables couldn't be rolled back
65989         
65990 # check transactions-6 success:         1
65991 # INFO: Storage engine used for t1 seems to be not transactional.
65992 COMMIT;
65993         
65994 # check transactions-7 success:         1
65995 DELETE FROM t1 WHERE f_charbig = 'was inserted';
65996 COMMIT WORK;
65997 SET @@session.sql_mode = 'traditional';
65998 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
65999 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
66000 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
66001 '', '', 'was inserted' FROM t0_template
66002 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
66003 ERROR 22012: Division by 0
66004 COMMIT;
66005         
66006 # check transactions-8 success:         1
66007 # INFO: Storage engine used for t1 seems to be unable to revert
66008 #       changes made by the failing statement.
66009 SET @@session.sql_mode = '';
66010 SET AUTOCOMMIT= 1;
66011 DELETE FROM t1 WHERE f_charbig = 'was inserted';
66012 COMMIT WORK;
66013 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
66014         
66015 # check special-1 success:      1
66016 UPDATE t1 SET f_charbig = '';
66017         
66018 # check special-2 success:      1
66019 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
66020 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66021 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
66022 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66023 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66024 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66025 'just inserted' FROM t0_template
66026 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66027 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
66028 BEGIN
66029 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66030 f_charbig = 'updated by trigger'
66031       WHERE f_int1 = new.f_int1;
66032 END|
66033 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66034 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
66035 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66036         
66037 # check trigger-1 success:      1
66038 DROP TRIGGER trg_1;
66039 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66040 f_int2 = CAST(f_char1 AS SIGNED INT),
66041 f_charbig = 'just inserted'
66042    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66043 DELETE FROM t0_aux
66044 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66045 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66046 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66047 'just inserted' FROM t0_template
66048 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66049 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
66050 BEGIN
66051 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66052 f_charbig = 'updated by trigger'
66053       WHERE f_int1 = new.f_int1;
66054 END|
66055 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66056 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
66057 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66058         
66059 # check trigger-2 success:      1
66060 DROP TRIGGER trg_1;
66061 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66062 f_int2 = CAST(f_char1 AS SIGNED INT),
66063 f_charbig = 'just inserted'
66064    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66065 DELETE FROM t0_aux
66066 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66067 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66068 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66069 'just inserted' FROM t0_template
66070 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66071 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
66072 BEGIN
66073 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66074 f_charbig = 'updated by trigger'
66075       WHERE f_int1 = new.f_int1;
66076 END|
66077 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
66078 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
66079         
66080 # check trigger-3 success:      1
66081 DROP TRIGGER trg_1;
66082 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66083 f_int2 = CAST(f_char1 AS SIGNED INT),
66084 f_charbig = 'just inserted'
66085    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66086 DELETE FROM t0_aux
66087 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66088 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66089 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66090 'just inserted' FROM t0_template
66091 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66092 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
66093 BEGIN
66094 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66095 f_charbig = 'updated by trigger'
66096       WHERE f_int1 = - old.f_int1;
66097 END|
66098 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
66099 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
66100         
66101 # check trigger-4 success:      1
66102 DROP TRIGGER trg_1;
66103 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66104 f_int2 = CAST(f_char1 AS SIGNED INT),
66105 f_charbig = 'just inserted'
66106    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66107 DELETE FROM t0_aux
66108 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66109 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66110 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66111 'just inserted' FROM t0_template
66112 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66113 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
66114 BEGIN
66115 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66116 f_charbig = 'updated by trigger'
66117       WHERE f_int1 = new.f_int1;
66118 END|
66119 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
66120 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
66121         
66122 # check trigger-5 success:      1
66123 DROP TRIGGER trg_1;
66124 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66125 f_int2 = CAST(f_char1 AS SIGNED INT),
66126 f_charbig = 'just inserted'
66127    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66128 DELETE FROM t0_aux
66129 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66130 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66131 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66132 'just inserted' FROM t0_template
66133 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66134 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
66135 BEGIN
66136 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66137 f_charbig = 'updated by trigger'
66138       WHERE f_int1 = - old.f_int1;
66139 END|
66140 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
66141 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
66142         
66143 # check trigger-6 success:      1
66144 DROP TRIGGER trg_1;
66145 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66146 f_int2 = CAST(f_char1 AS SIGNED INT),
66147 f_charbig = 'just inserted'
66148    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66149 DELETE FROM t0_aux
66150 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66151 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66152 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66153 'just inserted' FROM t0_template
66154 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66155 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
66156 BEGIN
66157 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66158 f_charbig = 'updated by trigger'
66159       WHERE f_int1 = - old.f_int1;
66160 END|
66161 DELETE FROM t0_aux
66162 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
66163         
66164 # check trigger-7 success:      1
66165 DROP TRIGGER trg_1;
66166 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66167 f_int2 = CAST(f_char1 AS SIGNED INT),
66168 f_charbig = 'just inserted'
66169    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66170 DELETE FROM t0_aux
66171 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66172 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66173 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66174 'just inserted' FROM t0_template
66175 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66176 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
66177 BEGIN
66178 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66179 f_charbig = 'updated by trigger'
66180       WHERE f_int1 = - old.f_int1;
66181 END|
66182 DELETE FROM t0_aux
66183 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
66184         
66185 # check trigger-8 success:      1
66186 DROP TRIGGER trg_1;
66187 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66188 f_int2 = CAST(f_char1 AS SIGNED INT),
66189 f_charbig = 'just inserted'
66190    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66191 DELETE FROM t0_aux
66192 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66193 DELETE FROM t1
66194 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66195 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
66196 BEGIN
66197 SET new.f_int1 = old.f_int1 + @max_row,
66198 new.f_int2 = old.f_int2 - @max_row,
66199 new.f_charbig = '####updated per update trigger####';
66200 END|
66201 UPDATE t1
66202 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
66203 f_charbig = '####updated per update statement itself####';
66204         
66205 # check trigger-9 success:      1
66206 DROP TRIGGER trg_2;
66207 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66208 f_int2 = CAST(f_char1 AS SIGNED INT),
66209 f_charbig = CONCAT('===',f_char1,'===');
66210 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
66211 BEGIN
66212 SET new.f_int1 = new.f_int1 + @max_row,
66213 new.f_int2 = new.f_int2 - @max_row,
66214 new.f_charbig = '####updated per update trigger####';
66215 END|
66216 UPDATE t1
66217 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
66218 f_charbig = '####updated per update statement itself####';
66219         
66220 # check trigger-10 success:     1
66221 DROP TRIGGER trg_2;
66222 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66223 f_int2 = CAST(f_char1 AS SIGNED INT),
66224 f_charbig = CONCAT('===',f_char1,'===');
66225 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
66226 BEGIN
66227 SET new.f_int1 = @my_max1 + @counter,
66228 new.f_int2 = @my_min2 - @counter,
66229 new.f_charbig = '####updated per insert trigger####';
66230 SET @counter = @counter + 1;
66231 END|
66232 SET @counter = 1;
66233 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
66234 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
66235 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
66236 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
66237 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
66238 ORDER BY f_int1;
66239 DROP TRIGGER trg_3;
66240         
66241 # check trigger-11 success:     1
66242 DELETE FROM t1
66243 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
66244 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
66245 AND f_charbig = '####updated per insert trigger####';
66246 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
66247 BEGIN
66248 SET new.f_int1 = @my_max1 + @counter,
66249 new.f_int2 = @my_min2 - @counter,
66250 new.f_charbig = '####updated per insert trigger####';
66251 SET @counter = @counter + 1;
66252 END|
66253 SET @counter = 1;
66254 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
66255 INSERT INTO t1 (f_char1, f_char2, f_charbig)
66256 SELECT CAST(f_int1 AS CHAR),
66257 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
66258 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
66259 ORDER BY f_int1;
66260 DROP TRIGGER trg_3;
66261         
66262 # check trigger-12 success:     1
66263 DELETE FROM t1
66264 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
66265 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
66266 AND f_charbig = '####updated per insert trigger####';
66267 ANALYZE  TABLE t1;
66268 Table   Op      Msg_type        Msg_text
66269 test.t1 analyze status  OK
66270 CHECK    TABLE t1 EXTENDED;
66271 Table   Op      Msg_type        Msg_text
66272 test.t1 check   status  OK
66273 CHECKSUM TABLE t1 EXTENDED;
66274 Table   Checksum
66275 test.t1 <some_value>
66276 OPTIMIZE TABLE t1;
66277 Table   Op      Msg_type        Msg_text
66278 test.t1 optimize        status  OK
66279 # check layout success:    1
66280 REPAIR   TABLE t1 EXTENDED;
66281 Table   Op      Msg_type        Msg_text
66282 test.t1 repair  status  OK
66283 # check layout success:    1
66284 TRUNCATE t1;
66285         
66286 # check TRUNCATE success:       1
66287 # check layout success:    1
66288 # End usability test (inc/partition_check.inc)
66289 DROP TABLE t1;
66290 #  4.3 ALTER ... REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
66291 DROP TABLE IF EXISTS t1;
66292 CREATE TABLE t1 (
66293 f_int1 INTEGER,
66294 f_int2 INTEGER,
66295 f_char1 CHAR(20),
66296 f_char2 CHAR(20),
66297 f_charbig VARCHAR(1000)
66300 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
66301 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66302 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66303 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66304 ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
66305 ERROR HY000: Error in list of partitions to REBUILD
66306 DROP TABLE t1;
66307 CREATE TABLE t1 (
66308 f_int1 INTEGER,
66309 f_int2 INTEGER,
66310 f_char1 CHAR(20),
66311 f_char2 CHAR(20),
66312 f_charbig VARCHAR(1000)
66315 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
66316 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66317 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66318 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66319 ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
66320 ERROR HY000: Error in list of partitions to REBUILD
66321 DROP TABLE t1;
66322 CREATE TABLE t1 (
66323 f_int1 INTEGER,
66324 f_int2 INTEGER,
66325 f_char1 CHAR(20),
66326 f_char2 CHAR(20),
66327 f_charbig VARCHAR(1000)
66330 PARTITION BY LIST(MOD(f_int1,4))
66331 (PARTITION part_3 VALUES IN (-3),
66332 PARTITION part_2 VALUES IN (-2),
66333 PARTITION part_1 VALUES IN (-1),
66334 PARTITION part_N VALUES IN (NULL),
66335 PARTITION part0 VALUES IN (0),
66336 PARTITION part1 VALUES IN (1),
66337 PARTITION part2 VALUES IN (2),
66338 PARTITION part3 VALUES IN (3));
66339 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66340 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66341 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66342 ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
66343 ERROR HY000: Error in list of partitions to REBUILD
66344 DROP TABLE t1;
66345 CREATE TABLE t1 (
66346 f_int1 INTEGER,
66347 f_int2 INTEGER,
66348 f_char1 CHAR(20),
66349 f_char2 CHAR(20),
66350 f_charbig VARCHAR(1000)
66353 PARTITION BY RANGE(f_int1)
66354 (PARTITION parta VALUES LESS THAN (0),
66355 PARTITION part_1 VALUES LESS THAN (5),
66356 PARTITION part_2 VALUES LESS THAN (10),
66357 PARTITION part_3 VALUES LESS THAN (10 + 5),
66358 PARTITION part_4 VALUES LESS THAN (20),
66359 PARTITION part_5 VALUES LESS THAN (2147483646));
66360 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66361 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66362 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66363 ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
66364 ERROR HY000: Error in list of partitions to REBUILD
66365 DROP TABLE t1;
66366 CREATE TABLE t1 (
66367 f_int1 INTEGER,
66368 f_int2 INTEGER,
66369 f_char1 CHAR(20),
66370 f_char2 CHAR(20),
66371 f_charbig VARCHAR(1000)
66374 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
66375 (PARTITION part_1 VALUES LESS THAN (0),
66376 PARTITION part_2 VALUES LESS THAN (5),
66377 PARTITION part_3 VALUES LESS THAN (10),
66378 PARTITION part_4 VALUES LESS THAN (2147483646));
66379 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66380 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66381 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66382 ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
66383 ERROR HY000: Error in list of partitions to REBUILD
66384 DROP TABLE t1;
66385 CREATE TABLE t1 (
66386 f_int1 INTEGER,
66387 f_int2 INTEGER,
66388 f_char1 CHAR(20),
66389 f_char2 CHAR(20),
66390 f_charbig VARCHAR(1000)
66393 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
66394 (PARTITION part_1 VALUES LESS THAN (0)
66395 (SUBPARTITION subpart11, SUBPARTITION subpart12),
66396 PARTITION part_2 VALUES LESS THAN (5)
66397 (SUBPARTITION subpart21, SUBPARTITION subpart22),
66398 PARTITION part_3 VALUES LESS THAN (10)
66399 (SUBPARTITION subpart31, SUBPARTITION subpart32),
66400 PARTITION part_4 VALUES LESS THAN (2147483646)
66401 (SUBPARTITION subpart41, SUBPARTITION subpart42));
66402 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66403 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66404 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66405 ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
66406 ERROR HY000: Error in list of partitions to REBUILD
66407 DROP TABLE t1;
66408 CREATE TABLE t1 (
66409 f_int1 INTEGER,
66410 f_int2 INTEGER,
66411 f_char1 CHAR(20),
66412 f_char2 CHAR(20),
66413 f_charbig VARCHAR(1000)
66416 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
66417 (PARTITION part_1 VALUES IN (0)
66418 (SUBPARTITION sp11, SUBPARTITION sp12),
66419 PARTITION part_2 VALUES IN (1)
66420 (SUBPARTITION sp21, SUBPARTITION sp22),
66421 PARTITION part_3 VALUES IN (2)
66422 (SUBPARTITION sp31, SUBPARTITION sp32),
66423 PARTITION part_4 VALUES IN (NULL)
66424 (SUBPARTITION sp41, SUBPARTITION sp42));
66425 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66426 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66427 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66428 ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
66429 ERROR HY000: Error in list of partitions to REBUILD
66430 DROP TABLE t1;
66431 CREATE TABLE t1 (
66432 f_int1 INTEGER,
66433 f_int2 INTEGER,
66434 f_char1 CHAR(20),
66435 f_char2 CHAR(20),
66436 f_charbig VARCHAR(1000)
66439 PARTITION BY LIST(ABS(MOD(f_int1,2)))
66440 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
66441 (PARTITION part_1 VALUES IN (0),
66442  PARTITION part_2 VALUES IN (1),
66443  PARTITION part_3 VALUES IN (NULL));
66444 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66445 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66446 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66447 ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
66448 ERROR HY000: Error in list of partitions to REBUILD
66449 DROP TABLE t1;
66450 #  4.4 ALTER ... REBUILD PARTITION part_1,part_1,part_1;
66451 DROP TABLE IF EXISTS t1;
66452 CREATE TABLE t1 (
66453 f_int1 INTEGER,
66454 f_int2 INTEGER,
66455 f_char1 CHAR(20),
66456 f_char2 CHAR(20),
66457 f_charbig VARCHAR(1000)
66460 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
66461 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66462 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66463 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66464 ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
66465 ERROR HY000: Error in list of partitions to REBUILD
66466 DROP TABLE t1;
66467 CREATE TABLE t1 (
66468 f_int1 INTEGER,
66469 f_int2 INTEGER,
66470 f_char1 CHAR(20),
66471 f_char2 CHAR(20),
66472 f_charbig VARCHAR(1000)
66475 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
66476 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66477 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66478 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66479 ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
66480 ERROR HY000: Error in list of partitions to REBUILD
66481 DROP TABLE t1;
66482 CREATE TABLE t1 (
66483 f_int1 INTEGER,
66484 f_int2 INTEGER,
66485 f_char1 CHAR(20),
66486 f_char2 CHAR(20),
66487 f_charbig VARCHAR(1000)
66490 PARTITION BY LIST(MOD(f_int1,4))
66491 (PARTITION part_3 VALUES IN (-3),
66492 PARTITION part_2 VALUES IN (-2),
66493 PARTITION part_1 VALUES IN (-1),
66494 PARTITION part_N VALUES IN (NULL),
66495 PARTITION part0 VALUES IN (0),
66496 PARTITION part1 VALUES IN (1),
66497 PARTITION part2 VALUES IN (2),
66498 PARTITION part3 VALUES IN (3));
66499 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66500 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66501 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66502 ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
66503 ERROR HY000: Error in list of partitions to REBUILD
66504 DROP TABLE t1;
66505 CREATE TABLE t1 (
66506 f_int1 INTEGER,
66507 f_int2 INTEGER,
66508 f_char1 CHAR(20),
66509 f_char2 CHAR(20),
66510 f_charbig VARCHAR(1000)
66513 PARTITION BY RANGE(f_int1)
66514 (PARTITION parta VALUES LESS THAN (0),
66515 PARTITION part_1 VALUES LESS THAN (5),
66516 PARTITION part_2 VALUES LESS THAN (10),
66517 PARTITION part_3 VALUES LESS THAN (10 + 5),
66518 PARTITION part_4 VALUES LESS THAN (20),
66519 PARTITION part_5 VALUES LESS THAN (2147483646));
66520 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66521 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66522 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66523 ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
66524 ERROR HY000: Error in list of partitions to REBUILD
66525 DROP TABLE t1;
66526 CREATE TABLE t1 (
66527 f_int1 INTEGER,
66528 f_int2 INTEGER,
66529 f_char1 CHAR(20),
66530 f_char2 CHAR(20),
66531 f_charbig VARCHAR(1000)
66534 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
66535 (PARTITION part_1 VALUES LESS THAN (0),
66536 PARTITION part_2 VALUES LESS THAN (5),
66537 PARTITION part_3 VALUES LESS THAN (10),
66538 PARTITION part_4 VALUES LESS THAN (2147483646));
66539 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66540 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66541 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66542 ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
66543 ERROR HY000: Error in list of partitions to REBUILD
66544 DROP TABLE t1;
66545 CREATE TABLE t1 (
66546 f_int1 INTEGER,
66547 f_int2 INTEGER,
66548 f_char1 CHAR(20),
66549 f_char2 CHAR(20),
66550 f_charbig VARCHAR(1000)
66553 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
66554 (PARTITION part_1 VALUES LESS THAN (0)
66555 (SUBPARTITION subpart11, SUBPARTITION subpart12),
66556 PARTITION part_2 VALUES LESS THAN (5)
66557 (SUBPARTITION subpart21, SUBPARTITION subpart22),
66558 PARTITION part_3 VALUES LESS THAN (10)
66559 (SUBPARTITION subpart31, SUBPARTITION subpart32),
66560 PARTITION part_4 VALUES LESS THAN (2147483646)
66561 (SUBPARTITION subpart41, SUBPARTITION subpart42));
66562 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66563 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66564 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66565 ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
66566 ERROR HY000: Error in list of partitions to REBUILD
66567 DROP TABLE t1;
66568 CREATE TABLE t1 (
66569 f_int1 INTEGER,
66570 f_int2 INTEGER,
66571 f_char1 CHAR(20),
66572 f_char2 CHAR(20),
66573 f_charbig VARCHAR(1000)
66576 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
66577 (PARTITION part_1 VALUES IN (0)
66578 (SUBPARTITION sp11, SUBPARTITION sp12),
66579 PARTITION part_2 VALUES IN (1)
66580 (SUBPARTITION sp21, SUBPARTITION sp22),
66581 PARTITION part_3 VALUES IN (2)
66582 (SUBPARTITION sp31, SUBPARTITION sp32),
66583 PARTITION part_4 VALUES IN (NULL)
66584 (SUBPARTITION sp41, SUBPARTITION sp42));
66585 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66586 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66587 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66588 ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
66589 ERROR HY000: Error in list of partitions to REBUILD
66590 DROP TABLE t1;
66591 CREATE TABLE t1 (
66592 f_int1 INTEGER,
66593 f_int2 INTEGER,
66594 f_char1 CHAR(20),
66595 f_char2 CHAR(20),
66596 f_charbig VARCHAR(1000)
66599 PARTITION BY LIST(ABS(MOD(f_int1,2)))
66600 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
66601 (PARTITION part_1 VALUES IN (0),
66602  PARTITION part_2 VALUES IN (1),
66603  PARTITION part_3 VALUES IN (NULL));
66604 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66605 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66606 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66607 ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
66608 ERROR HY000: Error in list of partitions to REBUILD
66609 DROP TABLE t1;
66610 #  4.5 ALTER ... REBUILD PARTITION ALL;
66611 DROP TABLE IF EXISTS t1;
66612 CREATE TABLE t1 (
66613 f_int1 INTEGER,
66614 f_int2 INTEGER,
66615 f_char1 CHAR(20),
66616 f_char2 CHAR(20),
66617 f_charbig VARCHAR(1000)
66620 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
66621 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66622 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66623 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
66624 ALTER TABLE t1 REBUILD PARTITION ALL;
66625 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66626 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
66627 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
66628 # Start usability test (inc/partition_check.inc)
66629 create_command
66630 SHOW CREATE TABLE t1;
66631 Table   Create Table
66632 t1      CREATE TABLE `t1` (
66633   `f_int1` int(11) DEFAULT NULL,
66634   `f_int2` int(11) DEFAULT NULL,
66635   `f_char1` char(20) DEFAULT NULL,
66636   `f_char2` char(20) DEFAULT NULL,
66637   `f_charbig` varchar(1000) DEFAULT NULL
66638 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
66639 /*!50100 PARTITION BY HASH (f_int1)
66640 (PARTITION part_1 ENGINE = MyISAM,
66641  PARTITION part_2 ENGINE = MyISAM) */
66643 unified filelist
66644 t1#P#part_1.MYD
66645 t1#P#part_1.MYI
66646 t1#P#part_2.MYD
66647 t1#P#part_2.MYI
66648 t1.frm
66649 t1.par
66651 # check prerequisites-1 success:    1
66652 # check COUNT(*) success:    1
66653 # check MIN/MAX(f_int1) success:    1
66654 # check MIN/MAX(f_int2) success:    1
66655 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
66656 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
66657 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
66658 WHERE f_int1 IN (2,3);
66659 # check prerequisites-3 success:    1
66660 DELETE FROM t1 WHERE f_charbig = 'delete me';
66661 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
66662 # check read via f_int1 success: 1
66663 # check read via f_int2 success: 1
66664         
66665 # check multiple-1 success:     1
66666 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
66667         
66668 # check multiple-2 success:     1
66669 INSERT INTO t1 SELECT * FROM t0_template
66670 WHERE MOD(f_int1,3) = 0;
66671         
66672 # check multiple-3 success:     1
66673 UPDATE t1 SET f_int1 = f_int1 + @max_row
66674 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
66675 AND @max_row_div2 + @max_row_div4;
66676         
66677 # check multiple-4 success:     1
66678 DELETE FROM t1
66679 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
66680 AND @max_row_div2 + @max_row_div4 + @max_row;
66681         
66682 # check multiple-5 success:     1
66683 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
66684 INSERT INTO t1
66685 SET f_int1 = @cur_value , f_int2 = @cur_value,
66686 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
66687 f_charbig = '#SINGLE#';
66688         
66689 # check single-1 success:       1
66690 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
66691 INSERT INTO t1
66692 SET f_int1 = @cur_value , f_int2 = @cur_value,
66693 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
66694 f_charbig = '#SINGLE#';
66695         
66696 # check single-2 success:       1
66697 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
66698 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
66699 UPDATE t1 SET f_int1 = @cur_value2
66700 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
66701         
66702 # check single-3 success:       1
66703 SET @cur_value1= -1;
66704 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
66705 UPDATE t1 SET f_int1 = @cur_value1
66706 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
66707         
66708 # check single-4 success:       1
66709 SELECT MAX(f_int1) INTO @cur_value FROM t1;
66710 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
66711         
66712 # check single-5 success:       1
66713 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
66714         
66715 # check single-6 success:       1
66716 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
66717         
66718 # check single-7 success:       1
66719 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
66720 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
66721 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
66722 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
66723 f_charbig = '#NULL#';
66724 INSERT INTO t1
66725 SET f_int1 = NULL , f_int2 = -@max_row,
66726 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
66727 f_charbig = '#NULL#';
66728 # check null success:    1
66729         
66730 # check null-1 success:         1
66731 UPDATE t1 SET f_int1 = -@max_row
66732 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
66733 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
66734         
66735 # check null-2 success:         1
66736 UPDATE t1 SET f_int1 = NULL
66737 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
66738 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
66739         
66740 # check null-3 success:         1
66741 DELETE FROM t1
66742 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
66743 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
66744         
66745 # check null-4 success:         1
66746 DELETE FROM t1
66747 WHERE f_int1 = 0 AND f_int2 = 0
66748 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
66749 AND f_charbig = '#NULL#';
66750 SET AUTOCOMMIT= 0;
66751 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
66752 SELECT f_int1, f_int1, '', '', 'was inserted'
66753 FROM t0_template source_tab
66754 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
66755         
66756 # check transactions-1 success:         1
66757 COMMIT WORK;
66758         
66759 # check transactions-2 success:         1
66760 ROLLBACK WORK;
66761         
66762 # check transactions-3 success:         1
66763 DELETE FROM t1 WHERE f_charbig = 'was inserted';
66764 COMMIT WORK;
66765 ROLLBACK WORK;
66766         
66767 # check transactions-4 success:         1
66768 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
66769 SELECT f_int1, f_int1, '', '', 'was inserted'
66770 FROM t0_template source_tab
66771 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
66772         
66773 # check transactions-5 success:         1
66774 ROLLBACK WORK;
66775 Warnings:
66776 Warning 1196    Some non-transactional changed tables couldn't be rolled back
66777         
66778 # check transactions-6 success:         1
66779 # INFO: Storage engine used for t1 seems to be not transactional.
66780 COMMIT;
66781         
66782 # check transactions-7 success:         1
66783 DELETE FROM t1 WHERE f_charbig = 'was inserted';
66784 COMMIT WORK;
66785 SET @@session.sql_mode = 'traditional';
66786 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
66787 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
66788 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
66789 '', '', 'was inserted' FROM t0_template
66790 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
66791 ERROR 22012: Division by 0
66792 COMMIT;
66793         
66794 # check transactions-8 success:         1
66795 # INFO: Storage engine used for t1 seems to be unable to revert
66796 #       changes made by the failing statement.
66797 SET @@session.sql_mode = '';
66798 SET AUTOCOMMIT= 1;
66799 DELETE FROM t1 WHERE f_charbig = 'was inserted';
66800 COMMIT WORK;
66801 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
66802         
66803 # check special-1 success:      1
66804 UPDATE t1 SET f_charbig = '';
66805         
66806 # check special-2 success:      1
66807 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
66808 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
66809 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
66810 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66811 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66812 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66813 'just inserted' FROM t0_template
66814 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66815 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
66816 BEGIN
66817 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66818 f_charbig = 'updated by trigger'
66819       WHERE f_int1 = new.f_int1;
66820 END|
66821 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66822 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
66823 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66824         
66825 # check trigger-1 success:      1
66826 DROP TRIGGER trg_1;
66827 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66828 f_int2 = CAST(f_char1 AS SIGNED INT),
66829 f_charbig = 'just inserted'
66830    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66831 DELETE FROM t0_aux
66832 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66833 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66834 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66835 'just inserted' FROM t0_template
66836 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66837 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
66838 BEGIN
66839 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66840 f_charbig = 'updated by trigger'
66841       WHERE f_int1 = new.f_int1;
66842 END|
66843 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66844 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
66845 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66846         
66847 # check trigger-2 success:      1
66848 DROP TRIGGER trg_1;
66849 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66850 f_int2 = CAST(f_char1 AS SIGNED INT),
66851 f_charbig = 'just inserted'
66852    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66853 DELETE FROM t0_aux
66854 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66855 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66856 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66857 'just inserted' FROM t0_template
66858 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66859 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
66860 BEGIN
66861 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66862 f_charbig = 'updated by trigger'
66863       WHERE f_int1 = new.f_int1;
66864 END|
66865 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
66866 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
66867         
66868 # check trigger-3 success:      1
66869 DROP TRIGGER trg_1;
66870 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66871 f_int2 = CAST(f_char1 AS SIGNED INT),
66872 f_charbig = 'just inserted'
66873    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66874 DELETE FROM t0_aux
66875 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66876 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66877 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66878 'just inserted' FROM t0_template
66879 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66880 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
66881 BEGIN
66882 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66883 f_charbig = 'updated by trigger'
66884       WHERE f_int1 = - old.f_int1;
66885 END|
66886 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
66887 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
66888         
66889 # check trigger-4 success:      1
66890 DROP TRIGGER trg_1;
66891 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66892 f_int2 = CAST(f_char1 AS SIGNED INT),
66893 f_charbig = 'just inserted'
66894    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66895 DELETE FROM t0_aux
66896 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66897 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66898 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66899 'just inserted' FROM t0_template
66900 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66901 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
66902 BEGIN
66903 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66904 f_charbig = 'updated by trigger'
66905       WHERE f_int1 = new.f_int1;
66906 END|
66907 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
66908 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
66909         
66910 # check trigger-5 success:      1
66911 DROP TRIGGER trg_1;
66912 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66913 f_int2 = CAST(f_char1 AS SIGNED INT),
66914 f_charbig = 'just inserted'
66915    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66916 DELETE FROM t0_aux
66917 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66918 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66919 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66920 'just inserted' FROM t0_template
66921 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66922 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
66923 BEGIN
66924 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66925 f_charbig = 'updated by trigger'
66926       WHERE f_int1 = - old.f_int1;
66927 END|
66928 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
66929 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
66930         
66931 # check trigger-6 success:      1
66932 DROP TRIGGER trg_1;
66933 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66934 f_int2 = CAST(f_char1 AS SIGNED INT),
66935 f_charbig = 'just inserted'
66936    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66937 DELETE FROM t0_aux
66938 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66939 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66940 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66941 'just inserted' FROM t0_template
66942 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66943 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
66944 BEGIN
66945 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66946 f_charbig = 'updated by trigger'
66947       WHERE f_int1 = - old.f_int1;
66948 END|
66949 DELETE FROM t0_aux
66950 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
66951         
66952 # check trigger-7 success:      1
66953 DROP TRIGGER trg_1;
66954 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66955 f_int2 = CAST(f_char1 AS SIGNED INT),
66956 f_charbig = 'just inserted'
66957    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66958 DELETE FROM t0_aux
66959 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66960 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
66961 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
66962 'just inserted' FROM t0_template
66963 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66964 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
66965 BEGIN
66966 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
66967 f_charbig = 'updated by trigger'
66968       WHERE f_int1 = - old.f_int1;
66969 END|
66970 DELETE FROM t0_aux
66971 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
66972         
66973 # check trigger-8 success:      1
66974 DROP TRIGGER trg_1;
66975 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66976 f_int2 = CAST(f_char1 AS SIGNED INT),
66977 f_charbig = 'just inserted'
66978    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
66979 DELETE FROM t0_aux
66980 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66981 DELETE FROM t1
66982 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
66983 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
66984 BEGIN
66985 SET new.f_int1 = old.f_int1 + @max_row,
66986 new.f_int2 = old.f_int2 - @max_row,
66987 new.f_charbig = '####updated per update trigger####';
66988 END|
66989 UPDATE t1
66990 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
66991 f_charbig = '####updated per update statement itself####';
66992         
66993 # check trigger-9 success:      1
66994 DROP TRIGGER trg_2;
66995 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
66996 f_int2 = CAST(f_char1 AS SIGNED INT),
66997 f_charbig = CONCAT('===',f_char1,'===');
66998 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
66999 BEGIN
67000 SET new.f_int1 = new.f_int1 + @max_row,
67001 new.f_int2 = new.f_int2 - @max_row,
67002 new.f_charbig = '####updated per update trigger####';
67003 END|
67004 UPDATE t1
67005 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
67006 f_charbig = '####updated per update statement itself####';
67007         
67008 # check trigger-10 success:     1
67009 DROP TRIGGER trg_2;
67010 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67011 f_int2 = CAST(f_char1 AS SIGNED INT),
67012 f_charbig = CONCAT('===',f_char1,'===');
67013 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
67014 BEGIN
67015 SET new.f_int1 = @my_max1 + @counter,
67016 new.f_int2 = @my_min2 - @counter,
67017 new.f_charbig = '####updated per insert trigger####';
67018 SET @counter = @counter + 1;
67019 END|
67020 SET @counter = 1;
67021 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
67022 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
67023 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
67024 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
67025 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
67026 ORDER BY f_int1;
67027 DROP TRIGGER trg_3;
67028         
67029 # check trigger-11 success:     1
67030 DELETE FROM t1
67031 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
67032 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
67033 AND f_charbig = '####updated per insert trigger####';
67034 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
67035 BEGIN
67036 SET new.f_int1 = @my_max1 + @counter,
67037 new.f_int2 = @my_min2 - @counter,
67038 new.f_charbig = '####updated per insert trigger####';
67039 SET @counter = @counter + 1;
67040 END|
67041 SET @counter = 1;
67042 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
67043 INSERT INTO t1 (f_char1, f_char2, f_charbig)
67044 SELECT CAST(f_int1 AS CHAR),
67045 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
67046 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
67047 ORDER BY f_int1;
67048 DROP TRIGGER trg_3;
67049         
67050 # check trigger-12 success:     1
67051 DELETE FROM t1
67052 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
67053 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
67054 AND f_charbig = '####updated per insert trigger####';
67055 ANALYZE  TABLE t1;
67056 Table   Op      Msg_type        Msg_text
67057 test.t1 analyze status  OK
67058 CHECK    TABLE t1 EXTENDED;
67059 Table   Op      Msg_type        Msg_text
67060 test.t1 check   status  OK
67061 CHECKSUM TABLE t1 EXTENDED;
67062 Table   Checksum
67063 test.t1 <some_value>
67064 OPTIMIZE TABLE t1;
67065 Table   Op      Msg_type        Msg_text
67066 test.t1 optimize        status  OK
67067 # check layout success:    1
67068 REPAIR   TABLE t1 EXTENDED;
67069 Table   Op      Msg_type        Msg_text
67070 test.t1 repair  status  OK
67071 # check layout success:    1
67072 TRUNCATE t1;
67073         
67074 # check TRUNCATE success:       1
67075 # check layout success:    1
67076 # End usability test (inc/partition_check.inc)
67077 DROP TABLE t1;
67078 CREATE TABLE t1 (
67079 f_int1 INTEGER,
67080 f_int2 INTEGER,
67081 f_char1 CHAR(20),
67082 f_char2 CHAR(20),
67083 f_charbig VARCHAR(1000)
67086 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
67087 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
67088 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
67089 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
67090 ALTER TABLE t1 REBUILD PARTITION ALL;
67091 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
67092 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
67093 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
67094 # Start usability test (inc/partition_check.inc)
67095 create_command
67096 SHOW CREATE TABLE t1;
67097 Table   Create Table
67098 t1      CREATE TABLE `t1` (
67099   `f_int1` int(11) DEFAULT NULL,
67100   `f_int2` int(11) DEFAULT NULL,
67101   `f_char1` char(20) DEFAULT NULL,
67102   `f_char2` char(20) DEFAULT NULL,
67103   `f_charbig` varchar(1000) DEFAULT NULL
67104 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
67105 /*!50100 PARTITION BY KEY (f_int1)
67106 (PARTITION part_1 ENGINE = MyISAM,
67107  PARTITION part_2 ENGINE = MyISAM,
67108  PARTITION part_3 ENGINE = MyISAM,
67109  PARTITION part_4 ENGINE = MyISAM,
67110  PARTITION part_5 ENGINE = MyISAM) */
67112 unified filelist
67113 t1#P#part_1.MYD
67114 t1#P#part_1.MYI
67115 t1#P#part_2.MYD
67116 t1#P#part_2.MYI
67117 t1#P#part_3.MYD
67118 t1#P#part_3.MYI
67119 t1#P#part_4.MYD
67120 t1#P#part_4.MYI
67121 t1#P#part_5.MYD
67122 t1#P#part_5.MYI
67123 t1.frm
67124 t1.par
67126 # check prerequisites-1 success:    1
67127 # check COUNT(*) success:    1
67128 # check MIN/MAX(f_int1) success:    1
67129 # check MIN/MAX(f_int2) success:    1
67130 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
67131 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
67132 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
67133 WHERE f_int1 IN (2,3);
67134 # check prerequisites-3 success:    1
67135 DELETE FROM t1 WHERE f_charbig = 'delete me';
67136 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
67137 # check read via f_int1 success: 1
67138 # check read via f_int2 success: 1
67139         
67140 # check multiple-1 success:     1
67141 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
67142         
67143 # check multiple-2 success:     1
67144 INSERT INTO t1 SELECT * FROM t0_template
67145 WHERE MOD(f_int1,3) = 0;
67146         
67147 # check multiple-3 success:     1
67148 UPDATE t1 SET f_int1 = f_int1 + @max_row
67149 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
67150 AND @max_row_div2 + @max_row_div4;
67151         
67152 # check multiple-4 success:     1
67153 DELETE FROM t1
67154 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
67155 AND @max_row_div2 + @max_row_div4 + @max_row;
67156         
67157 # check multiple-5 success:     1
67158 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
67159 INSERT INTO t1
67160 SET f_int1 = @cur_value , f_int2 = @cur_value,
67161 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
67162 f_charbig = '#SINGLE#';
67163         
67164 # check single-1 success:       1
67165 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
67166 INSERT INTO t1
67167 SET f_int1 = @cur_value , f_int2 = @cur_value,
67168 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
67169 f_charbig = '#SINGLE#';
67170         
67171 # check single-2 success:       1
67172 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
67173 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
67174 UPDATE t1 SET f_int1 = @cur_value2
67175 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
67176         
67177 # check single-3 success:       1
67178 SET @cur_value1= -1;
67179 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
67180 UPDATE t1 SET f_int1 = @cur_value1
67181 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
67182         
67183 # check single-4 success:       1
67184 SELECT MAX(f_int1) INTO @cur_value FROM t1;
67185 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
67186         
67187 # check single-5 success:       1
67188 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
67189         
67190 # check single-6 success:       1
67191 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
67192         
67193 # check single-7 success:       1
67194 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
67195 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
67196 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
67197 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
67198 f_charbig = '#NULL#';
67199 INSERT INTO t1
67200 SET f_int1 = NULL , f_int2 = -@max_row,
67201 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
67202 f_charbig = '#NULL#';
67203 # check null success:    1
67204         
67205 # check null-1 success:         1
67206 UPDATE t1 SET f_int1 = -@max_row
67207 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
67208 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
67209         
67210 # check null-2 success:         1
67211 UPDATE t1 SET f_int1 = NULL
67212 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
67213 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
67214         
67215 # check null-3 success:         1
67216 DELETE FROM t1
67217 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
67218 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
67219         
67220 # check null-4 success:         1
67221 DELETE FROM t1
67222 WHERE f_int1 = 0 AND f_int2 = 0
67223 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
67224 AND f_charbig = '#NULL#';
67225 SET AUTOCOMMIT= 0;
67226 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
67227 SELECT f_int1, f_int1, '', '', 'was inserted'
67228 FROM t0_template source_tab
67229 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
67230         
67231 # check transactions-1 success:         1
67232 COMMIT WORK;
67233         
67234 # check transactions-2 success:         1
67235 ROLLBACK WORK;
67236         
67237 # check transactions-3 success:         1
67238 DELETE FROM t1 WHERE f_charbig = 'was inserted';
67239 COMMIT WORK;
67240 ROLLBACK WORK;
67241         
67242 # check transactions-4 success:         1
67243 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
67244 SELECT f_int1, f_int1, '', '', 'was inserted'
67245 FROM t0_template source_tab
67246 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
67247         
67248 # check transactions-5 success:         1
67249 ROLLBACK WORK;
67250 Warnings:
67251 Warning 1196    Some non-transactional changed tables couldn't be rolled back
67252         
67253 # check transactions-6 success:         1
67254 # INFO: Storage engine used for t1 seems to be not transactional.
67255 COMMIT;
67256         
67257 # check transactions-7 success:         1
67258 DELETE FROM t1 WHERE f_charbig = 'was inserted';
67259 COMMIT WORK;
67260 SET @@session.sql_mode = 'traditional';
67261 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
67262 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
67263 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
67264 '', '', 'was inserted' FROM t0_template
67265 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
67266 ERROR 22012: Division by 0
67267 COMMIT;
67268         
67269 # check transactions-8 success:         1
67270 # INFO: Storage engine used for t1 seems to be unable to revert
67271 #       changes made by the failing statement.
67272 SET @@session.sql_mode = '';
67273 SET AUTOCOMMIT= 1;
67274 DELETE FROM t1 WHERE f_charbig = 'was inserted';
67275 COMMIT WORK;
67276 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
67277         
67278 # check special-1 success:      1
67279 UPDATE t1 SET f_charbig = '';
67280         
67281 # check special-2 success:      1
67282 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
67283 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
67284 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
67285 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67286 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67287 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67288 'just inserted' FROM t0_template
67289 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67290 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
67291 BEGIN
67292 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67293 f_charbig = 'updated by trigger'
67294       WHERE f_int1 = new.f_int1;
67295 END|
67296 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67297 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
67298 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67299         
67300 # check trigger-1 success:      1
67301 DROP TRIGGER trg_1;
67302 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67303 f_int2 = CAST(f_char1 AS SIGNED INT),
67304 f_charbig = 'just inserted'
67305    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67306 DELETE FROM t0_aux
67307 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67308 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67309 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67310 'just inserted' FROM t0_template
67311 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67312 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
67313 BEGIN
67314 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67315 f_charbig = 'updated by trigger'
67316       WHERE f_int1 = new.f_int1;
67317 END|
67318 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67319 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
67320 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67321         
67322 # check trigger-2 success:      1
67323 DROP TRIGGER trg_1;
67324 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67325 f_int2 = CAST(f_char1 AS SIGNED INT),
67326 f_charbig = 'just inserted'
67327    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67328 DELETE FROM t0_aux
67329 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67330 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67331 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67332 'just inserted' FROM t0_template
67333 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67334 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
67335 BEGIN
67336 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67337 f_charbig = 'updated by trigger'
67338       WHERE f_int1 = new.f_int1;
67339 END|
67340 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
67341 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
67342         
67343 # check trigger-3 success:      1
67344 DROP TRIGGER trg_1;
67345 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67346 f_int2 = CAST(f_char1 AS SIGNED INT),
67347 f_charbig = 'just inserted'
67348    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67349 DELETE FROM t0_aux
67350 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67351 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67352 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67353 'just inserted' FROM t0_template
67354 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67355 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
67356 BEGIN
67357 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67358 f_charbig = 'updated by trigger'
67359       WHERE f_int1 = - old.f_int1;
67360 END|
67361 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
67362 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
67363         
67364 # check trigger-4 success:      1
67365 DROP TRIGGER trg_1;
67366 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67367 f_int2 = CAST(f_char1 AS SIGNED INT),
67368 f_charbig = 'just inserted'
67369    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67370 DELETE FROM t0_aux
67371 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67372 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67373 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67374 'just inserted' FROM t0_template
67375 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67376 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
67377 BEGIN
67378 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67379 f_charbig = 'updated by trigger'
67380       WHERE f_int1 = new.f_int1;
67381 END|
67382 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
67383 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
67384         
67385 # check trigger-5 success:      1
67386 DROP TRIGGER trg_1;
67387 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67388 f_int2 = CAST(f_char1 AS SIGNED INT),
67389 f_charbig = 'just inserted'
67390    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67391 DELETE FROM t0_aux
67392 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67393 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67394 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67395 'just inserted' FROM t0_template
67396 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67397 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
67398 BEGIN
67399 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67400 f_charbig = 'updated by trigger'
67401       WHERE f_int1 = - old.f_int1;
67402 END|
67403 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
67404 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
67405         
67406 # check trigger-6 success:      1
67407 DROP TRIGGER trg_1;
67408 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67409 f_int2 = CAST(f_char1 AS SIGNED INT),
67410 f_charbig = 'just inserted'
67411    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67412 DELETE FROM t0_aux
67413 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67414 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67415 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67416 'just inserted' FROM t0_template
67417 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67418 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
67419 BEGIN
67420 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67421 f_charbig = 'updated by trigger'
67422       WHERE f_int1 = - old.f_int1;
67423 END|
67424 DELETE FROM t0_aux
67425 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
67426         
67427 # check trigger-7 success:      1
67428 DROP TRIGGER trg_1;
67429 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67430 f_int2 = CAST(f_char1 AS SIGNED INT),
67431 f_charbig = 'just inserted'
67432    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67433 DELETE FROM t0_aux
67434 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67435 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67436 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67437 'just inserted' FROM t0_template
67438 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67439 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
67440 BEGIN
67441 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67442 f_charbig = 'updated by trigger'
67443       WHERE f_int1 = - old.f_int1;
67444 END|
67445 DELETE FROM t0_aux
67446 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
67447         
67448 # check trigger-8 success:      1
67449 DROP TRIGGER trg_1;
67450 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67451 f_int2 = CAST(f_char1 AS SIGNED INT),
67452 f_charbig = 'just inserted'
67453    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67454 DELETE FROM t0_aux
67455 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67456 DELETE FROM t1
67457 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67458 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
67459 BEGIN
67460 SET new.f_int1 = old.f_int1 + @max_row,
67461 new.f_int2 = old.f_int2 - @max_row,
67462 new.f_charbig = '####updated per update trigger####';
67463 END|
67464 UPDATE t1
67465 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
67466 f_charbig = '####updated per update statement itself####';
67467         
67468 # check trigger-9 success:      1
67469 DROP TRIGGER trg_2;
67470 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67471 f_int2 = CAST(f_char1 AS SIGNED INT),
67472 f_charbig = CONCAT('===',f_char1,'===');
67473 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
67474 BEGIN
67475 SET new.f_int1 = new.f_int1 + @max_row,
67476 new.f_int2 = new.f_int2 - @max_row,
67477 new.f_charbig = '####updated per update trigger####';
67478 END|
67479 UPDATE t1
67480 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
67481 f_charbig = '####updated per update statement itself####';
67482         
67483 # check trigger-10 success:     1
67484 DROP TRIGGER trg_2;
67485 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67486 f_int2 = CAST(f_char1 AS SIGNED INT),
67487 f_charbig = CONCAT('===',f_char1,'===');
67488 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
67489 BEGIN
67490 SET new.f_int1 = @my_max1 + @counter,
67491 new.f_int2 = @my_min2 - @counter,
67492 new.f_charbig = '####updated per insert trigger####';
67493 SET @counter = @counter + 1;
67494 END|
67495 SET @counter = 1;
67496 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
67497 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
67498 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
67499 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
67500 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
67501 ORDER BY f_int1;
67502 DROP TRIGGER trg_3;
67503         
67504 # check trigger-11 success:     1
67505 DELETE FROM t1
67506 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
67507 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
67508 AND f_charbig = '####updated per insert trigger####';
67509 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
67510 BEGIN
67511 SET new.f_int1 = @my_max1 + @counter,
67512 new.f_int2 = @my_min2 - @counter,
67513 new.f_charbig = '####updated per insert trigger####';
67514 SET @counter = @counter + 1;
67515 END|
67516 SET @counter = 1;
67517 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
67518 INSERT INTO t1 (f_char1, f_char2, f_charbig)
67519 SELECT CAST(f_int1 AS CHAR),
67520 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
67521 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
67522 ORDER BY f_int1;
67523 DROP TRIGGER trg_3;
67524         
67525 # check trigger-12 success:     1
67526 DELETE FROM t1
67527 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
67528 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
67529 AND f_charbig = '####updated per insert trigger####';
67530 ANALYZE  TABLE t1;
67531 Table   Op      Msg_type        Msg_text
67532 test.t1 analyze status  OK
67533 CHECK    TABLE t1 EXTENDED;
67534 Table   Op      Msg_type        Msg_text
67535 test.t1 check   status  OK
67536 CHECKSUM TABLE t1 EXTENDED;
67537 Table   Checksum
67538 test.t1 <some_value>
67539 OPTIMIZE TABLE t1;
67540 Table   Op      Msg_type        Msg_text
67541 test.t1 optimize        status  OK
67542 # check layout success:    1
67543 REPAIR   TABLE t1 EXTENDED;
67544 Table   Op      Msg_type        Msg_text
67545 test.t1 repair  status  OK
67546 # check layout success:    1
67547 TRUNCATE t1;
67548         
67549 # check TRUNCATE success:       1
67550 # check layout success:    1
67551 # End usability test (inc/partition_check.inc)
67552 DROP TABLE t1;
67553 CREATE TABLE t1 (
67554 f_int1 INTEGER,
67555 f_int2 INTEGER,
67556 f_char1 CHAR(20),
67557 f_char2 CHAR(20),
67558 f_charbig VARCHAR(1000)
67561 PARTITION BY LIST(MOD(f_int1,4))
67562 (PARTITION part_3 VALUES IN (-3),
67563 PARTITION part_2 VALUES IN (-2),
67564 PARTITION part_1 VALUES IN (-1),
67565 PARTITION part_N VALUES IN (NULL),
67566 PARTITION part0 VALUES IN (0),
67567 PARTITION part1 VALUES IN (1),
67568 PARTITION part2 VALUES IN (2),
67569 PARTITION part3 VALUES IN (3));
67570 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
67571 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
67572 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
67573 ALTER TABLE t1 REBUILD PARTITION ALL;
67574 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
67575 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
67576 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
67577 # Start usability test (inc/partition_check.inc)
67578 create_command
67579 SHOW CREATE TABLE t1;
67580 Table   Create Table
67581 t1      CREATE TABLE `t1` (
67582   `f_int1` int(11) DEFAULT NULL,
67583   `f_int2` int(11) DEFAULT NULL,
67584   `f_char1` char(20) DEFAULT NULL,
67585   `f_char2` char(20) DEFAULT NULL,
67586   `f_charbig` varchar(1000) DEFAULT NULL
67587 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
67588 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
67589 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
67590  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
67591  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
67592  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
67593  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
67594  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
67595  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
67596  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
67598 unified filelist
67599 t1#P#part0.MYD
67600 t1#P#part0.MYI
67601 t1#P#part1.MYD
67602 t1#P#part1.MYI
67603 t1#P#part2.MYD
67604 t1#P#part2.MYI
67605 t1#P#part3.MYD
67606 t1#P#part3.MYI
67607 t1#P#part_1.MYD
67608 t1#P#part_1.MYI
67609 t1#P#part_2.MYD
67610 t1#P#part_2.MYI
67611 t1#P#part_3.MYD
67612 t1#P#part_3.MYI
67613 t1#P#part_N.MYD
67614 t1#P#part_N.MYI
67615 t1.frm
67616 t1.par
67618 # check prerequisites-1 success:    1
67619 # check COUNT(*) success:    1
67620 # check MIN/MAX(f_int1) success:    1
67621 # check MIN/MAX(f_int2) success:    1
67622 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
67623 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
67624 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
67625 WHERE f_int1 IN (2,3);
67626 # check prerequisites-3 success:    1
67627 DELETE FROM t1 WHERE f_charbig = 'delete me';
67628 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
67629 # check read via f_int1 success: 1
67630 # check read via f_int2 success: 1
67631         
67632 # check multiple-1 success:     1
67633 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
67634         
67635 # check multiple-2 success:     1
67636 INSERT INTO t1 SELECT * FROM t0_template
67637 WHERE MOD(f_int1,3) = 0;
67638         
67639 # check multiple-3 success:     1
67640 UPDATE t1 SET f_int1 = f_int1 + @max_row
67641 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
67642 AND @max_row_div2 + @max_row_div4;
67643         
67644 # check multiple-4 success:     1
67645 DELETE FROM t1
67646 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
67647 AND @max_row_div2 + @max_row_div4 + @max_row;
67648         
67649 # check multiple-5 success:     1
67650 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
67651 INSERT INTO t1
67652 SET f_int1 = @cur_value , f_int2 = @cur_value,
67653 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
67654 f_charbig = '#SINGLE#';
67655         
67656 # check single-1 success:       1
67657 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
67658 INSERT INTO t1
67659 SET f_int1 = @cur_value , f_int2 = @cur_value,
67660 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
67661 f_charbig = '#SINGLE#';
67662         
67663 # check single-2 success:       1
67664 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
67665 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
67666 UPDATE t1 SET f_int1 = @cur_value2
67667 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
67668         
67669 # check single-3 success:       1
67670 SET @cur_value1= -1;
67671 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
67672 UPDATE t1 SET f_int1 = @cur_value1
67673 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
67674         
67675 # check single-4 success:       1
67676 SELECT MAX(f_int1) INTO @cur_value FROM t1;
67677 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
67678         
67679 # check single-5 success:       1
67680 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
67681         
67682 # check single-6 success:       1
67683 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
67684         
67685 # check single-7 success:       1
67686 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
67687 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
67688 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
67689 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
67690 f_charbig = '#NULL#';
67691 INSERT INTO t1
67692 SET f_int1 = NULL , f_int2 = -@max_row,
67693 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
67694 f_charbig = '#NULL#';
67695 # check null success:    1
67696         
67697 # check null-1 success:         1
67698 UPDATE t1 SET f_int1 = -@max_row
67699 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
67700 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
67701         
67702 # check null-2 success:         1
67703 UPDATE t1 SET f_int1 = NULL
67704 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
67705 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
67706         
67707 # check null-3 success:         1
67708 DELETE FROM t1
67709 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
67710 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
67711         
67712 # check null-4 success:         1
67713 DELETE FROM t1
67714 WHERE f_int1 = 0 AND f_int2 = 0
67715 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
67716 AND f_charbig = '#NULL#';
67717 SET AUTOCOMMIT= 0;
67718 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
67719 SELECT f_int1, f_int1, '', '', 'was inserted'
67720 FROM t0_template source_tab
67721 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
67722         
67723 # check transactions-1 success:         1
67724 COMMIT WORK;
67725         
67726 # check transactions-2 success:         1
67727 ROLLBACK WORK;
67728         
67729 # check transactions-3 success:         1
67730 DELETE FROM t1 WHERE f_charbig = 'was inserted';
67731 COMMIT WORK;
67732 ROLLBACK WORK;
67733         
67734 # check transactions-4 success:         1
67735 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
67736 SELECT f_int1, f_int1, '', '', 'was inserted'
67737 FROM t0_template source_tab
67738 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
67739         
67740 # check transactions-5 success:         1
67741 ROLLBACK WORK;
67742 Warnings:
67743 Warning 1196    Some non-transactional changed tables couldn't be rolled back
67744         
67745 # check transactions-6 success:         1
67746 # INFO: Storage engine used for t1 seems to be not transactional.
67747 COMMIT;
67748         
67749 # check transactions-7 success:         1
67750 DELETE FROM t1 WHERE f_charbig = 'was inserted';
67751 COMMIT WORK;
67752 SET @@session.sql_mode = 'traditional';
67753 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
67754 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
67755 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
67756 '', '', 'was inserted' FROM t0_template
67757 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
67758 ERROR 22012: Division by 0
67759 COMMIT;
67760         
67761 # check transactions-8 success:         1
67762 # INFO: Storage engine used for t1 seems to be unable to revert
67763 #       changes made by the failing statement.
67764 SET @@session.sql_mode = '';
67765 SET AUTOCOMMIT= 1;
67766 DELETE FROM t1 WHERE f_charbig = 'was inserted';
67767 COMMIT WORK;
67768 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
67769         
67770 # check special-1 success:      1
67771 UPDATE t1 SET f_charbig = '';
67772         
67773 # check special-2 success:      1
67774 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
67775 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
67776 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
67777 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67778 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67779 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67780 'just inserted' FROM t0_template
67781 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67782 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
67783 BEGIN
67784 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67785 f_charbig = 'updated by trigger'
67786       WHERE f_int1 = new.f_int1;
67787 END|
67788 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67789 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
67790 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67791         
67792 # check trigger-1 success:      1
67793 DROP TRIGGER trg_1;
67794 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67795 f_int2 = CAST(f_char1 AS SIGNED INT),
67796 f_charbig = 'just inserted'
67797    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67798 DELETE FROM t0_aux
67799 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67800 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67801 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67802 'just inserted' FROM t0_template
67803 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67804 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
67805 BEGIN
67806 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67807 f_charbig = 'updated by trigger'
67808       WHERE f_int1 = new.f_int1;
67809 END|
67810 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67811 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
67812 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67813         
67814 # check trigger-2 success:      1
67815 DROP TRIGGER trg_1;
67816 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67817 f_int2 = CAST(f_char1 AS SIGNED INT),
67818 f_charbig = 'just inserted'
67819    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67820 DELETE FROM t0_aux
67821 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67822 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67823 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67824 'just inserted' FROM t0_template
67825 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67826 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
67827 BEGIN
67828 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67829 f_charbig = 'updated by trigger'
67830       WHERE f_int1 = new.f_int1;
67831 END|
67832 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
67833 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
67834         
67835 # check trigger-3 success:      1
67836 DROP TRIGGER trg_1;
67837 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67838 f_int2 = CAST(f_char1 AS SIGNED INT),
67839 f_charbig = 'just inserted'
67840    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67841 DELETE FROM t0_aux
67842 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67843 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67844 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67845 'just inserted' FROM t0_template
67846 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67847 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
67848 BEGIN
67849 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67850 f_charbig = 'updated by trigger'
67851       WHERE f_int1 = - old.f_int1;
67852 END|
67853 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
67854 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
67855         
67856 # check trigger-4 success:      1
67857 DROP TRIGGER trg_1;
67858 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67859 f_int2 = CAST(f_char1 AS SIGNED INT),
67860 f_charbig = 'just inserted'
67861    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67862 DELETE FROM t0_aux
67863 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67864 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67865 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67866 'just inserted' FROM t0_template
67867 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67868 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
67869 BEGIN
67870 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67871 f_charbig = 'updated by trigger'
67872       WHERE f_int1 = new.f_int1;
67873 END|
67874 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
67875 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
67876         
67877 # check trigger-5 success:      1
67878 DROP TRIGGER trg_1;
67879 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67880 f_int2 = CAST(f_char1 AS SIGNED INT),
67881 f_charbig = 'just inserted'
67882    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67883 DELETE FROM t0_aux
67884 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67885 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67886 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67887 'just inserted' FROM t0_template
67888 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67889 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
67890 BEGIN
67891 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67892 f_charbig = 'updated by trigger'
67893       WHERE f_int1 = - old.f_int1;
67894 END|
67895 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
67896 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
67897         
67898 # check trigger-6 success:      1
67899 DROP TRIGGER trg_1;
67900 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67901 f_int2 = CAST(f_char1 AS SIGNED INT),
67902 f_charbig = 'just inserted'
67903    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67904 DELETE FROM t0_aux
67905 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67906 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67907 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67908 'just inserted' FROM t0_template
67909 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67910 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
67911 BEGIN
67912 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67913 f_charbig = 'updated by trigger'
67914       WHERE f_int1 = - old.f_int1;
67915 END|
67916 DELETE FROM t0_aux
67917 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
67918         
67919 # check trigger-7 success:      1
67920 DROP TRIGGER trg_1;
67921 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67922 f_int2 = CAST(f_char1 AS SIGNED INT),
67923 f_charbig = 'just inserted'
67924    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67925 DELETE FROM t0_aux
67926 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67927 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
67928 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
67929 'just inserted' FROM t0_template
67930 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67931 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
67932 BEGIN
67933 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
67934 f_charbig = 'updated by trigger'
67935       WHERE f_int1 = - old.f_int1;
67936 END|
67937 DELETE FROM t0_aux
67938 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
67939         
67940 # check trigger-8 success:      1
67941 DROP TRIGGER trg_1;
67942 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67943 f_int2 = CAST(f_char1 AS SIGNED INT),
67944 f_charbig = 'just inserted'
67945    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
67946 DELETE FROM t0_aux
67947 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67948 DELETE FROM t1
67949 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
67950 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
67951 BEGIN
67952 SET new.f_int1 = old.f_int1 + @max_row,
67953 new.f_int2 = old.f_int2 - @max_row,
67954 new.f_charbig = '####updated per update trigger####';
67955 END|
67956 UPDATE t1
67957 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
67958 f_charbig = '####updated per update statement itself####';
67959         
67960 # check trigger-9 success:      1
67961 DROP TRIGGER trg_2;
67962 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67963 f_int2 = CAST(f_char1 AS SIGNED INT),
67964 f_charbig = CONCAT('===',f_char1,'===');
67965 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
67966 BEGIN
67967 SET new.f_int1 = new.f_int1 + @max_row,
67968 new.f_int2 = new.f_int2 - @max_row,
67969 new.f_charbig = '####updated per update trigger####';
67970 END|
67971 UPDATE t1
67972 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
67973 f_charbig = '####updated per update statement itself####';
67974         
67975 # check trigger-10 success:     1
67976 DROP TRIGGER trg_2;
67977 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
67978 f_int2 = CAST(f_char1 AS SIGNED INT),
67979 f_charbig = CONCAT('===',f_char1,'===');
67980 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
67981 BEGIN
67982 SET new.f_int1 = @my_max1 + @counter,
67983 new.f_int2 = @my_min2 - @counter,
67984 new.f_charbig = '####updated per insert trigger####';
67985 SET @counter = @counter + 1;
67986 END|
67987 SET @counter = 1;
67988 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
67989 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
67990 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
67991 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
67992 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
67993 ORDER BY f_int1;
67994 DROP TRIGGER trg_3;
67995         
67996 # check trigger-11 success:     1
67997 DELETE FROM t1
67998 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
67999 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
68000 AND f_charbig = '####updated per insert trigger####';
68001 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
68002 BEGIN
68003 SET new.f_int1 = @my_max1 + @counter,
68004 new.f_int2 = @my_min2 - @counter,
68005 new.f_charbig = '####updated per insert trigger####';
68006 SET @counter = @counter + 1;
68007 END|
68008 SET @counter = 1;
68009 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
68010 INSERT INTO t1 (f_char1, f_char2, f_charbig)
68011 SELECT CAST(f_int1 AS CHAR),
68012 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
68013 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
68014 ORDER BY f_int1;
68015 DROP TRIGGER trg_3;
68016         
68017 # check trigger-12 success:     1
68018 DELETE FROM t1
68019 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
68020 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
68021 AND f_charbig = '####updated per insert trigger####';
68022 ANALYZE  TABLE t1;
68023 Table   Op      Msg_type        Msg_text
68024 test.t1 analyze status  OK
68025 CHECK    TABLE t1 EXTENDED;
68026 Table   Op      Msg_type        Msg_text
68027 test.t1 check   status  OK
68028 CHECKSUM TABLE t1 EXTENDED;
68029 Table   Checksum
68030 test.t1 <some_value>
68031 OPTIMIZE TABLE t1;
68032 Table   Op      Msg_type        Msg_text
68033 test.t1 optimize        status  OK
68034 # check layout success:    1
68035 REPAIR   TABLE t1 EXTENDED;
68036 Table   Op      Msg_type        Msg_text
68037 test.t1 repair  status  OK
68038 # check layout success:    1
68039 TRUNCATE t1;
68040         
68041 # check TRUNCATE success:       1
68042 # check layout success:    1
68043 # End usability test (inc/partition_check.inc)
68044 DROP TABLE t1;
68045 CREATE TABLE t1 (
68046 f_int1 INTEGER,
68047 f_int2 INTEGER,
68048 f_char1 CHAR(20),
68049 f_char2 CHAR(20),
68050 f_charbig VARCHAR(1000)
68053 PARTITION BY RANGE(f_int1)
68054 (PARTITION parta VALUES LESS THAN (0),
68055 PARTITION part_1 VALUES LESS THAN (5),
68056 PARTITION part_2 VALUES LESS THAN (10),
68057 PARTITION part_3 VALUES LESS THAN (10 + 5),
68058 PARTITION part_4 VALUES LESS THAN (20),
68059 PARTITION part_5 VALUES LESS THAN (2147483646));
68060 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
68061 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
68062 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
68063 ALTER TABLE t1 REBUILD PARTITION ALL;
68064 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
68065 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
68066 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
68067 # Start usability test (inc/partition_check.inc)
68068 create_command
68069 SHOW CREATE TABLE t1;
68070 Table   Create Table
68071 t1      CREATE TABLE `t1` (
68072   `f_int1` int(11) DEFAULT NULL,
68073   `f_int2` int(11) DEFAULT NULL,
68074   `f_char1` char(20) DEFAULT NULL,
68075   `f_char2` char(20) DEFAULT NULL,
68076   `f_charbig` varchar(1000) DEFAULT NULL
68077 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
68078 /*!50100 PARTITION BY RANGE (f_int1)
68079 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
68080  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
68081  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
68082  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
68083  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
68084  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
68086 unified filelist
68087 t1#P#part_1.MYD
68088 t1#P#part_1.MYI
68089 t1#P#part_2.MYD
68090 t1#P#part_2.MYI
68091 t1#P#part_3.MYD
68092 t1#P#part_3.MYI
68093 t1#P#part_4.MYD
68094 t1#P#part_4.MYI
68095 t1#P#part_5.MYD
68096 t1#P#part_5.MYI
68097 t1#P#parta.MYD
68098 t1#P#parta.MYI
68099 t1.frm
68100 t1.par
68102 # check prerequisites-1 success:    1
68103 # check COUNT(*) success:    1
68104 # check MIN/MAX(f_int1) success:    1
68105 # check MIN/MAX(f_int2) success:    1
68106 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
68107 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
68108 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
68109 WHERE f_int1 IN (2,3);
68110 # check prerequisites-3 success:    1
68111 DELETE FROM t1 WHERE f_charbig = 'delete me';
68112 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
68113 # check read via f_int1 success: 1
68114 # check read via f_int2 success: 1
68115         
68116 # check multiple-1 success:     1
68117 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
68118         
68119 # check multiple-2 success:     1
68120 INSERT INTO t1 SELECT * FROM t0_template
68121 WHERE MOD(f_int1,3) = 0;
68122         
68123 # check multiple-3 success:     1
68124 UPDATE t1 SET f_int1 = f_int1 + @max_row
68125 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
68126 AND @max_row_div2 + @max_row_div4;
68127         
68128 # check multiple-4 success:     1
68129 DELETE FROM t1
68130 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
68131 AND @max_row_div2 + @max_row_div4 + @max_row;
68132         
68133 # check multiple-5 success:     1
68134 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
68135 INSERT INTO t1
68136 SET f_int1 = @cur_value , f_int2 = @cur_value,
68137 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
68138 f_charbig = '#SINGLE#';
68139         
68140 # check single-1 success:       1
68141 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
68142 INSERT INTO t1
68143 SET f_int1 = @cur_value , f_int2 = @cur_value,
68144 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
68145 f_charbig = '#SINGLE#';
68146         
68147 # check single-2 success:       1
68148 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
68149 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
68150 UPDATE t1 SET f_int1 = @cur_value2
68151 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
68152         
68153 # check single-3 success:       1
68154 SET @cur_value1= -1;
68155 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
68156 UPDATE t1 SET f_int1 = @cur_value1
68157 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
68158         
68159 # check single-4 success:       1
68160 SELECT MAX(f_int1) INTO @cur_value FROM t1;
68161 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
68162         
68163 # check single-5 success:       1
68164 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
68165         
68166 # check single-6 success:       1
68167 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
68168 ERROR HY000: Table has no partition for value 2147483647
68169 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
68170 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
68171 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
68172 f_charbig = '#NULL#';
68173 INSERT INTO t1
68174 SET f_int1 = NULL , f_int2 = -@max_row,
68175 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
68176 f_charbig = '#NULL#';
68177 # check null success:    1
68178         
68179 # check null-1 success:         1
68180 UPDATE t1 SET f_int1 = -@max_row
68181 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
68182 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
68183         
68184 # check null-2 success:         1
68185 UPDATE t1 SET f_int1 = NULL
68186 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
68187 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
68188         
68189 # check null-3 success:         1
68190 DELETE FROM t1
68191 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
68192 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
68193         
68194 # check null-4 success:         1
68195 DELETE FROM t1
68196 WHERE f_int1 = 0 AND f_int2 = 0
68197 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
68198 AND f_charbig = '#NULL#';
68199 SET AUTOCOMMIT= 0;
68200 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
68201 SELECT f_int1, f_int1, '', '', 'was inserted'
68202 FROM t0_template source_tab
68203 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
68204         
68205 # check transactions-1 success:         1
68206 COMMIT WORK;
68207         
68208 # check transactions-2 success:         1
68209 ROLLBACK WORK;
68210         
68211 # check transactions-3 success:         1
68212 DELETE FROM t1 WHERE f_charbig = 'was inserted';
68213 COMMIT WORK;
68214 ROLLBACK WORK;
68215         
68216 # check transactions-4 success:         1
68217 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
68218 SELECT f_int1, f_int1, '', '', 'was inserted'
68219 FROM t0_template source_tab
68220 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
68221         
68222 # check transactions-5 success:         1
68223 ROLLBACK WORK;
68224 Warnings:
68225 Warning 1196    Some non-transactional changed tables couldn't be rolled back
68226         
68227 # check transactions-6 success:         1
68228 # INFO: Storage engine used for t1 seems to be not transactional.
68229 COMMIT;
68230         
68231 # check transactions-7 success:         1
68232 DELETE FROM t1 WHERE f_charbig = 'was inserted';
68233 COMMIT WORK;
68234 SET @@session.sql_mode = 'traditional';
68235 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
68236 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
68237 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
68238 '', '', 'was inserted' FROM t0_template
68239 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
68240 ERROR 22012: Division by 0
68241 COMMIT;
68242         
68243 # check transactions-8 success:         1
68244 # INFO: Storage engine used for t1 seems to be unable to revert
68245 #       changes made by the failing statement.
68246 SET @@session.sql_mode = '';
68247 SET AUTOCOMMIT= 1;
68248 DELETE FROM t1 WHERE f_charbig = 'was inserted';
68249 COMMIT WORK;
68250 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
68251         
68252 # check special-1 success:      1
68253 UPDATE t1 SET f_charbig = '';
68254         
68255 # check special-2 success:      1
68256 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
68257 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
68258 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
68259 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68260 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68261 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68262 'just inserted' FROM t0_template
68263 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68264 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
68265 BEGIN
68266 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68267 f_charbig = 'updated by trigger'
68268       WHERE f_int1 = new.f_int1;
68269 END|
68270 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68271 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
68272 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68273         
68274 # check trigger-1 success:      1
68275 DROP TRIGGER trg_1;
68276 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68277 f_int2 = CAST(f_char1 AS SIGNED INT),
68278 f_charbig = 'just inserted'
68279    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68280 DELETE FROM t0_aux
68281 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68282 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68283 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68284 'just inserted' FROM t0_template
68285 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68286 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
68287 BEGIN
68288 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68289 f_charbig = 'updated by trigger'
68290       WHERE f_int1 = new.f_int1;
68291 END|
68292 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68293 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
68294 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68295         
68296 # check trigger-2 success:      1
68297 DROP TRIGGER trg_1;
68298 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68299 f_int2 = CAST(f_char1 AS SIGNED INT),
68300 f_charbig = 'just inserted'
68301    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68302 DELETE FROM t0_aux
68303 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68304 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68305 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68306 'just inserted' FROM t0_template
68307 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68308 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
68309 BEGIN
68310 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68311 f_charbig = 'updated by trigger'
68312       WHERE f_int1 = new.f_int1;
68313 END|
68314 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
68315 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
68316         
68317 # check trigger-3 success:      1
68318 DROP TRIGGER trg_1;
68319 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68320 f_int2 = CAST(f_char1 AS SIGNED INT),
68321 f_charbig = 'just inserted'
68322    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68323 DELETE FROM t0_aux
68324 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68325 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68326 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68327 'just inserted' FROM t0_template
68328 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68329 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
68330 BEGIN
68331 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68332 f_charbig = 'updated by trigger'
68333       WHERE f_int1 = - old.f_int1;
68334 END|
68335 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
68336 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
68337         
68338 # check trigger-4 success:      1
68339 DROP TRIGGER trg_1;
68340 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68341 f_int2 = CAST(f_char1 AS SIGNED INT),
68342 f_charbig = 'just inserted'
68343    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68344 DELETE FROM t0_aux
68345 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68346 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68347 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68348 'just inserted' FROM t0_template
68349 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68350 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
68351 BEGIN
68352 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68353 f_charbig = 'updated by trigger'
68354       WHERE f_int1 = new.f_int1;
68355 END|
68356 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
68357 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
68358         
68359 # check trigger-5 success:      1
68360 DROP TRIGGER trg_1;
68361 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68362 f_int2 = CAST(f_char1 AS SIGNED INT),
68363 f_charbig = 'just inserted'
68364    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68365 DELETE FROM t0_aux
68366 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68367 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68368 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68369 'just inserted' FROM t0_template
68370 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68371 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
68372 BEGIN
68373 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68374 f_charbig = 'updated by trigger'
68375       WHERE f_int1 = - old.f_int1;
68376 END|
68377 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
68378 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
68379         
68380 # check trigger-6 success:      1
68381 DROP TRIGGER trg_1;
68382 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68383 f_int2 = CAST(f_char1 AS SIGNED INT),
68384 f_charbig = 'just inserted'
68385    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68386 DELETE FROM t0_aux
68387 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68388 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68389 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68390 'just inserted' FROM t0_template
68391 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68392 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
68393 BEGIN
68394 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68395 f_charbig = 'updated by trigger'
68396       WHERE f_int1 = - old.f_int1;
68397 END|
68398 DELETE FROM t0_aux
68399 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
68400         
68401 # check trigger-7 success:      1
68402 DROP TRIGGER trg_1;
68403 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68404 f_int2 = CAST(f_char1 AS SIGNED INT),
68405 f_charbig = 'just inserted'
68406    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68407 DELETE FROM t0_aux
68408 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68409 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68410 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68411 'just inserted' FROM t0_template
68412 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68413 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
68414 BEGIN
68415 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68416 f_charbig = 'updated by trigger'
68417       WHERE f_int1 = - old.f_int1;
68418 END|
68419 DELETE FROM t0_aux
68420 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
68421         
68422 # check trigger-8 success:      1
68423 DROP TRIGGER trg_1;
68424 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68425 f_int2 = CAST(f_char1 AS SIGNED INT),
68426 f_charbig = 'just inserted'
68427    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68428 DELETE FROM t0_aux
68429 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68430 DELETE FROM t1
68431 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68432 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
68433 BEGIN
68434 SET new.f_int1 = old.f_int1 + @max_row,
68435 new.f_int2 = old.f_int2 - @max_row,
68436 new.f_charbig = '####updated per update trigger####';
68437 END|
68438 UPDATE t1
68439 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
68440 f_charbig = '####updated per update statement itself####';
68441         
68442 # check trigger-9 success:      1
68443 DROP TRIGGER trg_2;
68444 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68445 f_int2 = CAST(f_char1 AS SIGNED INT),
68446 f_charbig = CONCAT('===',f_char1,'===');
68447 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
68448 BEGIN
68449 SET new.f_int1 = new.f_int1 + @max_row,
68450 new.f_int2 = new.f_int2 - @max_row,
68451 new.f_charbig = '####updated per update trigger####';
68452 END|
68453 UPDATE t1
68454 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
68455 f_charbig = '####updated per update statement itself####';
68456         
68457 # check trigger-10 success:     1
68458 DROP TRIGGER trg_2;
68459 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68460 f_int2 = CAST(f_char1 AS SIGNED INT),
68461 f_charbig = CONCAT('===',f_char1,'===');
68462 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
68463 BEGIN
68464 SET new.f_int1 = @my_max1 + @counter,
68465 new.f_int2 = @my_min2 - @counter,
68466 new.f_charbig = '####updated per insert trigger####';
68467 SET @counter = @counter + 1;
68468 END|
68469 SET @counter = 1;
68470 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
68471 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
68472 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
68473 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
68474 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
68475 ORDER BY f_int1;
68476 DROP TRIGGER trg_3;
68477         
68478 # check trigger-11 success:     1
68479 DELETE FROM t1
68480 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
68481 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
68482 AND f_charbig = '####updated per insert trigger####';
68483 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
68484 BEGIN
68485 SET new.f_int1 = @my_max1 + @counter,
68486 new.f_int2 = @my_min2 - @counter,
68487 new.f_charbig = '####updated per insert trigger####';
68488 SET @counter = @counter + 1;
68489 END|
68490 SET @counter = 1;
68491 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
68492 INSERT INTO t1 (f_char1, f_char2, f_charbig)
68493 SELECT CAST(f_int1 AS CHAR),
68494 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
68495 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
68496 ORDER BY f_int1;
68497 DROP TRIGGER trg_3;
68498         
68499 # check trigger-12 success:     1
68500 DELETE FROM t1
68501 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
68502 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
68503 AND f_charbig = '####updated per insert trigger####';
68504 ANALYZE  TABLE t1;
68505 Table   Op      Msg_type        Msg_text
68506 test.t1 analyze status  OK
68507 CHECK    TABLE t1 EXTENDED;
68508 Table   Op      Msg_type        Msg_text
68509 test.t1 check   status  OK
68510 CHECKSUM TABLE t1 EXTENDED;
68511 Table   Checksum
68512 test.t1 <some_value>
68513 OPTIMIZE TABLE t1;
68514 Table   Op      Msg_type        Msg_text
68515 test.t1 optimize        status  OK
68516 # check layout success:    1
68517 REPAIR   TABLE t1 EXTENDED;
68518 Table   Op      Msg_type        Msg_text
68519 test.t1 repair  status  OK
68520 # check layout success:    1
68521 TRUNCATE t1;
68522         
68523 # check TRUNCATE success:       1
68524 # check layout success:    1
68525 # End usability test (inc/partition_check.inc)
68526 DROP TABLE t1;
68527 CREATE TABLE t1 (
68528 f_int1 INTEGER,
68529 f_int2 INTEGER,
68530 f_char1 CHAR(20),
68531 f_char2 CHAR(20),
68532 f_charbig VARCHAR(1000)
68535 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
68536 (PARTITION part_1 VALUES LESS THAN (0),
68537 PARTITION part_2 VALUES LESS THAN (5),
68538 PARTITION part_3 VALUES LESS THAN (10),
68539 PARTITION part_4 VALUES LESS THAN (2147483646));
68540 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
68541 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
68542 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
68543 ALTER TABLE t1 REBUILD PARTITION ALL;
68544 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
68545 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
68546 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
68547 # Start usability test (inc/partition_check.inc)
68548 create_command
68549 SHOW CREATE TABLE t1;
68550 Table   Create Table
68551 t1      CREATE TABLE `t1` (
68552   `f_int1` int(11) DEFAULT NULL,
68553   `f_int2` int(11) DEFAULT NULL,
68554   `f_char1` char(20) DEFAULT NULL,
68555   `f_char2` char(20) DEFAULT NULL,
68556   `f_charbig` varchar(1000) DEFAULT NULL
68557 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
68558 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
68559 SUBPARTITION BY HASH (f_int1)
68560 SUBPARTITIONS 2
68561 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
68562  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
68563  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
68564  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
68566 unified filelist
68567 t1#P#part_1#SP#part_1sp0.MYD
68568 t1#P#part_1#SP#part_1sp0.MYI
68569 t1#P#part_1#SP#part_1sp1.MYD
68570 t1#P#part_1#SP#part_1sp1.MYI
68571 t1#P#part_2#SP#part_2sp0.MYD
68572 t1#P#part_2#SP#part_2sp0.MYI
68573 t1#P#part_2#SP#part_2sp1.MYD
68574 t1#P#part_2#SP#part_2sp1.MYI
68575 t1#P#part_3#SP#part_3sp0.MYD
68576 t1#P#part_3#SP#part_3sp0.MYI
68577 t1#P#part_3#SP#part_3sp1.MYD
68578 t1#P#part_3#SP#part_3sp1.MYI
68579 t1#P#part_4#SP#part_4sp0.MYD
68580 t1#P#part_4#SP#part_4sp0.MYI
68581 t1#P#part_4#SP#part_4sp1.MYD
68582 t1#P#part_4#SP#part_4sp1.MYI
68583 t1.frm
68584 t1.par
68586 # check prerequisites-1 success:    1
68587 # check COUNT(*) success:    1
68588 # check MIN/MAX(f_int1) success:    1
68589 # check MIN/MAX(f_int2) success:    1
68590 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
68591 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
68592 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
68593 WHERE f_int1 IN (2,3);
68594 # check prerequisites-3 success:    1
68595 DELETE FROM t1 WHERE f_charbig = 'delete me';
68596 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
68597 # check read via f_int1 success: 1
68598 # check read via f_int2 success: 1
68599         
68600 # check multiple-1 success:     1
68601 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
68602         
68603 # check multiple-2 success:     1
68604 INSERT INTO t1 SELECT * FROM t0_template
68605 WHERE MOD(f_int1,3) = 0;
68606         
68607 # check multiple-3 success:     1
68608 UPDATE t1 SET f_int1 = f_int1 + @max_row
68609 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
68610 AND @max_row_div2 + @max_row_div4;
68611         
68612 # check multiple-4 success:     1
68613 DELETE FROM t1
68614 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
68615 AND @max_row_div2 + @max_row_div4 + @max_row;
68616         
68617 # check multiple-5 success:     1
68618 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
68619 INSERT INTO t1
68620 SET f_int1 = @cur_value , f_int2 = @cur_value,
68621 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
68622 f_charbig = '#SINGLE#';
68623         
68624 # check single-1 success:       1
68625 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
68626 INSERT INTO t1
68627 SET f_int1 = @cur_value , f_int2 = @cur_value,
68628 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
68629 f_charbig = '#SINGLE#';
68630         
68631 # check single-2 success:       1
68632 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
68633 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
68634 UPDATE t1 SET f_int1 = @cur_value2
68635 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
68636         
68637 # check single-3 success:       1
68638 SET @cur_value1= -1;
68639 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
68640 UPDATE t1 SET f_int1 = @cur_value1
68641 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
68642         
68643 # check single-4 success:       1
68644 SELECT MAX(f_int1) INTO @cur_value FROM t1;
68645 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
68646         
68647 # check single-5 success:       1
68648 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
68649         
68650 # check single-6 success:       1
68651 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
68652         
68653 # check single-7 success:       1
68654 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
68655 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
68656 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
68657 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
68658 f_charbig = '#NULL#';
68659 INSERT INTO t1
68660 SET f_int1 = NULL , f_int2 = -@max_row,
68661 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
68662 f_charbig = '#NULL#';
68663 # check null success:    1
68664         
68665 # check null-1 success:         1
68666 UPDATE t1 SET f_int1 = -@max_row
68667 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
68668 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
68669         
68670 # check null-2 success:         1
68671 UPDATE t1 SET f_int1 = NULL
68672 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
68673 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
68674         
68675 # check null-3 success:         1
68676 DELETE FROM t1
68677 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
68678 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
68679         
68680 # check null-4 success:         1
68681 DELETE FROM t1
68682 WHERE f_int1 = 0 AND f_int2 = 0
68683 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
68684 AND f_charbig = '#NULL#';
68685 SET AUTOCOMMIT= 0;
68686 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
68687 SELECT f_int1, f_int1, '', '', 'was inserted'
68688 FROM t0_template source_tab
68689 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
68690         
68691 # check transactions-1 success:         1
68692 COMMIT WORK;
68693         
68694 # check transactions-2 success:         1
68695 ROLLBACK WORK;
68696         
68697 # check transactions-3 success:         1
68698 DELETE FROM t1 WHERE f_charbig = 'was inserted';
68699 COMMIT WORK;
68700 ROLLBACK WORK;
68701         
68702 # check transactions-4 success:         1
68703 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
68704 SELECT f_int1, f_int1, '', '', 'was inserted'
68705 FROM t0_template source_tab
68706 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
68707         
68708 # check transactions-5 success:         1
68709 ROLLBACK WORK;
68710 Warnings:
68711 Warning 1196    Some non-transactional changed tables couldn't be rolled back
68712         
68713 # check transactions-6 success:         1
68714 # INFO: Storage engine used for t1 seems to be not transactional.
68715 COMMIT;
68716         
68717 # check transactions-7 success:         1
68718 DELETE FROM t1 WHERE f_charbig = 'was inserted';
68719 COMMIT WORK;
68720 SET @@session.sql_mode = 'traditional';
68721 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
68722 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
68723 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
68724 '', '', 'was inserted' FROM t0_template
68725 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
68726 ERROR 22012: Division by 0
68727 COMMIT;
68728         
68729 # check transactions-8 success:         1
68730 # INFO: Storage engine used for t1 seems to be unable to revert
68731 #       changes made by the failing statement.
68732 SET @@session.sql_mode = '';
68733 SET AUTOCOMMIT= 1;
68734 DELETE FROM t1 WHERE f_charbig = 'was inserted';
68735 COMMIT WORK;
68736 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
68737         
68738 # check special-1 success:      1
68739 UPDATE t1 SET f_charbig = '';
68740         
68741 # check special-2 success:      1
68742 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
68743 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
68744 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
68745 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68746 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68747 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68748 'just inserted' FROM t0_template
68749 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68750 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
68751 BEGIN
68752 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68753 f_charbig = 'updated by trigger'
68754       WHERE f_int1 = new.f_int1;
68755 END|
68756 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68757 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
68758 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68759         
68760 # check trigger-1 success:      1
68761 DROP TRIGGER trg_1;
68762 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68763 f_int2 = CAST(f_char1 AS SIGNED INT),
68764 f_charbig = 'just inserted'
68765    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68766 DELETE FROM t0_aux
68767 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68768 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68769 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68770 'just inserted' FROM t0_template
68771 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68772 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
68773 BEGIN
68774 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68775 f_charbig = 'updated by trigger'
68776       WHERE f_int1 = new.f_int1;
68777 END|
68778 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68779 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
68780 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68781         
68782 # check trigger-2 success:      1
68783 DROP TRIGGER trg_1;
68784 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68785 f_int2 = CAST(f_char1 AS SIGNED INT),
68786 f_charbig = 'just inserted'
68787    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68788 DELETE FROM t0_aux
68789 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68790 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68791 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68792 'just inserted' FROM t0_template
68793 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68794 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
68795 BEGIN
68796 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68797 f_charbig = 'updated by trigger'
68798       WHERE f_int1 = new.f_int1;
68799 END|
68800 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
68801 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
68802         
68803 # check trigger-3 success:      1
68804 DROP TRIGGER trg_1;
68805 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68806 f_int2 = CAST(f_char1 AS SIGNED INT),
68807 f_charbig = 'just inserted'
68808    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68809 DELETE FROM t0_aux
68810 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68811 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68812 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68813 'just inserted' FROM t0_template
68814 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68815 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
68816 BEGIN
68817 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68818 f_charbig = 'updated by trigger'
68819       WHERE f_int1 = - old.f_int1;
68820 END|
68821 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
68822 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
68823         
68824 # check trigger-4 success:      1
68825 DROP TRIGGER trg_1;
68826 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68827 f_int2 = CAST(f_char1 AS SIGNED INT),
68828 f_charbig = 'just inserted'
68829    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68830 DELETE FROM t0_aux
68831 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68832 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68833 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68834 'just inserted' FROM t0_template
68835 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68836 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
68837 BEGIN
68838 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68839 f_charbig = 'updated by trigger'
68840       WHERE f_int1 = new.f_int1;
68841 END|
68842 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
68843 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
68844         
68845 # check trigger-5 success:      1
68846 DROP TRIGGER trg_1;
68847 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68848 f_int2 = CAST(f_char1 AS SIGNED INT),
68849 f_charbig = 'just inserted'
68850    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68851 DELETE FROM t0_aux
68852 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68853 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68854 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68855 'just inserted' FROM t0_template
68856 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68857 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
68858 BEGIN
68859 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68860 f_charbig = 'updated by trigger'
68861       WHERE f_int1 = - old.f_int1;
68862 END|
68863 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
68864 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
68865         
68866 # check trigger-6 success:      1
68867 DROP TRIGGER trg_1;
68868 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68869 f_int2 = CAST(f_char1 AS SIGNED INT),
68870 f_charbig = 'just inserted'
68871    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68872 DELETE FROM t0_aux
68873 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68874 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68875 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68876 'just inserted' FROM t0_template
68877 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68878 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
68879 BEGIN
68880 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68881 f_charbig = 'updated by trigger'
68882       WHERE f_int1 = - old.f_int1;
68883 END|
68884 DELETE FROM t0_aux
68885 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
68886         
68887 # check trigger-7 success:      1
68888 DROP TRIGGER trg_1;
68889 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68890 f_int2 = CAST(f_char1 AS SIGNED INT),
68891 f_charbig = 'just inserted'
68892    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68893 DELETE FROM t0_aux
68894 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68895 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
68896 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
68897 'just inserted' FROM t0_template
68898 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68899 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
68900 BEGIN
68901 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
68902 f_charbig = 'updated by trigger'
68903       WHERE f_int1 = - old.f_int1;
68904 END|
68905 DELETE FROM t0_aux
68906 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
68907         
68908 # check trigger-8 success:      1
68909 DROP TRIGGER trg_1;
68910 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68911 f_int2 = CAST(f_char1 AS SIGNED INT),
68912 f_charbig = 'just inserted'
68913    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
68914 DELETE FROM t0_aux
68915 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68916 DELETE FROM t1
68917 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
68918 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
68919 BEGIN
68920 SET new.f_int1 = old.f_int1 + @max_row,
68921 new.f_int2 = old.f_int2 - @max_row,
68922 new.f_charbig = '####updated per update trigger####';
68923 END|
68924 UPDATE t1
68925 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
68926 f_charbig = '####updated per update statement itself####';
68927         
68928 # check trigger-9 success:      1
68929 DROP TRIGGER trg_2;
68930 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68931 f_int2 = CAST(f_char1 AS SIGNED INT),
68932 f_charbig = CONCAT('===',f_char1,'===');
68933 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
68934 BEGIN
68935 SET new.f_int1 = new.f_int1 + @max_row,
68936 new.f_int2 = new.f_int2 - @max_row,
68937 new.f_charbig = '####updated per update trigger####';
68938 END|
68939 UPDATE t1
68940 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
68941 f_charbig = '####updated per update statement itself####';
68942         
68943 # check trigger-10 success:     1
68944 DROP TRIGGER trg_2;
68945 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
68946 f_int2 = CAST(f_char1 AS SIGNED INT),
68947 f_charbig = CONCAT('===',f_char1,'===');
68948 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
68949 BEGIN
68950 SET new.f_int1 = @my_max1 + @counter,
68951 new.f_int2 = @my_min2 - @counter,
68952 new.f_charbig = '####updated per insert trigger####';
68953 SET @counter = @counter + 1;
68954 END|
68955 SET @counter = 1;
68956 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
68957 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
68958 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
68959 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
68960 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
68961 ORDER BY f_int1;
68962 DROP TRIGGER trg_3;
68963         
68964 # check trigger-11 success:     1
68965 DELETE FROM t1
68966 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
68967 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
68968 AND f_charbig = '####updated per insert trigger####';
68969 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
68970 BEGIN
68971 SET new.f_int1 = @my_max1 + @counter,
68972 new.f_int2 = @my_min2 - @counter,
68973 new.f_charbig = '####updated per insert trigger####';
68974 SET @counter = @counter + 1;
68975 END|
68976 SET @counter = 1;
68977 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
68978 INSERT INTO t1 (f_char1, f_char2, f_charbig)
68979 SELECT CAST(f_int1 AS CHAR),
68980 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
68981 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
68982 ORDER BY f_int1;
68983 DROP TRIGGER trg_3;
68984         
68985 # check trigger-12 success:     1
68986 DELETE FROM t1
68987 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
68988 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
68989 AND f_charbig = '####updated per insert trigger####';
68990 ANALYZE  TABLE t1;
68991 Table   Op      Msg_type        Msg_text
68992 test.t1 analyze status  OK
68993 CHECK    TABLE t1 EXTENDED;
68994 Table   Op      Msg_type        Msg_text
68995 test.t1 check   status  OK
68996 CHECKSUM TABLE t1 EXTENDED;
68997 Table   Checksum
68998 test.t1 <some_value>
68999 OPTIMIZE TABLE t1;
69000 Table   Op      Msg_type        Msg_text
69001 test.t1 optimize        status  OK
69002 # check layout success:    1
69003 REPAIR   TABLE t1 EXTENDED;
69004 Table   Op      Msg_type        Msg_text
69005 test.t1 repair  status  OK
69006 # check layout success:    1
69007 TRUNCATE t1;
69008         
69009 # check TRUNCATE success:       1
69010 # check layout success:    1
69011 # End usability test (inc/partition_check.inc)
69012 DROP TABLE t1;
69013 CREATE TABLE t1 (
69014 f_int1 INTEGER,
69015 f_int2 INTEGER,
69016 f_char1 CHAR(20),
69017 f_char2 CHAR(20),
69018 f_charbig VARCHAR(1000)
69021 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
69022 (PARTITION part_1 VALUES LESS THAN (0)
69023 (SUBPARTITION subpart11, SUBPARTITION subpart12),
69024 PARTITION part_2 VALUES LESS THAN (5)
69025 (SUBPARTITION subpart21, SUBPARTITION subpart22),
69026 PARTITION part_3 VALUES LESS THAN (10)
69027 (SUBPARTITION subpart31, SUBPARTITION subpart32),
69028 PARTITION part_4 VALUES LESS THAN (2147483646)
69029 (SUBPARTITION subpart41, SUBPARTITION subpart42));
69030 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
69031 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
69032 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
69033 ALTER TABLE t1 REBUILD PARTITION ALL;
69034 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
69035 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
69036 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
69037 # Start usability test (inc/partition_check.inc)
69038 create_command
69039 SHOW CREATE TABLE t1;
69040 Table   Create Table
69041 t1      CREATE TABLE `t1` (
69042   `f_int1` int(11) DEFAULT NULL,
69043   `f_int2` int(11) DEFAULT NULL,
69044   `f_char1` char(20) DEFAULT NULL,
69045   `f_char2` char(20) DEFAULT NULL,
69046   `f_charbig` varchar(1000) DEFAULT NULL
69047 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
69048 /*!50100 PARTITION BY RANGE (f_int1)
69049 SUBPARTITION BY KEY (f_int1)
69050 (PARTITION part_1 VALUES LESS THAN (0)
69051  (SUBPARTITION subpart11 ENGINE = MyISAM,
69052   SUBPARTITION subpart12 ENGINE = MyISAM),
69053  PARTITION part_2 VALUES LESS THAN (5)
69054  (SUBPARTITION subpart21 ENGINE = MyISAM,
69055   SUBPARTITION subpart22 ENGINE = MyISAM),
69056  PARTITION part_3 VALUES LESS THAN (10)
69057  (SUBPARTITION subpart31 ENGINE = MyISAM,
69058   SUBPARTITION subpart32 ENGINE = MyISAM),
69059  PARTITION part_4 VALUES LESS THAN (2147483646)
69060  (SUBPARTITION subpart41 ENGINE = MyISAM,
69061   SUBPARTITION subpart42 ENGINE = MyISAM)) */
69063 unified filelist
69064 t1#P#part_1#SP#subpart11.MYD
69065 t1#P#part_1#SP#subpart11.MYI
69066 t1#P#part_1#SP#subpart12.MYD
69067 t1#P#part_1#SP#subpart12.MYI
69068 t1#P#part_2#SP#subpart21.MYD
69069 t1#P#part_2#SP#subpart21.MYI
69070 t1#P#part_2#SP#subpart22.MYD
69071 t1#P#part_2#SP#subpart22.MYI
69072 t1#P#part_3#SP#subpart31.MYD
69073 t1#P#part_3#SP#subpart31.MYI
69074 t1#P#part_3#SP#subpart32.MYD
69075 t1#P#part_3#SP#subpart32.MYI
69076 t1#P#part_4#SP#subpart41.MYD
69077 t1#P#part_4#SP#subpart41.MYI
69078 t1#P#part_4#SP#subpart42.MYD
69079 t1#P#part_4#SP#subpart42.MYI
69080 t1.frm
69081 t1.par
69083 # check prerequisites-1 success:    1
69084 # check COUNT(*) success:    1
69085 # check MIN/MAX(f_int1) success:    1
69086 # check MIN/MAX(f_int2) success:    1
69087 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
69088 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
69089 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
69090 WHERE f_int1 IN (2,3);
69091 # check prerequisites-3 success:    1
69092 DELETE FROM t1 WHERE f_charbig = 'delete me';
69093 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
69094 # check read via f_int1 success: 1
69095 # check read via f_int2 success: 1
69096         
69097 # check multiple-1 success:     1
69098 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
69099         
69100 # check multiple-2 success:     1
69101 INSERT INTO t1 SELECT * FROM t0_template
69102 WHERE MOD(f_int1,3) = 0;
69103         
69104 # check multiple-3 success:     1
69105 UPDATE t1 SET f_int1 = f_int1 + @max_row
69106 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
69107 AND @max_row_div2 + @max_row_div4;
69108         
69109 # check multiple-4 success:     1
69110 DELETE FROM t1
69111 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
69112 AND @max_row_div2 + @max_row_div4 + @max_row;
69113         
69114 # check multiple-5 success:     1
69115 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
69116 INSERT INTO t1
69117 SET f_int1 = @cur_value , f_int2 = @cur_value,
69118 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
69119 f_charbig = '#SINGLE#';
69120         
69121 # check single-1 success:       1
69122 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
69123 INSERT INTO t1
69124 SET f_int1 = @cur_value , f_int2 = @cur_value,
69125 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
69126 f_charbig = '#SINGLE#';
69127         
69128 # check single-2 success:       1
69129 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
69130 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
69131 UPDATE t1 SET f_int1 = @cur_value2
69132 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
69133         
69134 # check single-3 success:       1
69135 SET @cur_value1= -1;
69136 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
69137 UPDATE t1 SET f_int1 = @cur_value1
69138 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
69139         
69140 # check single-4 success:       1
69141 SELECT MAX(f_int1) INTO @cur_value FROM t1;
69142 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
69143         
69144 # check single-5 success:       1
69145 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
69146         
69147 # check single-6 success:       1
69148 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
69149 ERROR HY000: Table has no partition for value 2147483647
69150 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
69151 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
69152 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
69153 f_charbig = '#NULL#';
69154 INSERT INTO t1
69155 SET f_int1 = NULL , f_int2 = -@max_row,
69156 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
69157 f_charbig = '#NULL#';
69158 # check null success:    1
69159         
69160 # check null-1 success:         1
69161 UPDATE t1 SET f_int1 = -@max_row
69162 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
69163 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
69164         
69165 # check null-2 success:         1
69166 UPDATE t1 SET f_int1 = NULL
69167 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
69168 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
69169         
69170 # check null-3 success:         1
69171 DELETE FROM t1
69172 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
69173 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
69174         
69175 # check null-4 success:         1
69176 DELETE FROM t1
69177 WHERE f_int1 = 0 AND f_int2 = 0
69178 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
69179 AND f_charbig = '#NULL#';
69180 SET AUTOCOMMIT= 0;
69181 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
69182 SELECT f_int1, f_int1, '', '', 'was inserted'
69183 FROM t0_template source_tab
69184 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
69185         
69186 # check transactions-1 success:         1
69187 COMMIT WORK;
69188         
69189 # check transactions-2 success:         1
69190 ROLLBACK WORK;
69191         
69192 # check transactions-3 success:         1
69193 DELETE FROM t1 WHERE f_charbig = 'was inserted';
69194 COMMIT WORK;
69195 ROLLBACK WORK;
69196         
69197 # check transactions-4 success:         1
69198 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
69199 SELECT f_int1, f_int1, '', '', 'was inserted'
69200 FROM t0_template source_tab
69201 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
69202         
69203 # check transactions-5 success:         1
69204 ROLLBACK WORK;
69205 Warnings:
69206 Warning 1196    Some non-transactional changed tables couldn't be rolled back
69207         
69208 # check transactions-6 success:         1
69209 # INFO: Storage engine used for t1 seems to be not transactional.
69210 COMMIT;
69211         
69212 # check transactions-7 success:         1
69213 DELETE FROM t1 WHERE f_charbig = 'was inserted';
69214 COMMIT WORK;
69215 SET @@session.sql_mode = 'traditional';
69216 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
69217 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
69218 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
69219 '', '', 'was inserted' FROM t0_template
69220 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
69221 ERROR 22012: Division by 0
69222 COMMIT;
69223         
69224 # check transactions-8 success:         1
69225 # INFO: Storage engine used for t1 seems to be unable to revert
69226 #       changes made by the failing statement.
69227 SET @@session.sql_mode = '';
69228 SET AUTOCOMMIT= 1;
69229 DELETE FROM t1 WHERE f_charbig = 'was inserted';
69230 COMMIT WORK;
69231 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
69232         
69233 # check special-1 success:      1
69234 UPDATE t1 SET f_charbig = '';
69235         
69236 # check special-2 success:      1
69237 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
69238 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
69239 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
69240 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69241 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69242 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69243 'just inserted' FROM t0_template
69244 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69245 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
69246 BEGIN
69247 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69248 f_charbig = 'updated by trigger'
69249       WHERE f_int1 = new.f_int1;
69250 END|
69251 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69252 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
69253 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69254         
69255 # check trigger-1 success:      1
69256 DROP TRIGGER trg_1;
69257 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69258 f_int2 = CAST(f_char1 AS SIGNED INT),
69259 f_charbig = 'just inserted'
69260    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69261 DELETE FROM t0_aux
69262 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69263 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69264 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69265 'just inserted' FROM t0_template
69266 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69267 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
69268 BEGIN
69269 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69270 f_charbig = 'updated by trigger'
69271       WHERE f_int1 = new.f_int1;
69272 END|
69273 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69274 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
69275 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69276         
69277 # check trigger-2 success:      1
69278 DROP TRIGGER trg_1;
69279 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69280 f_int2 = CAST(f_char1 AS SIGNED INT),
69281 f_charbig = 'just inserted'
69282    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69283 DELETE FROM t0_aux
69284 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69285 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69286 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69287 'just inserted' FROM t0_template
69288 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69289 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
69290 BEGIN
69291 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69292 f_charbig = 'updated by trigger'
69293       WHERE f_int1 = new.f_int1;
69294 END|
69295 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
69296 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
69297         
69298 # check trigger-3 success:      1
69299 DROP TRIGGER trg_1;
69300 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69301 f_int2 = CAST(f_char1 AS SIGNED INT),
69302 f_charbig = 'just inserted'
69303    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69304 DELETE FROM t0_aux
69305 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69306 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69307 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69308 'just inserted' FROM t0_template
69309 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69310 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
69311 BEGIN
69312 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69313 f_charbig = 'updated by trigger'
69314       WHERE f_int1 = - old.f_int1;
69315 END|
69316 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
69317 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
69318         
69319 # check trigger-4 success:      1
69320 DROP TRIGGER trg_1;
69321 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69322 f_int2 = CAST(f_char1 AS SIGNED INT),
69323 f_charbig = 'just inserted'
69324    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69325 DELETE FROM t0_aux
69326 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69327 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69328 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69329 'just inserted' FROM t0_template
69330 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69331 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
69332 BEGIN
69333 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69334 f_charbig = 'updated by trigger'
69335       WHERE f_int1 = new.f_int1;
69336 END|
69337 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
69338 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
69339         
69340 # check trigger-5 success:      1
69341 DROP TRIGGER trg_1;
69342 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69343 f_int2 = CAST(f_char1 AS SIGNED INT),
69344 f_charbig = 'just inserted'
69345    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69346 DELETE FROM t0_aux
69347 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69348 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69349 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69350 'just inserted' FROM t0_template
69351 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69352 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
69353 BEGIN
69354 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69355 f_charbig = 'updated by trigger'
69356       WHERE f_int1 = - old.f_int1;
69357 END|
69358 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
69359 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
69360         
69361 # check trigger-6 success:      1
69362 DROP TRIGGER trg_1;
69363 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69364 f_int2 = CAST(f_char1 AS SIGNED INT),
69365 f_charbig = 'just inserted'
69366    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69367 DELETE FROM t0_aux
69368 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69369 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69370 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69371 'just inserted' FROM t0_template
69372 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69373 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
69374 BEGIN
69375 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69376 f_charbig = 'updated by trigger'
69377       WHERE f_int1 = - old.f_int1;
69378 END|
69379 DELETE FROM t0_aux
69380 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
69381         
69382 # check trigger-7 success:      1
69383 DROP TRIGGER trg_1;
69384 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69385 f_int2 = CAST(f_char1 AS SIGNED INT),
69386 f_charbig = 'just inserted'
69387    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69388 DELETE FROM t0_aux
69389 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69390 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69391 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69392 'just inserted' FROM t0_template
69393 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69394 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
69395 BEGIN
69396 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69397 f_charbig = 'updated by trigger'
69398       WHERE f_int1 = - old.f_int1;
69399 END|
69400 DELETE FROM t0_aux
69401 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
69402         
69403 # check trigger-8 success:      1
69404 DROP TRIGGER trg_1;
69405 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69406 f_int2 = CAST(f_char1 AS SIGNED INT),
69407 f_charbig = 'just inserted'
69408    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69409 DELETE FROM t0_aux
69410 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69411 DELETE FROM t1
69412 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69413 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
69414 BEGIN
69415 SET new.f_int1 = old.f_int1 + @max_row,
69416 new.f_int2 = old.f_int2 - @max_row,
69417 new.f_charbig = '####updated per update trigger####';
69418 END|
69419 UPDATE t1
69420 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
69421 f_charbig = '####updated per update statement itself####';
69422         
69423 # check trigger-9 success:      1
69424 DROP TRIGGER trg_2;
69425 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69426 f_int2 = CAST(f_char1 AS SIGNED INT),
69427 f_charbig = CONCAT('===',f_char1,'===');
69428 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
69429 BEGIN
69430 SET new.f_int1 = new.f_int1 + @max_row,
69431 new.f_int2 = new.f_int2 - @max_row,
69432 new.f_charbig = '####updated per update trigger####';
69433 END|
69434 UPDATE t1
69435 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
69436 f_charbig = '####updated per update statement itself####';
69437         
69438 # check trigger-10 success:     1
69439 DROP TRIGGER trg_2;
69440 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69441 f_int2 = CAST(f_char1 AS SIGNED INT),
69442 f_charbig = CONCAT('===',f_char1,'===');
69443 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
69444 BEGIN
69445 SET new.f_int1 = @my_max1 + @counter,
69446 new.f_int2 = @my_min2 - @counter,
69447 new.f_charbig = '####updated per insert trigger####';
69448 SET @counter = @counter + 1;
69449 END|
69450 SET @counter = 1;
69451 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
69452 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
69453 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
69454 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
69455 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
69456 ORDER BY f_int1;
69457 DROP TRIGGER trg_3;
69458         
69459 # check trigger-11 success:     1
69460 DELETE FROM t1
69461 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
69462 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
69463 AND f_charbig = '####updated per insert trigger####';
69464 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
69465 BEGIN
69466 SET new.f_int1 = @my_max1 + @counter,
69467 new.f_int2 = @my_min2 - @counter,
69468 new.f_charbig = '####updated per insert trigger####';
69469 SET @counter = @counter + 1;
69470 END|
69471 SET @counter = 1;
69472 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
69473 INSERT INTO t1 (f_char1, f_char2, f_charbig)
69474 SELECT CAST(f_int1 AS CHAR),
69475 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
69476 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
69477 ORDER BY f_int1;
69478 DROP TRIGGER trg_3;
69479         
69480 # check trigger-12 success:     1
69481 DELETE FROM t1
69482 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
69483 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
69484 AND f_charbig = '####updated per insert trigger####';
69485 ANALYZE  TABLE t1;
69486 Table   Op      Msg_type        Msg_text
69487 test.t1 analyze status  OK
69488 CHECK    TABLE t1 EXTENDED;
69489 Table   Op      Msg_type        Msg_text
69490 test.t1 check   status  OK
69491 CHECKSUM TABLE t1 EXTENDED;
69492 Table   Checksum
69493 test.t1 <some_value>
69494 OPTIMIZE TABLE t1;
69495 Table   Op      Msg_type        Msg_text
69496 test.t1 optimize        status  OK
69497 # check layout success:    1
69498 REPAIR   TABLE t1 EXTENDED;
69499 Table   Op      Msg_type        Msg_text
69500 test.t1 repair  status  OK
69501 # check layout success:    1
69502 TRUNCATE t1;
69503         
69504 # check TRUNCATE success:       1
69505 # check layout success:    1
69506 # End usability test (inc/partition_check.inc)
69507 DROP TABLE t1;
69508 CREATE TABLE t1 (
69509 f_int1 INTEGER,
69510 f_int2 INTEGER,
69511 f_char1 CHAR(20),
69512 f_char2 CHAR(20),
69513 f_charbig VARCHAR(1000)
69516 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
69517 (PARTITION part_1 VALUES IN (0)
69518 (SUBPARTITION sp11, SUBPARTITION sp12),
69519 PARTITION part_2 VALUES IN (1)
69520 (SUBPARTITION sp21, SUBPARTITION sp22),
69521 PARTITION part_3 VALUES IN (2)
69522 (SUBPARTITION sp31, SUBPARTITION sp32),
69523 PARTITION part_4 VALUES IN (NULL)
69524 (SUBPARTITION sp41, SUBPARTITION sp42));
69525 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
69526 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
69527 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
69528 ALTER TABLE t1 REBUILD PARTITION ALL;
69529 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
69530 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
69531 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
69532 # Start usability test (inc/partition_check.inc)
69533 create_command
69534 SHOW CREATE TABLE t1;
69535 Table   Create Table
69536 t1      CREATE TABLE `t1` (
69537   `f_int1` int(11) DEFAULT NULL,
69538   `f_int2` int(11) DEFAULT NULL,
69539   `f_char1` char(20) DEFAULT NULL,
69540   `f_char2` char(20) DEFAULT NULL,
69541   `f_charbig` varchar(1000) DEFAULT NULL
69542 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
69543 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
69544 SUBPARTITION BY HASH (f_int1 + 1)
69545 (PARTITION part_1 VALUES IN (0)
69546  (SUBPARTITION sp11 ENGINE = MyISAM,
69547   SUBPARTITION sp12 ENGINE = MyISAM),
69548  PARTITION part_2 VALUES IN (1)
69549  (SUBPARTITION sp21 ENGINE = MyISAM,
69550   SUBPARTITION sp22 ENGINE = MyISAM),
69551  PARTITION part_3 VALUES IN (2)
69552  (SUBPARTITION sp31 ENGINE = MyISAM,
69553   SUBPARTITION sp32 ENGINE = MyISAM),
69554  PARTITION part_4 VALUES IN (NULL)
69555  (SUBPARTITION sp41 ENGINE = MyISAM,
69556   SUBPARTITION sp42 ENGINE = MyISAM)) */
69558 unified filelist
69559 t1#P#part_1#SP#sp11.MYD
69560 t1#P#part_1#SP#sp11.MYI
69561 t1#P#part_1#SP#sp12.MYD
69562 t1#P#part_1#SP#sp12.MYI
69563 t1#P#part_2#SP#sp21.MYD
69564 t1#P#part_2#SP#sp21.MYI
69565 t1#P#part_2#SP#sp22.MYD
69566 t1#P#part_2#SP#sp22.MYI
69567 t1#P#part_3#SP#sp31.MYD
69568 t1#P#part_3#SP#sp31.MYI
69569 t1#P#part_3#SP#sp32.MYD
69570 t1#P#part_3#SP#sp32.MYI
69571 t1#P#part_4#SP#sp41.MYD
69572 t1#P#part_4#SP#sp41.MYI
69573 t1#P#part_4#SP#sp42.MYD
69574 t1#P#part_4#SP#sp42.MYI
69575 t1.frm
69576 t1.par
69578 # check prerequisites-1 success:    1
69579 # check COUNT(*) success:    1
69580 # check MIN/MAX(f_int1) success:    1
69581 # check MIN/MAX(f_int2) success:    1
69582 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
69583 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
69584 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
69585 WHERE f_int1 IN (2,3);
69586 # check prerequisites-3 success:    1
69587 DELETE FROM t1 WHERE f_charbig = 'delete me';
69588 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
69589 # check read via f_int1 success: 1
69590 # check read via f_int2 success: 1
69591         
69592 # check multiple-1 success:     1
69593 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
69594         
69595 # check multiple-2 success:     1
69596 INSERT INTO t1 SELECT * FROM t0_template
69597 WHERE MOD(f_int1,3) = 0;
69598         
69599 # check multiple-3 success:     1
69600 UPDATE t1 SET f_int1 = f_int1 + @max_row
69601 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
69602 AND @max_row_div2 + @max_row_div4;
69603         
69604 # check multiple-4 success:     1
69605 DELETE FROM t1
69606 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
69607 AND @max_row_div2 + @max_row_div4 + @max_row;
69608         
69609 # check multiple-5 success:     1
69610 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
69611 INSERT INTO t1
69612 SET f_int1 = @cur_value , f_int2 = @cur_value,
69613 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
69614 f_charbig = '#SINGLE#';
69615         
69616 # check single-1 success:       1
69617 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
69618 INSERT INTO t1
69619 SET f_int1 = @cur_value , f_int2 = @cur_value,
69620 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
69621 f_charbig = '#SINGLE#';
69622         
69623 # check single-2 success:       1
69624 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
69625 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
69626 UPDATE t1 SET f_int1 = @cur_value2
69627 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
69628         
69629 # check single-3 success:       1
69630 SET @cur_value1= -1;
69631 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
69632 UPDATE t1 SET f_int1 = @cur_value1
69633 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
69634         
69635 # check single-4 success:       1
69636 SELECT MAX(f_int1) INTO @cur_value FROM t1;
69637 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
69638         
69639 # check single-5 success:       1
69640 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
69641         
69642 # check single-6 success:       1
69643 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
69644         
69645 # check single-7 success:       1
69646 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
69647 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
69648 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
69649 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
69650 f_charbig = '#NULL#';
69651 INSERT INTO t1
69652 SET f_int1 = NULL , f_int2 = -@max_row,
69653 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
69654 f_charbig = '#NULL#';
69655 # check null success:    1
69656         
69657 # check null-1 success:         1
69658 UPDATE t1 SET f_int1 = -@max_row
69659 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
69660 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
69661         
69662 # check null-2 success:         1
69663 UPDATE t1 SET f_int1 = NULL
69664 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
69665 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
69666         
69667 # check null-3 success:         1
69668 DELETE FROM t1
69669 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
69670 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
69671         
69672 # check null-4 success:         1
69673 DELETE FROM t1
69674 WHERE f_int1 = 0 AND f_int2 = 0
69675 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
69676 AND f_charbig = '#NULL#';
69677 SET AUTOCOMMIT= 0;
69678 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
69679 SELECT f_int1, f_int1, '', '', 'was inserted'
69680 FROM t0_template source_tab
69681 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
69682         
69683 # check transactions-1 success:         1
69684 COMMIT WORK;
69685         
69686 # check transactions-2 success:         1
69687 ROLLBACK WORK;
69688         
69689 # check transactions-3 success:         1
69690 DELETE FROM t1 WHERE f_charbig = 'was inserted';
69691 COMMIT WORK;
69692 ROLLBACK WORK;
69693         
69694 # check transactions-4 success:         1
69695 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
69696 SELECT f_int1, f_int1, '', '', 'was inserted'
69697 FROM t0_template source_tab
69698 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
69699         
69700 # check transactions-5 success:         1
69701 ROLLBACK WORK;
69702 Warnings:
69703 Warning 1196    Some non-transactional changed tables couldn't be rolled back
69704         
69705 # check transactions-6 success:         1
69706 # INFO: Storage engine used for t1 seems to be not transactional.
69707 COMMIT;
69708         
69709 # check transactions-7 success:         1
69710 DELETE FROM t1 WHERE f_charbig = 'was inserted';
69711 COMMIT WORK;
69712 SET @@session.sql_mode = 'traditional';
69713 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
69714 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
69715 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
69716 '', '', 'was inserted' FROM t0_template
69717 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
69718 ERROR 22012: Division by 0
69719 COMMIT;
69720         
69721 # check transactions-8 success:         1
69722 # INFO: Storage engine used for t1 seems to be unable to revert
69723 #       changes made by the failing statement.
69724 SET @@session.sql_mode = '';
69725 SET AUTOCOMMIT= 1;
69726 DELETE FROM t1 WHERE f_charbig = 'was inserted';
69727 COMMIT WORK;
69728 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
69729         
69730 # check special-1 success:      1
69731 UPDATE t1 SET f_charbig = '';
69732         
69733 # check special-2 success:      1
69734 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
69735 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
69736 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
69737 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69738 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69739 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69740 'just inserted' FROM t0_template
69741 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69742 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
69743 BEGIN
69744 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69745 f_charbig = 'updated by trigger'
69746       WHERE f_int1 = new.f_int1;
69747 END|
69748 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69749 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
69750 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69751         
69752 # check trigger-1 success:      1
69753 DROP TRIGGER trg_1;
69754 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69755 f_int2 = CAST(f_char1 AS SIGNED INT),
69756 f_charbig = 'just inserted'
69757    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69758 DELETE FROM t0_aux
69759 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69760 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69761 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69762 'just inserted' FROM t0_template
69763 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69764 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
69765 BEGIN
69766 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69767 f_charbig = 'updated by trigger'
69768       WHERE f_int1 = new.f_int1;
69769 END|
69770 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69771 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
69772 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69773         
69774 # check trigger-2 success:      1
69775 DROP TRIGGER trg_1;
69776 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69777 f_int2 = CAST(f_char1 AS SIGNED INT),
69778 f_charbig = 'just inserted'
69779    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69780 DELETE FROM t0_aux
69781 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69782 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69783 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69784 'just inserted' FROM t0_template
69785 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69786 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
69787 BEGIN
69788 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69789 f_charbig = 'updated by trigger'
69790       WHERE f_int1 = new.f_int1;
69791 END|
69792 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
69793 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
69794         
69795 # check trigger-3 success:      1
69796 DROP TRIGGER trg_1;
69797 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69798 f_int2 = CAST(f_char1 AS SIGNED INT),
69799 f_charbig = 'just inserted'
69800    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69801 DELETE FROM t0_aux
69802 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69803 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69804 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69805 'just inserted' FROM t0_template
69806 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69807 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
69808 BEGIN
69809 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69810 f_charbig = 'updated by trigger'
69811       WHERE f_int1 = - old.f_int1;
69812 END|
69813 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
69814 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
69815         
69816 # check trigger-4 success:      1
69817 DROP TRIGGER trg_1;
69818 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69819 f_int2 = CAST(f_char1 AS SIGNED INT),
69820 f_charbig = 'just inserted'
69821    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69822 DELETE FROM t0_aux
69823 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69824 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69825 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69826 'just inserted' FROM t0_template
69827 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69828 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
69829 BEGIN
69830 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69831 f_charbig = 'updated by trigger'
69832       WHERE f_int1 = new.f_int1;
69833 END|
69834 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
69835 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
69836         
69837 # check trigger-5 success:      1
69838 DROP TRIGGER trg_1;
69839 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69840 f_int2 = CAST(f_char1 AS SIGNED INT),
69841 f_charbig = 'just inserted'
69842    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69843 DELETE FROM t0_aux
69844 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69845 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69846 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69847 'just inserted' FROM t0_template
69848 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69849 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
69850 BEGIN
69851 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69852 f_charbig = 'updated by trigger'
69853       WHERE f_int1 = - old.f_int1;
69854 END|
69855 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
69856 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
69857         
69858 # check trigger-6 success:      1
69859 DROP TRIGGER trg_1;
69860 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69861 f_int2 = CAST(f_char1 AS SIGNED INT),
69862 f_charbig = 'just inserted'
69863    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69864 DELETE FROM t0_aux
69865 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69866 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69867 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69868 'just inserted' FROM t0_template
69869 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69870 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
69871 BEGIN
69872 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69873 f_charbig = 'updated by trigger'
69874       WHERE f_int1 = - old.f_int1;
69875 END|
69876 DELETE FROM t0_aux
69877 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
69878         
69879 # check trigger-7 success:      1
69880 DROP TRIGGER trg_1;
69881 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69882 f_int2 = CAST(f_char1 AS SIGNED INT),
69883 f_charbig = 'just inserted'
69884    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69885 DELETE FROM t0_aux
69886 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69887 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
69888 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
69889 'just inserted' FROM t0_template
69890 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69891 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
69892 BEGIN
69893 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
69894 f_charbig = 'updated by trigger'
69895       WHERE f_int1 = - old.f_int1;
69896 END|
69897 DELETE FROM t0_aux
69898 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
69899         
69900 # check trigger-8 success:      1
69901 DROP TRIGGER trg_1;
69902 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69903 f_int2 = CAST(f_char1 AS SIGNED INT),
69904 f_charbig = 'just inserted'
69905    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
69906 DELETE FROM t0_aux
69907 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69908 DELETE FROM t1
69909 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
69910 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
69911 BEGIN
69912 SET new.f_int1 = old.f_int1 + @max_row,
69913 new.f_int2 = old.f_int2 - @max_row,
69914 new.f_charbig = '####updated per update trigger####';
69915 END|
69916 UPDATE t1
69917 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
69918 f_charbig = '####updated per update statement itself####';
69919         
69920 # check trigger-9 success:      1
69921 DROP TRIGGER trg_2;
69922 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69923 f_int2 = CAST(f_char1 AS SIGNED INT),
69924 f_charbig = CONCAT('===',f_char1,'===');
69925 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
69926 BEGIN
69927 SET new.f_int1 = new.f_int1 + @max_row,
69928 new.f_int2 = new.f_int2 - @max_row,
69929 new.f_charbig = '####updated per update trigger####';
69930 END|
69931 UPDATE t1
69932 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
69933 f_charbig = '####updated per update statement itself####';
69934         
69935 # check trigger-10 success:     1
69936 DROP TRIGGER trg_2;
69937 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
69938 f_int2 = CAST(f_char1 AS SIGNED INT),
69939 f_charbig = CONCAT('===',f_char1,'===');
69940 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
69941 BEGIN
69942 SET new.f_int1 = @my_max1 + @counter,
69943 new.f_int2 = @my_min2 - @counter,
69944 new.f_charbig = '####updated per insert trigger####';
69945 SET @counter = @counter + 1;
69946 END|
69947 SET @counter = 1;
69948 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
69949 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
69950 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
69951 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
69952 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
69953 ORDER BY f_int1;
69954 DROP TRIGGER trg_3;
69955         
69956 # check trigger-11 success:     1
69957 DELETE FROM t1
69958 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
69959 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
69960 AND f_charbig = '####updated per insert trigger####';
69961 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
69962 BEGIN
69963 SET new.f_int1 = @my_max1 + @counter,
69964 new.f_int2 = @my_min2 - @counter,
69965 new.f_charbig = '####updated per insert trigger####';
69966 SET @counter = @counter + 1;
69967 END|
69968 SET @counter = 1;
69969 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
69970 INSERT INTO t1 (f_char1, f_char2, f_charbig)
69971 SELECT CAST(f_int1 AS CHAR),
69972 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
69973 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
69974 ORDER BY f_int1;
69975 DROP TRIGGER trg_3;
69976         
69977 # check trigger-12 success:     1
69978 DELETE FROM t1
69979 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
69980 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
69981 AND f_charbig = '####updated per insert trigger####';
69982 ANALYZE  TABLE t1;
69983 Table   Op      Msg_type        Msg_text
69984 test.t1 analyze status  OK
69985 CHECK    TABLE t1 EXTENDED;
69986 Table   Op      Msg_type        Msg_text
69987 test.t1 check   status  OK
69988 CHECKSUM TABLE t1 EXTENDED;
69989 Table   Checksum
69990 test.t1 <some_value>
69991 OPTIMIZE TABLE t1;
69992 Table   Op      Msg_type        Msg_text
69993 test.t1 optimize        status  OK
69994 # check layout success:    1
69995 REPAIR   TABLE t1 EXTENDED;
69996 Table   Op      Msg_type        Msg_text
69997 test.t1 repair  status  OK
69998 # check layout success:    1
69999 TRUNCATE t1;
70000         
70001 # check TRUNCATE success:       1
70002 # check layout success:    1
70003 # End usability test (inc/partition_check.inc)
70004 DROP TABLE t1;
70005 CREATE TABLE t1 (
70006 f_int1 INTEGER,
70007 f_int2 INTEGER,
70008 f_char1 CHAR(20),
70009 f_char2 CHAR(20),
70010 f_charbig VARCHAR(1000)
70013 PARTITION BY LIST(ABS(MOD(f_int1,2)))
70014 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
70015 (PARTITION part_1 VALUES IN (0),
70016  PARTITION part_2 VALUES IN (1),
70017  PARTITION part_3 VALUES IN (NULL));
70018 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
70019 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
70020 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
70021 ALTER TABLE t1 REBUILD PARTITION ALL;
70022 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
70023 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
70024 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
70025 # Start usability test (inc/partition_check.inc)
70026 create_command
70027 SHOW CREATE TABLE t1;
70028 Table   Create Table
70029 t1      CREATE TABLE `t1` (
70030   `f_int1` int(11) DEFAULT NULL,
70031   `f_int2` int(11) DEFAULT NULL,
70032   `f_char1` char(20) DEFAULT NULL,
70033   `f_char2` char(20) DEFAULT NULL,
70034   `f_charbig` varchar(1000) DEFAULT NULL
70035 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
70036 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
70037 SUBPARTITION BY KEY (f_int1)
70038 SUBPARTITIONS 3
70039 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
70040  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
70041  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
70043 unified filelist
70044 t1#P#part_1#SP#part_1sp0.MYD
70045 t1#P#part_1#SP#part_1sp0.MYI
70046 t1#P#part_1#SP#part_1sp1.MYD
70047 t1#P#part_1#SP#part_1sp1.MYI
70048 t1#P#part_1#SP#part_1sp2.MYD
70049 t1#P#part_1#SP#part_1sp2.MYI
70050 t1#P#part_2#SP#part_2sp0.MYD
70051 t1#P#part_2#SP#part_2sp0.MYI
70052 t1#P#part_2#SP#part_2sp1.MYD
70053 t1#P#part_2#SP#part_2sp1.MYI
70054 t1#P#part_2#SP#part_2sp2.MYD
70055 t1#P#part_2#SP#part_2sp2.MYI
70056 t1#P#part_3#SP#part_3sp0.MYD
70057 t1#P#part_3#SP#part_3sp0.MYI
70058 t1#P#part_3#SP#part_3sp1.MYD
70059 t1#P#part_3#SP#part_3sp1.MYI
70060 t1#P#part_3#SP#part_3sp2.MYD
70061 t1#P#part_3#SP#part_3sp2.MYI
70062 t1.frm
70063 t1.par
70065 # check prerequisites-1 success:    1
70066 # check COUNT(*) success:    1
70067 # check MIN/MAX(f_int1) success:    1
70068 # check MIN/MAX(f_int2) success:    1
70069 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
70070 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
70071 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
70072 WHERE f_int1 IN (2,3);
70073 # check prerequisites-3 success:    1
70074 DELETE FROM t1 WHERE f_charbig = 'delete me';
70075 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
70076 # check read via f_int1 success: 1
70077 # check read via f_int2 success: 1
70078         
70079 # check multiple-1 success:     1
70080 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
70081         
70082 # check multiple-2 success:     1
70083 INSERT INTO t1 SELECT * FROM t0_template
70084 WHERE MOD(f_int1,3) = 0;
70085         
70086 # check multiple-3 success:     1
70087 UPDATE t1 SET f_int1 = f_int1 + @max_row
70088 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
70089 AND @max_row_div2 + @max_row_div4;
70090         
70091 # check multiple-4 success:     1
70092 DELETE FROM t1
70093 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
70094 AND @max_row_div2 + @max_row_div4 + @max_row;
70095         
70096 # check multiple-5 success:     1
70097 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
70098 INSERT INTO t1
70099 SET f_int1 = @cur_value , f_int2 = @cur_value,
70100 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
70101 f_charbig = '#SINGLE#';
70102         
70103 # check single-1 success:       1
70104 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
70105 INSERT INTO t1
70106 SET f_int1 = @cur_value , f_int2 = @cur_value,
70107 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
70108 f_charbig = '#SINGLE#';
70109         
70110 # check single-2 success:       1
70111 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
70112 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
70113 UPDATE t1 SET f_int1 = @cur_value2
70114 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
70115         
70116 # check single-3 success:       1
70117 SET @cur_value1= -1;
70118 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
70119 UPDATE t1 SET f_int1 = @cur_value1
70120 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
70121         
70122 # check single-4 success:       1
70123 SELECT MAX(f_int1) INTO @cur_value FROM t1;
70124 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
70125         
70126 # check single-5 success:       1
70127 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
70128         
70129 # check single-6 success:       1
70130 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
70131         
70132 # check single-7 success:       1
70133 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
70134 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
70135 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
70136 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
70137 f_charbig = '#NULL#';
70138 INSERT INTO t1
70139 SET f_int1 = NULL , f_int2 = -@max_row,
70140 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
70141 f_charbig = '#NULL#';
70142 # check null success:    1
70143         
70144 # check null-1 success:         1
70145 UPDATE t1 SET f_int1 = -@max_row
70146 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
70147 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
70148         
70149 # check null-2 success:         1
70150 UPDATE t1 SET f_int1 = NULL
70151 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
70152 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
70153         
70154 # check null-3 success:         1
70155 DELETE FROM t1
70156 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
70157 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
70158         
70159 # check null-4 success:         1
70160 DELETE FROM t1
70161 WHERE f_int1 = 0 AND f_int2 = 0
70162 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
70163 AND f_charbig = '#NULL#';
70164 SET AUTOCOMMIT= 0;
70165 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
70166 SELECT f_int1, f_int1, '', '', 'was inserted'
70167 FROM t0_template source_tab
70168 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
70169         
70170 # check transactions-1 success:         1
70171 COMMIT WORK;
70172         
70173 # check transactions-2 success:         1
70174 ROLLBACK WORK;
70175         
70176 # check transactions-3 success:         1
70177 DELETE FROM t1 WHERE f_charbig = 'was inserted';
70178 COMMIT WORK;
70179 ROLLBACK WORK;
70180         
70181 # check transactions-4 success:         1
70182 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
70183 SELECT f_int1, f_int1, '', '', 'was inserted'
70184 FROM t0_template source_tab
70185 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
70186         
70187 # check transactions-5 success:         1
70188 ROLLBACK WORK;
70189 Warnings:
70190 Warning 1196    Some non-transactional changed tables couldn't be rolled back
70191         
70192 # check transactions-6 success:         1
70193 # INFO: Storage engine used for t1 seems to be not transactional.
70194 COMMIT;
70195         
70196 # check transactions-7 success:         1
70197 DELETE FROM t1 WHERE f_charbig = 'was inserted';
70198 COMMIT WORK;
70199 SET @@session.sql_mode = 'traditional';
70200 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
70201 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
70202 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
70203 '', '', 'was inserted' FROM t0_template
70204 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
70205 ERROR 22012: Division by 0
70206 COMMIT;
70207         
70208 # check transactions-8 success:         1
70209 # INFO: Storage engine used for t1 seems to be unable to revert
70210 #       changes made by the failing statement.
70211 SET @@session.sql_mode = '';
70212 SET AUTOCOMMIT= 1;
70213 DELETE FROM t1 WHERE f_charbig = 'was inserted';
70214 COMMIT WORK;
70215 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
70216         
70217 # check special-1 success:      1
70218 UPDATE t1 SET f_charbig = '';
70219         
70220 # check special-2 success:      1
70221 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
70222 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
70223 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
70224 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70225 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70226 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70227 'just inserted' FROM t0_template
70228 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70229 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
70230 BEGIN
70231 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70232 f_charbig = 'updated by trigger'
70233       WHERE f_int1 = new.f_int1;
70234 END|
70235 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70236 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
70237 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70238         
70239 # check trigger-1 success:      1
70240 DROP TRIGGER trg_1;
70241 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70242 f_int2 = CAST(f_char1 AS SIGNED INT),
70243 f_charbig = 'just inserted'
70244    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70245 DELETE FROM t0_aux
70246 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70247 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70248 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70249 'just inserted' FROM t0_template
70250 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70251 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
70252 BEGIN
70253 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70254 f_charbig = 'updated by trigger'
70255       WHERE f_int1 = new.f_int1;
70256 END|
70257 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70258 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
70259 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70260         
70261 # check trigger-2 success:      1
70262 DROP TRIGGER trg_1;
70263 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70264 f_int2 = CAST(f_char1 AS SIGNED INT),
70265 f_charbig = 'just inserted'
70266    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70267 DELETE FROM t0_aux
70268 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70269 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70270 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70271 'just inserted' FROM t0_template
70272 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70273 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
70274 BEGIN
70275 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70276 f_charbig = 'updated by trigger'
70277       WHERE f_int1 = new.f_int1;
70278 END|
70279 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
70280 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
70281         
70282 # check trigger-3 success:      1
70283 DROP TRIGGER trg_1;
70284 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70285 f_int2 = CAST(f_char1 AS SIGNED INT),
70286 f_charbig = 'just inserted'
70287    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70288 DELETE FROM t0_aux
70289 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70290 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70291 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70292 'just inserted' FROM t0_template
70293 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70294 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
70295 BEGIN
70296 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70297 f_charbig = 'updated by trigger'
70298       WHERE f_int1 = - old.f_int1;
70299 END|
70300 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
70301 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
70302         
70303 # check trigger-4 success:      1
70304 DROP TRIGGER trg_1;
70305 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70306 f_int2 = CAST(f_char1 AS SIGNED INT),
70307 f_charbig = 'just inserted'
70308    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70309 DELETE FROM t0_aux
70310 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70311 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70312 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70313 'just inserted' FROM t0_template
70314 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70315 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
70316 BEGIN
70317 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70318 f_charbig = 'updated by trigger'
70319       WHERE f_int1 = new.f_int1;
70320 END|
70321 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
70322 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
70323         
70324 # check trigger-5 success:      1
70325 DROP TRIGGER trg_1;
70326 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70327 f_int2 = CAST(f_char1 AS SIGNED INT),
70328 f_charbig = 'just inserted'
70329    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70330 DELETE FROM t0_aux
70331 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70332 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70333 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70334 'just inserted' FROM t0_template
70335 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70336 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
70337 BEGIN
70338 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70339 f_charbig = 'updated by trigger'
70340       WHERE f_int1 = - old.f_int1;
70341 END|
70342 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
70343 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
70344         
70345 # check trigger-6 success:      1
70346 DROP TRIGGER trg_1;
70347 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70348 f_int2 = CAST(f_char1 AS SIGNED INT),
70349 f_charbig = 'just inserted'
70350    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70351 DELETE FROM t0_aux
70352 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70353 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70354 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70355 'just inserted' FROM t0_template
70356 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70357 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
70358 BEGIN
70359 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70360 f_charbig = 'updated by trigger'
70361       WHERE f_int1 = - old.f_int1;
70362 END|
70363 DELETE FROM t0_aux
70364 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
70365         
70366 # check trigger-7 success:      1
70367 DROP TRIGGER trg_1;
70368 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70369 f_int2 = CAST(f_char1 AS SIGNED INT),
70370 f_charbig = 'just inserted'
70371    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70372 DELETE FROM t0_aux
70373 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70374 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70375 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70376 'just inserted' FROM t0_template
70377 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70378 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
70379 BEGIN
70380 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70381 f_charbig = 'updated by trigger'
70382       WHERE f_int1 = - old.f_int1;
70383 END|
70384 DELETE FROM t0_aux
70385 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
70386         
70387 # check trigger-8 success:      1
70388 DROP TRIGGER trg_1;
70389 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70390 f_int2 = CAST(f_char1 AS SIGNED INT),
70391 f_charbig = 'just inserted'
70392    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70393 DELETE FROM t0_aux
70394 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70395 DELETE FROM t1
70396 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70397 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
70398 BEGIN
70399 SET new.f_int1 = old.f_int1 + @max_row,
70400 new.f_int2 = old.f_int2 - @max_row,
70401 new.f_charbig = '####updated per update trigger####';
70402 END|
70403 UPDATE t1
70404 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
70405 f_charbig = '####updated per update statement itself####';
70406         
70407 # check trigger-9 success:      1
70408 DROP TRIGGER trg_2;
70409 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70410 f_int2 = CAST(f_char1 AS SIGNED INT),
70411 f_charbig = CONCAT('===',f_char1,'===');
70412 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
70413 BEGIN
70414 SET new.f_int1 = new.f_int1 + @max_row,
70415 new.f_int2 = new.f_int2 - @max_row,
70416 new.f_charbig = '####updated per update trigger####';
70417 END|
70418 UPDATE t1
70419 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
70420 f_charbig = '####updated per update statement itself####';
70421         
70422 # check trigger-10 success:     1
70423 DROP TRIGGER trg_2;
70424 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70425 f_int2 = CAST(f_char1 AS SIGNED INT),
70426 f_charbig = CONCAT('===',f_char1,'===');
70427 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
70428 BEGIN
70429 SET new.f_int1 = @my_max1 + @counter,
70430 new.f_int2 = @my_min2 - @counter,
70431 new.f_charbig = '####updated per insert trigger####';
70432 SET @counter = @counter + 1;
70433 END|
70434 SET @counter = 1;
70435 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
70436 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
70437 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
70438 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
70439 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
70440 ORDER BY f_int1;
70441 DROP TRIGGER trg_3;
70442         
70443 # check trigger-11 success:     1
70444 DELETE FROM t1
70445 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
70446 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
70447 AND f_charbig = '####updated per insert trigger####';
70448 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
70449 BEGIN
70450 SET new.f_int1 = @my_max1 + @counter,
70451 new.f_int2 = @my_min2 - @counter,
70452 new.f_charbig = '####updated per insert trigger####';
70453 SET @counter = @counter + 1;
70454 END|
70455 SET @counter = 1;
70456 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
70457 INSERT INTO t1 (f_char1, f_char2, f_charbig)
70458 SELECT CAST(f_int1 AS CHAR),
70459 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
70460 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
70461 ORDER BY f_int1;
70462 DROP TRIGGER trg_3;
70463         
70464 # check trigger-12 success:     1
70465 DELETE FROM t1
70466 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
70467 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
70468 AND f_charbig = '####updated per insert trigger####';
70469 ANALYZE  TABLE t1;
70470 Table   Op      Msg_type        Msg_text
70471 test.t1 analyze status  OK
70472 CHECK    TABLE t1 EXTENDED;
70473 Table   Op      Msg_type        Msg_text
70474 test.t1 check   status  OK
70475 CHECKSUM TABLE t1 EXTENDED;
70476 Table   Checksum
70477 test.t1 <some_value>
70478 OPTIMIZE TABLE t1;
70479 Table   Op      Msg_type        Msg_text
70480 test.t1 optimize        status  OK
70481 # check layout success:    1
70482 REPAIR   TABLE t1 EXTENDED;
70483 Table   Op      Msg_type        Msg_text
70484 test.t1 repair  status  OK
70485 # check layout success:    1
70486 TRUNCATE t1;
70487         
70488 # check TRUNCATE success:       1
70489 # check layout success:    1
70490 # End usability test (inc/partition_check.inc)
70491 DROP TABLE t1;
70492 #------------------------------------------------------------------------
70493 #  5   ALTER ... REPAIR PARTITION
70494 #------------------------------------------------------------------------
70495 #  5.1 ALTER ... REPAIR PARTITION part_1;
70496 DROP TABLE IF EXISTS t1;
70497 CREATE TABLE t1 (
70498 f_int1 INTEGER,
70499 f_int2 INTEGER,
70500 f_char1 CHAR(20),
70501 f_char2 CHAR(20),
70502 f_charbig VARCHAR(1000)
70505 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
70506 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
70507 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
70508 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
70509 ALTER TABLE t1 REPAIR PARTITION part_1;
70510 Table   Op      Msg_type        Msg_text
70511 test.t1 repair  status  OK
70512 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
70513 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
70514 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
70515 # Start usability test (inc/partition_check.inc)
70516 create_command
70517 SHOW CREATE TABLE t1;
70518 Table   Create Table
70519 t1      CREATE TABLE `t1` (
70520   `f_int1` int(11) DEFAULT NULL,
70521   `f_int2` int(11) DEFAULT NULL,
70522   `f_char1` char(20) DEFAULT NULL,
70523   `f_char2` char(20) DEFAULT NULL,
70524   `f_charbig` varchar(1000) DEFAULT NULL
70525 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
70526 /*!50100 PARTITION BY HASH (f_int1)
70527 (PARTITION part_1 ENGINE = MyISAM,
70528  PARTITION part_2 ENGINE = MyISAM) */
70530 unified filelist
70531 t1#P#part_1.MYD
70532 t1#P#part_1.MYI
70533 t1#P#part_2.MYD
70534 t1#P#part_2.MYI
70535 t1.frm
70536 t1.par
70538 # check prerequisites-1 success:    1
70539 # check COUNT(*) success:    1
70540 # check MIN/MAX(f_int1) success:    1
70541 # check MIN/MAX(f_int2) success:    1
70542 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
70543 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
70544 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
70545 WHERE f_int1 IN (2,3);
70546 # check prerequisites-3 success:    1
70547 DELETE FROM t1 WHERE f_charbig = 'delete me';
70548 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
70549 # check read via f_int1 success: 1
70550 # check read via f_int2 success: 1
70551         
70552 # check multiple-1 success:     1
70553 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
70554         
70555 # check multiple-2 success:     1
70556 INSERT INTO t1 SELECT * FROM t0_template
70557 WHERE MOD(f_int1,3) = 0;
70558         
70559 # check multiple-3 success:     1
70560 UPDATE t1 SET f_int1 = f_int1 + @max_row
70561 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
70562 AND @max_row_div2 + @max_row_div4;
70563         
70564 # check multiple-4 success:     1
70565 DELETE FROM t1
70566 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
70567 AND @max_row_div2 + @max_row_div4 + @max_row;
70568         
70569 # check multiple-5 success:     1
70570 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
70571 INSERT INTO t1
70572 SET f_int1 = @cur_value , f_int2 = @cur_value,
70573 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
70574 f_charbig = '#SINGLE#';
70575         
70576 # check single-1 success:       1
70577 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
70578 INSERT INTO t1
70579 SET f_int1 = @cur_value , f_int2 = @cur_value,
70580 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
70581 f_charbig = '#SINGLE#';
70582         
70583 # check single-2 success:       1
70584 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
70585 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
70586 UPDATE t1 SET f_int1 = @cur_value2
70587 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
70588         
70589 # check single-3 success:       1
70590 SET @cur_value1= -1;
70591 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
70592 UPDATE t1 SET f_int1 = @cur_value1
70593 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
70594         
70595 # check single-4 success:       1
70596 SELECT MAX(f_int1) INTO @cur_value FROM t1;
70597 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
70598         
70599 # check single-5 success:       1
70600 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
70601         
70602 # check single-6 success:       1
70603 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
70604         
70605 # check single-7 success:       1
70606 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
70607 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
70608 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
70609 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
70610 f_charbig = '#NULL#';
70611 INSERT INTO t1
70612 SET f_int1 = NULL , f_int2 = -@max_row,
70613 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
70614 f_charbig = '#NULL#';
70615 # check null success:    1
70616         
70617 # check null-1 success:         1
70618 UPDATE t1 SET f_int1 = -@max_row
70619 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
70620 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
70621         
70622 # check null-2 success:         1
70623 UPDATE t1 SET f_int1 = NULL
70624 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
70625 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
70626         
70627 # check null-3 success:         1
70628 DELETE FROM t1
70629 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
70630 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
70631         
70632 # check null-4 success:         1
70633 DELETE FROM t1
70634 WHERE f_int1 = 0 AND f_int2 = 0
70635 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
70636 AND f_charbig = '#NULL#';
70637 SET AUTOCOMMIT= 0;
70638 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
70639 SELECT f_int1, f_int1, '', '', 'was inserted'
70640 FROM t0_template source_tab
70641 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
70642         
70643 # check transactions-1 success:         1
70644 COMMIT WORK;
70645         
70646 # check transactions-2 success:         1
70647 ROLLBACK WORK;
70648         
70649 # check transactions-3 success:         1
70650 DELETE FROM t1 WHERE f_charbig = 'was inserted';
70651 COMMIT WORK;
70652 ROLLBACK WORK;
70653         
70654 # check transactions-4 success:         1
70655 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
70656 SELECT f_int1, f_int1, '', '', 'was inserted'
70657 FROM t0_template source_tab
70658 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
70659         
70660 # check transactions-5 success:         1
70661 ROLLBACK WORK;
70662 Warnings:
70663 Warning 1196    Some non-transactional changed tables couldn't be rolled back
70664         
70665 # check transactions-6 success:         1
70666 # INFO: Storage engine used for t1 seems to be not transactional.
70667 COMMIT;
70668         
70669 # check transactions-7 success:         1
70670 DELETE FROM t1 WHERE f_charbig = 'was inserted';
70671 COMMIT WORK;
70672 SET @@session.sql_mode = 'traditional';
70673 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
70674 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
70675 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
70676 '', '', 'was inserted' FROM t0_template
70677 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
70678 ERROR 22012: Division by 0
70679 COMMIT;
70680         
70681 # check transactions-8 success:         1
70682 # INFO: Storage engine used for t1 seems to be unable to revert
70683 #       changes made by the failing statement.
70684 SET @@session.sql_mode = '';
70685 SET AUTOCOMMIT= 1;
70686 DELETE FROM t1 WHERE f_charbig = 'was inserted';
70687 COMMIT WORK;
70688 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
70689         
70690 # check special-1 success:      1
70691 UPDATE t1 SET f_charbig = '';
70692         
70693 # check special-2 success:      1
70694 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
70695 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
70696 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
70697 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70698 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70699 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70700 'just inserted' FROM t0_template
70701 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70702 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
70703 BEGIN
70704 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70705 f_charbig = 'updated by trigger'
70706       WHERE f_int1 = new.f_int1;
70707 END|
70708 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70709 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
70710 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70711         
70712 # check trigger-1 success:      1
70713 DROP TRIGGER trg_1;
70714 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70715 f_int2 = CAST(f_char1 AS SIGNED INT),
70716 f_charbig = 'just inserted'
70717    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70718 DELETE FROM t0_aux
70719 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70720 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70721 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70722 'just inserted' FROM t0_template
70723 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70724 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
70725 BEGIN
70726 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70727 f_charbig = 'updated by trigger'
70728       WHERE f_int1 = new.f_int1;
70729 END|
70730 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70731 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
70732 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70733         
70734 # check trigger-2 success:      1
70735 DROP TRIGGER trg_1;
70736 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70737 f_int2 = CAST(f_char1 AS SIGNED INT),
70738 f_charbig = 'just inserted'
70739    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70740 DELETE FROM t0_aux
70741 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70742 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70743 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70744 'just inserted' FROM t0_template
70745 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70746 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
70747 BEGIN
70748 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70749 f_charbig = 'updated by trigger'
70750       WHERE f_int1 = new.f_int1;
70751 END|
70752 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
70753 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
70754         
70755 # check trigger-3 success:      1
70756 DROP TRIGGER trg_1;
70757 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70758 f_int2 = CAST(f_char1 AS SIGNED INT),
70759 f_charbig = 'just inserted'
70760    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70761 DELETE FROM t0_aux
70762 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70763 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70764 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70765 'just inserted' FROM t0_template
70766 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70767 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
70768 BEGIN
70769 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70770 f_charbig = 'updated by trigger'
70771       WHERE f_int1 = - old.f_int1;
70772 END|
70773 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
70774 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
70775         
70776 # check trigger-4 success:      1
70777 DROP TRIGGER trg_1;
70778 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70779 f_int2 = CAST(f_char1 AS SIGNED INT),
70780 f_charbig = 'just inserted'
70781    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70782 DELETE FROM t0_aux
70783 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70784 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70785 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70786 'just inserted' FROM t0_template
70787 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70788 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
70789 BEGIN
70790 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70791 f_charbig = 'updated by trigger'
70792       WHERE f_int1 = new.f_int1;
70793 END|
70794 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
70795 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
70796         
70797 # check trigger-5 success:      1
70798 DROP TRIGGER trg_1;
70799 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70800 f_int2 = CAST(f_char1 AS SIGNED INT),
70801 f_charbig = 'just inserted'
70802    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70803 DELETE FROM t0_aux
70804 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70805 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70806 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70807 'just inserted' FROM t0_template
70808 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70809 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
70810 BEGIN
70811 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70812 f_charbig = 'updated by trigger'
70813       WHERE f_int1 = - old.f_int1;
70814 END|
70815 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
70816 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
70817         
70818 # check trigger-6 success:      1
70819 DROP TRIGGER trg_1;
70820 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70821 f_int2 = CAST(f_char1 AS SIGNED INT),
70822 f_charbig = 'just inserted'
70823    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70824 DELETE FROM t0_aux
70825 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70826 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70827 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70828 'just inserted' FROM t0_template
70829 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70830 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
70831 BEGIN
70832 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70833 f_charbig = 'updated by trigger'
70834       WHERE f_int1 = - old.f_int1;
70835 END|
70836 DELETE FROM t0_aux
70837 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
70838         
70839 # check trigger-7 success:      1
70840 DROP TRIGGER trg_1;
70841 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70842 f_int2 = CAST(f_char1 AS SIGNED INT),
70843 f_charbig = 'just inserted'
70844    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70845 DELETE FROM t0_aux
70846 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70847 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
70848 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
70849 'just inserted' FROM t0_template
70850 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70851 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
70852 BEGIN
70853 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
70854 f_charbig = 'updated by trigger'
70855       WHERE f_int1 = - old.f_int1;
70856 END|
70857 DELETE FROM t0_aux
70858 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
70859         
70860 # check trigger-8 success:      1
70861 DROP TRIGGER trg_1;
70862 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70863 f_int2 = CAST(f_char1 AS SIGNED INT),
70864 f_charbig = 'just inserted'
70865    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
70866 DELETE FROM t0_aux
70867 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70868 DELETE FROM t1
70869 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
70870 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
70871 BEGIN
70872 SET new.f_int1 = old.f_int1 + @max_row,
70873 new.f_int2 = old.f_int2 - @max_row,
70874 new.f_charbig = '####updated per update trigger####';
70875 END|
70876 UPDATE t1
70877 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
70878 f_charbig = '####updated per update statement itself####';
70879         
70880 # check trigger-9 success:      1
70881 DROP TRIGGER trg_2;
70882 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70883 f_int2 = CAST(f_char1 AS SIGNED INT),
70884 f_charbig = CONCAT('===',f_char1,'===');
70885 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
70886 BEGIN
70887 SET new.f_int1 = new.f_int1 + @max_row,
70888 new.f_int2 = new.f_int2 - @max_row,
70889 new.f_charbig = '####updated per update trigger####';
70890 END|
70891 UPDATE t1
70892 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
70893 f_charbig = '####updated per update statement itself####';
70894         
70895 # check trigger-10 success:     1
70896 DROP TRIGGER trg_2;
70897 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
70898 f_int2 = CAST(f_char1 AS SIGNED INT),
70899 f_charbig = CONCAT('===',f_char1,'===');
70900 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
70901 BEGIN
70902 SET new.f_int1 = @my_max1 + @counter,
70903 new.f_int2 = @my_min2 - @counter,
70904 new.f_charbig = '####updated per insert trigger####';
70905 SET @counter = @counter + 1;
70906 END|
70907 SET @counter = 1;
70908 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
70909 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
70910 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
70911 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
70912 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
70913 ORDER BY f_int1;
70914 DROP TRIGGER trg_3;
70915         
70916 # check trigger-11 success:     1
70917 DELETE FROM t1
70918 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
70919 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
70920 AND f_charbig = '####updated per insert trigger####';
70921 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
70922 BEGIN
70923 SET new.f_int1 = @my_max1 + @counter,
70924 new.f_int2 = @my_min2 - @counter,
70925 new.f_charbig = '####updated per insert trigger####';
70926 SET @counter = @counter + 1;
70927 END|
70928 SET @counter = 1;
70929 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
70930 INSERT INTO t1 (f_char1, f_char2, f_charbig)
70931 SELECT CAST(f_int1 AS CHAR),
70932 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
70933 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
70934 ORDER BY f_int1;
70935 DROP TRIGGER trg_3;
70936         
70937 # check trigger-12 success:     1
70938 DELETE FROM t1
70939 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
70940 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
70941 AND f_charbig = '####updated per insert trigger####';
70942 ANALYZE  TABLE t1;
70943 Table   Op      Msg_type        Msg_text
70944 test.t1 analyze status  OK
70945 CHECK    TABLE t1 EXTENDED;
70946 Table   Op      Msg_type        Msg_text
70947 test.t1 check   status  OK
70948 CHECKSUM TABLE t1 EXTENDED;
70949 Table   Checksum
70950 test.t1 <some_value>
70951 OPTIMIZE TABLE t1;
70952 Table   Op      Msg_type        Msg_text
70953 test.t1 optimize        status  OK
70954 # check layout success:    1
70955 REPAIR   TABLE t1 EXTENDED;
70956 Table   Op      Msg_type        Msg_text
70957 test.t1 repair  status  OK
70958 # check layout success:    1
70959 TRUNCATE t1;
70960         
70961 # check TRUNCATE success:       1
70962 # check layout success:    1
70963 # End usability test (inc/partition_check.inc)
70964 DROP TABLE t1;
70965 CREATE TABLE t1 (
70966 f_int1 INTEGER,
70967 f_int2 INTEGER,
70968 f_char1 CHAR(20),
70969 f_char2 CHAR(20),
70970 f_charbig VARCHAR(1000)
70973 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
70974 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
70975 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
70976 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
70977 ALTER TABLE t1 REPAIR PARTITION part_1;
70978 Table   Op      Msg_type        Msg_text
70979 test.t1 repair  status  OK
70980 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
70981 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
70982 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
70983 # Start usability test (inc/partition_check.inc)
70984 create_command
70985 SHOW CREATE TABLE t1;
70986 Table   Create Table
70987 t1      CREATE TABLE `t1` (
70988   `f_int1` int(11) DEFAULT NULL,
70989   `f_int2` int(11) DEFAULT NULL,
70990   `f_char1` char(20) DEFAULT NULL,
70991   `f_char2` char(20) DEFAULT NULL,
70992   `f_charbig` varchar(1000) DEFAULT NULL
70993 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
70994 /*!50100 PARTITION BY KEY (f_int1)
70995 (PARTITION part_1 ENGINE = MyISAM,
70996  PARTITION part_2 ENGINE = MyISAM,
70997  PARTITION part_3 ENGINE = MyISAM,
70998  PARTITION part_4 ENGINE = MyISAM,
70999  PARTITION part_5 ENGINE = MyISAM) */
71001 unified filelist
71002 t1#P#part_1.MYD
71003 t1#P#part_1.MYI
71004 t1#P#part_2.MYD
71005 t1#P#part_2.MYI
71006 t1#P#part_3.MYD
71007 t1#P#part_3.MYI
71008 t1#P#part_4.MYD
71009 t1#P#part_4.MYI
71010 t1#P#part_5.MYD
71011 t1#P#part_5.MYI
71012 t1.frm
71013 t1.par
71015 # check prerequisites-1 success:    1
71016 # check COUNT(*) success:    1
71017 # check MIN/MAX(f_int1) success:    1
71018 # check MIN/MAX(f_int2) success:    1
71019 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
71020 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
71021 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
71022 WHERE f_int1 IN (2,3);
71023 # check prerequisites-3 success:    1
71024 DELETE FROM t1 WHERE f_charbig = 'delete me';
71025 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
71026 # check read via f_int1 success: 1
71027 # check read via f_int2 success: 1
71028         
71029 # check multiple-1 success:     1
71030 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
71031         
71032 # check multiple-2 success:     1
71033 INSERT INTO t1 SELECT * FROM t0_template
71034 WHERE MOD(f_int1,3) = 0;
71035         
71036 # check multiple-3 success:     1
71037 UPDATE t1 SET f_int1 = f_int1 + @max_row
71038 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
71039 AND @max_row_div2 + @max_row_div4;
71040         
71041 # check multiple-4 success:     1
71042 DELETE FROM t1
71043 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
71044 AND @max_row_div2 + @max_row_div4 + @max_row;
71045         
71046 # check multiple-5 success:     1
71047 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
71048 INSERT INTO t1
71049 SET f_int1 = @cur_value , f_int2 = @cur_value,
71050 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
71051 f_charbig = '#SINGLE#';
71052         
71053 # check single-1 success:       1
71054 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
71055 INSERT INTO t1
71056 SET f_int1 = @cur_value , f_int2 = @cur_value,
71057 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
71058 f_charbig = '#SINGLE#';
71059         
71060 # check single-2 success:       1
71061 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
71062 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
71063 UPDATE t1 SET f_int1 = @cur_value2
71064 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
71065         
71066 # check single-3 success:       1
71067 SET @cur_value1= -1;
71068 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
71069 UPDATE t1 SET f_int1 = @cur_value1
71070 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
71071         
71072 # check single-4 success:       1
71073 SELECT MAX(f_int1) INTO @cur_value FROM t1;
71074 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
71075         
71076 # check single-5 success:       1
71077 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
71078         
71079 # check single-6 success:       1
71080 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
71081         
71082 # check single-7 success:       1
71083 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
71084 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
71085 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
71086 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
71087 f_charbig = '#NULL#';
71088 INSERT INTO t1
71089 SET f_int1 = NULL , f_int2 = -@max_row,
71090 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
71091 f_charbig = '#NULL#';
71092 # check null success:    1
71093         
71094 # check null-1 success:         1
71095 UPDATE t1 SET f_int1 = -@max_row
71096 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
71097 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
71098         
71099 # check null-2 success:         1
71100 UPDATE t1 SET f_int1 = NULL
71101 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
71102 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
71103         
71104 # check null-3 success:         1
71105 DELETE FROM t1
71106 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
71107 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
71108         
71109 # check null-4 success:         1
71110 DELETE FROM t1
71111 WHERE f_int1 = 0 AND f_int2 = 0
71112 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
71113 AND f_charbig = '#NULL#';
71114 SET AUTOCOMMIT= 0;
71115 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
71116 SELECT f_int1, f_int1, '', '', 'was inserted'
71117 FROM t0_template source_tab
71118 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
71119         
71120 # check transactions-1 success:         1
71121 COMMIT WORK;
71122         
71123 # check transactions-2 success:         1
71124 ROLLBACK WORK;
71125         
71126 # check transactions-3 success:         1
71127 DELETE FROM t1 WHERE f_charbig = 'was inserted';
71128 COMMIT WORK;
71129 ROLLBACK WORK;
71130         
71131 # check transactions-4 success:         1
71132 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
71133 SELECT f_int1, f_int1, '', '', 'was inserted'
71134 FROM t0_template source_tab
71135 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
71136         
71137 # check transactions-5 success:         1
71138 ROLLBACK WORK;
71139 Warnings:
71140 Warning 1196    Some non-transactional changed tables couldn't be rolled back
71141         
71142 # check transactions-6 success:         1
71143 # INFO: Storage engine used for t1 seems to be not transactional.
71144 COMMIT;
71145         
71146 # check transactions-7 success:         1
71147 DELETE FROM t1 WHERE f_charbig = 'was inserted';
71148 COMMIT WORK;
71149 SET @@session.sql_mode = 'traditional';
71150 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
71151 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
71152 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
71153 '', '', 'was inserted' FROM t0_template
71154 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
71155 ERROR 22012: Division by 0
71156 COMMIT;
71157         
71158 # check transactions-8 success:         1
71159 # INFO: Storage engine used for t1 seems to be unable to revert
71160 #       changes made by the failing statement.
71161 SET @@session.sql_mode = '';
71162 SET AUTOCOMMIT= 1;
71163 DELETE FROM t1 WHERE f_charbig = 'was inserted';
71164 COMMIT WORK;
71165 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
71166         
71167 # check special-1 success:      1
71168 UPDATE t1 SET f_charbig = '';
71169         
71170 # check special-2 success:      1
71171 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
71172 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
71173 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
71174 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71175 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71176 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71177 'just inserted' FROM t0_template
71178 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71179 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
71180 BEGIN
71181 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71182 f_charbig = 'updated by trigger'
71183       WHERE f_int1 = new.f_int1;
71184 END|
71185 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71186 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
71187 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71188         
71189 # check trigger-1 success:      1
71190 DROP TRIGGER trg_1;
71191 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71192 f_int2 = CAST(f_char1 AS SIGNED INT),
71193 f_charbig = 'just inserted'
71194    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71195 DELETE FROM t0_aux
71196 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71197 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71198 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71199 'just inserted' FROM t0_template
71200 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71201 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
71202 BEGIN
71203 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71204 f_charbig = 'updated by trigger'
71205       WHERE f_int1 = new.f_int1;
71206 END|
71207 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71208 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
71209 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71210         
71211 # check trigger-2 success:      1
71212 DROP TRIGGER trg_1;
71213 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71214 f_int2 = CAST(f_char1 AS SIGNED INT),
71215 f_charbig = 'just inserted'
71216    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71217 DELETE FROM t0_aux
71218 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71219 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71220 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71221 'just inserted' FROM t0_template
71222 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71223 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
71224 BEGIN
71225 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71226 f_charbig = 'updated by trigger'
71227       WHERE f_int1 = new.f_int1;
71228 END|
71229 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
71230 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
71231         
71232 # check trigger-3 success:      1
71233 DROP TRIGGER trg_1;
71234 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71235 f_int2 = CAST(f_char1 AS SIGNED INT),
71236 f_charbig = 'just inserted'
71237    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71238 DELETE FROM t0_aux
71239 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71240 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71241 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71242 'just inserted' FROM t0_template
71243 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71244 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
71245 BEGIN
71246 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71247 f_charbig = 'updated by trigger'
71248       WHERE f_int1 = - old.f_int1;
71249 END|
71250 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
71251 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
71252         
71253 # check trigger-4 success:      1
71254 DROP TRIGGER trg_1;
71255 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71256 f_int2 = CAST(f_char1 AS SIGNED INT),
71257 f_charbig = 'just inserted'
71258    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71259 DELETE FROM t0_aux
71260 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71261 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71262 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71263 'just inserted' FROM t0_template
71264 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71265 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
71266 BEGIN
71267 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71268 f_charbig = 'updated by trigger'
71269       WHERE f_int1 = new.f_int1;
71270 END|
71271 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
71272 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
71273         
71274 # check trigger-5 success:      1
71275 DROP TRIGGER trg_1;
71276 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71277 f_int2 = CAST(f_char1 AS SIGNED INT),
71278 f_charbig = 'just inserted'
71279    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71280 DELETE FROM t0_aux
71281 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71282 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71283 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71284 'just inserted' FROM t0_template
71285 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71286 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
71287 BEGIN
71288 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71289 f_charbig = 'updated by trigger'
71290       WHERE f_int1 = - old.f_int1;
71291 END|
71292 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
71293 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
71294         
71295 # check trigger-6 success:      1
71296 DROP TRIGGER trg_1;
71297 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71298 f_int2 = CAST(f_char1 AS SIGNED INT),
71299 f_charbig = 'just inserted'
71300    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71301 DELETE FROM t0_aux
71302 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71303 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71304 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71305 'just inserted' FROM t0_template
71306 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71307 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
71308 BEGIN
71309 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71310 f_charbig = 'updated by trigger'
71311       WHERE f_int1 = - old.f_int1;
71312 END|
71313 DELETE FROM t0_aux
71314 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
71315         
71316 # check trigger-7 success:      1
71317 DROP TRIGGER trg_1;
71318 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71319 f_int2 = CAST(f_char1 AS SIGNED INT),
71320 f_charbig = 'just inserted'
71321    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71322 DELETE FROM t0_aux
71323 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71324 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71325 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71326 'just inserted' FROM t0_template
71327 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71328 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
71329 BEGIN
71330 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71331 f_charbig = 'updated by trigger'
71332       WHERE f_int1 = - old.f_int1;
71333 END|
71334 DELETE FROM t0_aux
71335 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
71336         
71337 # check trigger-8 success:      1
71338 DROP TRIGGER trg_1;
71339 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71340 f_int2 = CAST(f_char1 AS SIGNED INT),
71341 f_charbig = 'just inserted'
71342    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71343 DELETE FROM t0_aux
71344 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71345 DELETE FROM t1
71346 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71347 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
71348 BEGIN
71349 SET new.f_int1 = old.f_int1 + @max_row,
71350 new.f_int2 = old.f_int2 - @max_row,
71351 new.f_charbig = '####updated per update trigger####';
71352 END|
71353 UPDATE t1
71354 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
71355 f_charbig = '####updated per update statement itself####';
71356         
71357 # check trigger-9 success:      1
71358 DROP TRIGGER trg_2;
71359 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71360 f_int2 = CAST(f_char1 AS SIGNED INT),
71361 f_charbig = CONCAT('===',f_char1,'===');
71362 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
71363 BEGIN
71364 SET new.f_int1 = new.f_int1 + @max_row,
71365 new.f_int2 = new.f_int2 - @max_row,
71366 new.f_charbig = '####updated per update trigger####';
71367 END|
71368 UPDATE t1
71369 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
71370 f_charbig = '####updated per update statement itself####';
71371         
71372 # check trigger-10 success:     1
71373 DROP TRIGGER trg_2;
71374 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71375 f_int2 = CAST(f_char1 AS SIGNED INT),
71376 f_charbig = CONCAT('===',f_char1,'===');
71377 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
71378 BEGIN
71379 SET new.f_int1 = @my_max1 + @counter,
71380 new.f_int2 = @my_min2 - @counter,
71381 new.f_charbig = '####updated per insert trigger####';
71382 SET @counter = @counter + 1;
71383 END|
71384 SET @counter = 1;
71385 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
71386 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
71387 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
71388 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
71389 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
71390 ORDER BY f_int1;
71391 DROP TRIGGER trg_3;
71392         
71393 # check trigger-11 success:     1
71394 DELETE FROM t1
71395 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
71396 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
71397 AND f_charbig = '####updated per insert trigger####';
71398 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
71399 BEGIN
71400 SET new.f_int1 = @my_max1 + @counter,
71401 new.f_int2 = @my_min2 - @counter,
71402 new.f_charbig = '####updated per insert trigger####';
71403 SET @counter = @counter + 1;
71404 END|
71405 SET @counter = 1;
71406 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
71407 INSERT INTO t1 (f_char1, f_char2, f_charbig)
71408 SELECT CAST(f_int1 AS CHAR),
71409 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
71410 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
71411 ORDER BY f_int1;
71412 DROP TRIGGER trg_3;
71413         
71414 # check trigger-12 success:     1
71415 DELETE FROM t1
71416 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
71417 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
71418 AND f_charbig = '####updated per insert trigger####';
71419 ANALYZE  TABLE t1;
71420 Table   Op      Msg_type        Msg_text
71421 test.t1 analyze status  OK
71422 CHECK    TABLE t1 EXTENDED;
71423 Table   Op      Msg_type        Msg_text
71424 test.t1 check   status  OK
71425 CHECKSUM TABLE t1 EXTENDED;
71426 Table   Checksum
71427 test.t1 <some_value>
71428 OPTIMIZE TABLE t1;
71429 Table   Op      Msg_type        Msg_text
71430 test.t1 optimize        status  OK
71431 # check layout success:    1
71432 REPAIR   TABLE t1 EXTENDED;
71433 Table   Op      Msg_type        Msg_text
71434 test.t1 repair  status  OK
71435 # check layout success:    1
71436 TRUNCATE t1;
71437         
71438 # check TRUNCATE success:       1
71439 # check layout success:    1
71440 # End usability test (inc/partition_check.inc)
71441 DROP TABLE t1;
71442 CREATE TABLE t1 (
71443 f_int1 INTEGER,
71444 f_int2 INTEGER,
71445 f_char1 CHAR(20),
71446 f_char2 CHAR(20),
71447 f_charbig VARCHAR(1000)
71450 PARTITION BY LIST(MOD(f_int1,4))
71451 (PARTITION part_3 VALUES IN (-3),
71452 PARTITION part_2 VALUES IN (-2),
71453 PARTITION part_1 VALUES IN (-1),
71454 PARTITION part_N VALUES IN (NULL),
71455 PARTITION part0 VALUES IN (0),
71456 PARTITION part1 VALUES IN (1),
71457 PARTITION part2 VALUES IN (2),
71458 PARTITION part3 VALUES IN (3));
71459 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
71460 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
71461 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
71462 ALTER TABLE t1 REPAIR PARTITION part_1;
71463 Table   Op      Msg_type        Msg_text
71464 test.t1 repair  status  OK
71465 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
71466 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
71467 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
71468 # Start usability test (inc/partition_check.inc)
71469 create_command
71470 SHOW CREATE TABLE t1;
71471 Table   Create Table
71472 t1      CREATE TABLE `t1` (
71473   `f_int1` int(11) DEFAULT NULL,
71474   `f_int2` int(11) DEFAULT NULL,
71475   `f_char1` char(20) DEFAULT NULL,
71476   `f_char2` char(20) DEFAULT NULL,
71477   `f_charbig` varchar(1000) DEFAULT NULL
71478 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
71479 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
71480 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
71481  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
71482  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
71483  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
71484  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
71485  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
71486  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
71487  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
71489 unified filelist
71490 t1#P#part0.MYD
71491 t1#P#part0.MYI
71492 t1#P#part1.MYD
71493 t1#P#part1.MYI
71494 t1#P#part2.MYD
71495 t1#P#part2.MYI
71496 t1#P#part3.MYD
71497 t1#P#part3.MYI
71498 t1#P#part_1.MYD
71499 t1#P#part_1.MYI
71500 t1#P#part_2.MYD
71501 t1#P#part_2.MYI
71502 t1#P#part_3.MYD
71503 t1#P#part_3.MYI
71504 t1#P#part_N.MYD
71505 t1#P#part_N.MYI
71506 t1.frm
71507 t1.par
71509 # check prerequisites-1 success:    1
71510 # check COUNT(*) success:    1
71511 # check MIN/MAX(f_int1) success:    1
71512 # check MIN/MAX(f_int2) success:    1
71513 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
71514 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
71515 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
71516 WHERE f_int1 IN (2,3);
71517 # check prerequisites-3 success:    1
71518 DELETE FROM t1 WHERE f_charbig = 'delete me';
71519 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
71520 # check read via f_int1 success: 1
71521 # check read via f_int2 success: 1
71522         
71523 # check multiple-1 success:     1
71524 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
71525         
71526 # check multiple-2 success:     1
71527 INSERT INTO t1 SELECT * FROM t0_template
71528 WHERE MOD(f_int1,3) = 0;
71529         
71530 # check multiple-3 success:     1
71531 UPDATE t1 SET f_int1 = f_int1 + @max_row
71532 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
71533 AND @max_row_div2 + @max_row_div4;
71534         
71535 # check multiple-4 success:     1
71536 DELETE FROM t1
71537 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
71538 AND @max_row_div2 + @max_row_div4 + @max_row;
71539         
71540 # check multiple-5 success:     1
71541 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
71542 INSERT INTO t1
71543 SET f_int1 = @cur_value , f_int2 = @cur_value,
71544 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
71545 f_charbig = '#SINGLE#';
71546         
71547 # check single-1 success:       1
71548 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
71549 INSERT INTO t1
71550 SET f_int1 = @cur_value , f_int2 = @cur_value,
71551 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
71552 f_charbig = '#SINGLE#';
71553         
71554 # check single-2 success:       1
71555 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
71556 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
71557 UPDATE t1 SET f_int1 = @cur_value2
71558 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
71559         
71560 # check single-3 success:       1
71561 SET @cur_value1= -1;
71562 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
71563 UPDATE t1 SET f_int1 = @cur_value1
71564 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
71565         
71566 # check single-4 success:       1
71567 SELECT MAX(f_int1) INTO @cur_value FROM t1;
71568 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
71569         
71570 # check single-5 success:       1
71571 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
71572         
71573 # check single-6 success:       1
71574 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
71575         
71576 # check single-7 success:       1
71577 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
71578 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
71579 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
71580 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
71581 f_charbig = '#NULL#';
71582 INSERT INTO t1
71583 SET f_int1 = NULL , f_int2 = -@max_row,
71584 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
71585 f_charbig = '#NULL#';
71586 # check null success:    1
71587         
71588 # check null-1 success:         1
71589 UPDATE t1 SET f_int1 = -@max_row
71590 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
71591 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
71592         
71593 # check null-2 success:         1
71594 UPDATE t1 SET f_int1 = NULL
71595 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
71596 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
71597         
71598 # check null-3 success:         1
71599 DELETE FROM t1
71600 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
71601 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
71602         
71603 # check null-4 success:         1
71604 DELETE FROM t1
71605 WHERE f_int1 = 0 AND f_int2 = 0
71606 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
71607 AND f_charbig = '#NULL#';
71608 SET AUTOCOMMIT= 0;
71609 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
71610 SELECT f_int1, f_int1, '', '', 'was inserted'
71611 FROM t0_template source_tab
71612 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
71613         
71614 # check transactions-1 success:         1
71615 COMMIT WORK;
71616         
71617 # check transactions-2 success:         1
71618 ROLLBACK WORK;
71619         
71620 # check transactions-3 success:         1
71621 DELETE FROM t1 WHERE f_charbig = 'was inserted';
71622 COMMIT WORK;
71623 ROLLBACK WORK;
71624         
71625 # check transactions-4 success:         1
71626 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
71627 SELECT f_int1, f_int1, '', '', 'was inserted'
71628 FROM t0_template source_tab
71629 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
71630         
71631 # check transactions-5 success:         1
71632 ROLLBACK WORK;
71633 Warnings:
71634 Warning 1196    Some non-transactional changed tables couldn't be rolled back
71635         
71636 # check transactions-6 success:         1
71637 # INFO: Storage engine used for t1 seems to be not transactional.
71638 COMMIT;
71639         
71640 # check transactions-7 success:         1
71641 DELETE FROM t1 WHERE f_charbig = 'was inserted';
71642 COMMIT WORK;
71643 SET @@session.sql_mode = 'traditional';
71644 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
71645 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
71646 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
71647 '', '', 'was inserted' FROM t0_template
71648 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
71649 ERROR 22012: Division by 0
71650 COMMIT;
71651         
71652 # check transactions-8 success:         1
71653 # INFO: Storage engine used for t1 seems to be unable to revert
71654 #       changes made by the failing statement.
71655 SET @@session.sql_mode = '';
71656 SET AUTOCOMMIT= 1;
71657 DELETE FROM t1 WHERE f_charbig = 'was inserted';
71658 COMMIT WORK;
71659 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
71660         
71661 # check special-1 success:      1
71662 UPDATE t1 SET f_charbig = '';
71663         
71664 # check special-2 success:      1
71665 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
71666 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
71667 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
71668 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71669 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71670 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71671 'just inserted' FROM t0_template
71672 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71673 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
71674 BEGIN
71675 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71676 f_charbig = 'updated by trigger'
71677       WHERE f_int1 = new.f_int1;
71678 END|
71679 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71680 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
71681 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71682         
71683 # check trigger-1 success:      1
71684 DROP TRIGGER trg_1;
71685 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71686 f_int2 = CAST(f_char1 AS SIGNED INT),
71687 f_charbig = 'just inserted'
71688    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71689 DELETE FROM t0_aux
71690 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71691 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71692 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71693 'just inserted' FROM t0_template
71694 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71695 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
71696 BEGIN
71697 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71698 f_charbig = 'updated by trigger'
71699       WHERE f_int1 = new.f_int1;
71700 END|
71701 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71702 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
71703 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71704         
71705 # check trigger-2 success:      1
71706 DROP TRIGGER trg_1;
71707 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71708 f_int2 = CAST(f_char1 AS SIGNED INT),
71709 f_charbig = 'just inserted'
71710    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71711 DELETE FROM t0_aux
71712 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71713 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71714 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71715 'just inserted' FROM t0_template
71716 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71717 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
71718 BEGIN
71719 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71720 f_charbig = 'updated by trigger'
71721       WHERE f_int1 = new.f_int1;
71722 END|
71723 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
71724 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
71725         
71726 # check trigger-3 success:      1
71727 DROP TRIGGER trg_1;
71728 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71729 f_int2 = CAST(f_char1 AS SIGNED INT),
71730 f_charbig = 'just inserted'
71731    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71732 DELETE FROM t0_aux
71733 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71734 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71735 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71736 'just inserted' FROM t0_template
71737 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71738 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
71739 BEGIN
71740 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71741 f_charbig = 'updated by trigger'
71742       WHERE f_int1 = - old.f_int1;
71743 END|
71744 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
71745 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
71746         
71747 # check trigger-4 success:      1
71748 DROP TRIGGER trg_1;
71749 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71750 f_int2 = CAST(f_char1 AS SIGNED INT),
71751 f_charbig = 'just inserted'
71752    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71753 DELETE FROM t0_aux
71754 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71755 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71756 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71757 'just inserted' FROM t0_template
71758 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71759 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
71760 BEGIN
71761 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71762 f_charbig = 'updated by trigger'
71763       WHERE f_int1 = new.f_int1;
71764 END|
71765 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
71766 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
71767         
71768 # check trigger-5 success:      1
71769 DROP TRIGGER trg_1;
71770 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71771 f_int2 = CAST(f_char1 AS SIGNED INT),
71772 f_charbig = 'just inserted'
71773    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71774 DELETE FROM t0_aux
71775 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71776 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71777 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71778 'just inserted' FROM t0_template
71779 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71780 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
71781 BEGIN
71782 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71783 f_charbig = 'updated by trigger'
71784       WHERE f_int1 = - old.f_int1;
71785 END|
71786 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
71787 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
71788         
71789 # check trigger-6 success:      1
71790 DROP TRIGGER trg_1;
71791 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71792 f_int2 = CAST(f_char1 AS SIGNED INT),
71793 f_charbig = 'just inserted'
71794    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71795 DELETE FROM t0_aux
71796 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71797 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71798 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71799 'just inserted' FROM t0_template
71800 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71801 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
71802 BEGIN
71803 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71804 f_charbig = 'updated by trigger'
71805       WHERE f_int1 = - old.f_int1;
71806 END|
71807 DELETE FROM t0_aux
71808 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
71809         
71810 # check trigger-7 success:      1
71811 DROP TRIGGER trg_1;
71812 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71813 f_int2 = CAST(f_char1 AS SIGNED INT),
71814 f_charbig = 'just inserted'
71815    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71816 DELETE FROM t0_aux
71817 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71818 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
71819 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
71820 'just inserted' FROM t0_template
71821 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71822 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
71823 BEGIN
71824 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
71825 f_charbig = 'updated by trigger'
71826       WHERE f_int1 = - old.f_int1;
71827 END|
71828 DELETE FROM t0_aux
71829 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
71830         
71831 # check trigger-8 success:      1
71832 DROP TRIGGER trg_1;
71833 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71834 f_int2 = CAST(f_char1 AS SIGNED INT),
71835 f_charbig = 'just inserted'
71836    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
71837 DELETE FROM t0_aux
71838 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71839 DELETE FROM t1
71840 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
71841 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
71842 BEGIN
71843 SET new.f_int1 = old.f_int1 + @max_row,
71844 new.f_int2 = old.f_int2 - @max_row,
71845 new.f_charbig = '####updated per update trigger####';
71846 END|
71847 UPDATE t1
71848 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
71849 f_charbig = '####updated per update statement itself####';
71850         
71851 # check trigger-9 success:      1
71852 DROP TRIGGER trg_2;
71853 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71854 f_int2 = CAST(f_char1 AS SIGNED INT),
71855 f_charbig = CONCAT('===',f_char1,'===');
71856 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
71857 BEGIN
71858 SET new.f_int1 = new.f_int1 + @max_row,
71859 new.f_int2 = new.f_int2 - @max_row,
71860 new.f_charbig = '####updated per update trigger####';
71861 END|
71862 UPDATE t1
71863 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
71864 f_charbig = '####updated per update statement itself####';
71865         
71866 # check trigger-10 success:     1
71867 DROP TRIGGER trg_2;
71868 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
71869 f_int2 = CAST(f_char1 AS SIGNED INT),
71870 f_charbig = CONCAT('===',f_char1,'===');
71871 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
71872 BEGIN
71873 SET new.f_int1 = @my_max1 + @counter,
71874 new.f_int2 = @my_min2 - @counter,
71875 new.f_charbig = '####updated per insert trigger####';
71876 SET @counter = @counter + 1;
71877 END|
71878 SET @counter = 1;
71879 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
71880 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
71881 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
71882 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
71883 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
71884 ORDER BY f_int1;
71885 DROP TRIGGER trg_3;
71886         
71887 # check trigger-11 success:     1
71888 DELETE FROM t1
71889 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
71890 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
71891 AND f_charbig = '####updated per insert trigger####';
71892 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
71893 BEGIN
71894 SET new.f_int1 = @my_max1 + @counter,
71895 new.f_int2 = @my_min2 - @counter,
71896 new.f_charbig = '####updated per insert trigger####';
71897 SET @counter = @counter + 1;
71898 END|
71899 SET @counter = 1;
71900 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
71901 INSERT INTO t1 (f_char1, f_char2, f_charbig)
71902 SELECT CAST(f_int1 AS CHAR),
71903 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
71904 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
71905 ORDER BY f_int1;
71906 DROP TRIGGER trg_3;
71907         
71908 # check trigger-12 success:     1
71909 DELETE FROM t1
71910 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
71911 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
71912 AND f_charbig = '####updated per insert trigger####';
71913 ANALYZE  TABLE t1;
71914 Table   Op      Msg_type        Msg_text
71915 test.t1 analyze status  OK
71916 CHECK    TABLE t1 EXTENDED;
71917 Table   Op      Msg_type        Msg_text
71918 test.t1 check   status  OK
71919 CHECKSUM TABLE t1 EXTENDED;
71920 Table   Checksum
71921 test.t1 <some_value>
71922 OPTIMIZE TABLE t1;
71923 Table   Op      Msg_type        Msg_text
71924 test.t1 optimize        status  OK
71925 # check layout success:    1
71926 REPAIR   TABLE t1 EXTENDED;
71927 Table   Op      Msg_type        Msg_text
71928 test.t1 repair  status  OK
71929 # check layout success:    1
71930 TRUNCATE t1;
71931         
71932 # check TRUNCATE success:       1
71933 # check layout success:    1
71934 # End usability test (inc/partition_check.inc)
71935 DROP TABLE t1;
71936 CREATE TABLE t1 (
71937 f_int1 INTEGER,
71938 f_int2 INTEGER,
71939 f_char1 CHAR(20),
71940 f_char2 CHAR(20),
71941 f_charbig VARCHAR(1000)
71944 PARTITION BY RANGE(f_int1)
71945 (PARTITION parta VALUES LESS THAN (0),
71946 PARTITION part_1 VALUES LESS THAN (5),
71947 PARTITION part_2 VALUES LESS THAN (10),
71948 PARTITION part_3 VALUES LESS THAN (10 + 5),
71949 PARTITION part_4 VALUES LESS THAN (20),
71950 PARTITION part_5 VALUES LESS THAN (2147483646));
71951 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
71952 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
71953 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
71954 ALTER TABLE t1 REPAIR PARTITION part_1;
71955 Table   Op      Msg_type        Msg_text
71956 test.t1 repair  status  OK
71957 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
71958 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
71959 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
71960 # Start usability test (inc/partition_check.inc)
71961 create_command
71962 SHOW CREATE TABLE t1;
71963 Table   Create Table
71964 t1      CREATE TABLE `t1` (
71965   `f_int1` int(11) DEFAULT NULL,
71966   `f_int2` int(11) DEFAULT NULL,
71967   `f_char1` char(20) DEFAULT NULL,
71968   `f_char2` char(20) DEFAULT NULL,
71969   `f_charbig` varchar(1000) DEFAULT NULL
71970 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
71971 /*!50100 PARTITION BY RANGE (f_int1)
71972 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
71973  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
71974  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
71975  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
71976  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
71977  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
71979 unified filelist
71980 t1#P#part_1.MYD
71981 t1#P#part_1.MYI
71982 t1#P#part_2.MYD
71983 t1#P#part_2.MYI
71984 t1#P#part_3.MYD
71985 t1#P#part_3.MYI
71986 t1#P#part_4.MYD
71987 t1#P#part_4.MYI
71988 t1#P#part_5.MYD
71989 t1#P#part_5.MYI
71990 t1#P#parta.MYD
71991 t1#P#parta.MYI
71992 t1.frm
71993 t1.par
71995 # check prerequisites-1 success:    1
71996 # check COUNT(*) success:    1
71997 # check MIN/MAX(f_int1) success:    1
71998 # check MIN/MAX(f_int2) success:    1
71999 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
72000 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
72001 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
72002 WHERE f_int1 IN (2,3);
72003 # check prerequisites-3 success:    1
72004 DELETE FROM t1 WHERE f_charbig = 'delete me';
72005 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
72006 # check read via f_int1 success: 1
72007 # check read via f_int2 success: 1
72008         
72009 # check multiple-1 success:     1
72010 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
72011         
72012 # check multiple-2 success:     1
72013 INSERT INTO t1 SELECT * FROM t0_template
72014 WHERE MOD(f_int1,3) = 0;
72015         
72016 # check multiple-3 success:     1
72017 UPDATE t1 SET f_int1 = f_int1 + @max_row
72018 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
72019 AND @max_row_div2 + @max_row_div4;
72020         
72021 # check multiple-4 success:     1
72022 DELETE FROM t1
72023 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
72024 AND @max_row_div2 + @max_row_div4 + @max_row;
72025         
72026 # check multiple-5 success:     1
72027 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
72028 INSERT INTO t1
72029 SET f_int1 = @cur_value , f_int2 = @cur_value,
72030 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
72031 f_charbig = '#SINGLE#';
72032         
72033 # check single-1 success:       1
72034 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
72035 INSERT INTO t1
72036 SET f_int1 = @cur_value , f_int2 = @cur_value,
72037 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
72038 f_charbig = '#SINGLE#';
72039         
72040 # check single-2 success:       1
72041 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
72042 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
72043 UPDATE t1 SET f_int1 = @cur_value2
72044 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
72045         
72046 # check single-3 success:       1
72047 SET @cur_value1= -1;
72048 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
72049 UPDATE t1 SET f_int1 = @cur_value1
72050 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
72051         
72052 # check single-4 success:       1
72053 SELECT MAX(f_int1) INTO @cur_value FROM t1;
72054 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
72055         
72056 # check single-5 success:       1
72057 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
72058         
72059 # check single-6 success:       1
72060 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
72061 ERROR HY000: Table has no partition for value 2147483647
72062 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
72063 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
72064 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
72065 f_charbig = '#NULL#';
72066 INSERT INTO t1
72067 SET f_int1 = NULL , f_int2 = -@max_row,
72068 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
72069 f_charbig = '#NULL#';
72070 # check null success:    1
72071         
72072 # check null-1 success:         1
72073 UPDATE t1 SET f_int1 = -@max_row
72074 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
72075 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
72076         
72077 # check null-2 success:         1
72078 UPDATE t1 SET f_int1 = NULL
72079 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
72080 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
72081         
72082 # check null-3 success:         1
72083 DELETE FROM t1
72084 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
72085 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
72086         
72087 # check null-4 success:         1
72088 DELETE FROM t1
72089 WHERE f_int1 = 0 AND f_int2 = 0
72090 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
72091 AND f_charbig = '#NULL#';
72092 SET AUTOCOMMIT= 0;
72093 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
72094 SELECT f_int1, f_int1, '', '', 'was inserted'
72095 FROM t0_template source_tab
72096 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
72097         
72098 # check transactions-1 success:         1
72099 COMMIT WORK;
72100         
72101 # check transactions-2 success:         1
72102 ROLLBACK WORK;
72103         
72104 # check transactions-3 success:         1
72105 DELETE FROM t1 WHERE f_charbig = 'was inserted';
72106 COMMIT WORK;
72107 ROLLBACK WORK;
72108         
72109 # check transactions-4 success:         1
72110 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
72111 SELECT f_int1, f_int1, '', '', 'was inserted'
72112 FROM t0_template source_tab
72113 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
72114         
72115 # check transactions-5 success:         1
72116 ROLLBACK WORK;
72117 Warnings:
72118 Warning 1196    Some non-transactional changed tables couldn't be rolled back
72119         
72120 # check transactions-6 success:         1
72121 # INFO: Storage engine used for t1 seems to be not transactional.
72122 COMMIT;
72123         
72124 # check transactions-7 success:         1
72125 DELETE FROM t1 WHERE f_charbig = 'was inserted';
72126 COMMIT WORK;
72127 SET @@session.sql_mode = 'traditional';
72128 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
72129 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
72130 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
72131 '', '', 'was inserted' FROM t0_template
72132 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
72133 ERROR 22012: Division by 0
72134 COMMIT;
72135         
72136 # check transactions-8 success:         1
72137 # INFO: Storage engine used for t1 seems to be unable to revert
72138 #       changes made by the failing statement.
72139 SET @@session.sql_mode = '';
72140 SET AUTOCOMMIT= 1;
72141 DELETE FROM t1 WHERE f_charbig = 'was inserted';
72142 COMMIT WORK;
72143 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
72144         
72145 # check special-1 success:      1
72146 UPDATE t1 SET f_charbig = '';
72147         
72148 # check special-2 success:      1
72149 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
72150 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
72151 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
72152 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72153 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72154 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72155 'just inserted' FROM t0_template
72156 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72157 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
72158 BEGIN
72159 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72160 f_charbig = 'updated by trigger'
72161       WHERE f_int1 = new.f_int1;
72162 END|
72163 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72164 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
72165 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72166         
72167 # check trigger-1 success:      1
72168 DROP TRIGGER trg_1;
72169 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72170 f_int2 = CAST(f_char1 AS SIGNED INT),
72171 f_charbig = 'just inserted'
72172    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72173 DELETE FROM t0_aux
72174 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72175 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72176 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72177 'just inserted' FROM t0_template
72178 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72179 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
72180 BEGIN
72181 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72182 f_charbig = 'updated by trigger'
72183       WHERE f_int1 = new.f_int1;
72184 END|
72185 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72186 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
72187 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72188         
72189 # check trigger-2 success:      1
72190 DROP TRIGGER trg_1;
72191 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72192 f_int2 = CAST(f_char1 AS SIGNED INT),
72193 f_charbig = 'just inserted'
72194    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72195 DELETE FROM t0_aux
72196 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72197 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72198 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72199 'just inserted' FROM t0_template
72200 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72201 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
72202 BEGIN
72203 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72204 f_charbig = 'updated by trigger'
72205       WHERE f_int1 = new.f_int1;
72206 END|
72207 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
72208 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
72209         
72210 # check trigger-3 success:      1
72211 DROP TRIGGER trg_1;
72212 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72213 f_int2 = CAST(f_char1 AS SIGNED INT),
72214 f_charbig = 'just inserted'
72215    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72216 DELETE FROM t0_aux
72217 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72218 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72219 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72220 'just inserted' FROM t0_template
72221 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72222 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
72223 BEGIN
72224 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72225 f_charbig = 'updated by trigger'
72226       WHERE f_int1 = - old.f_int1;
72227 END|
72228 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
72229 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
72230         
72231 # check trigger-4 success:      1
72232 DROP TRIGGER trg_1;
72233 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72234 f_int2 = CAST(f_char1 AS SIGNED INT),
72235 f_charbig = 'just inserted'
72236    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72237 DELETE FROM t0_aux
72238 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72239 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72240 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72241 'just inserted' FROM t0_template
72242 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72243 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
72244 BEGIN
72245 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72246 f_charbig = 'updated by trigger'
72247       WHERE f_int1 = new.f_int1;
72248 END|
72249 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
72250 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
72251         
72252 # check trigger-5 success:      1
72253 DROP TRIGGER trg_1;
72254 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72255 f_int2 = CAST(f_char1 AS SIGNED INT),
72256 f_charbig = 'just inserted'
72257    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72258 DELETE FROM t0_aux
72259 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72260 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72261 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72262 'just inserted' FROM t0_template
72263 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72264 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
72265 BEGIN
72266 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72267 f_charbig = 'updated by trigger'
72268       WHERE f_int1 = - old.f_int1;
72269 END|
72270 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
72271 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
72272         
72273 # check trigger-6 success:      1
72274 DROP TRIGGER trg_1;
72275 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72276 f_int2 = CAST(f_char1 AS SIGNED INT),
72277 f_charbig = 'just inserted'
72278    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72279 DELETE FROM t0_aux
72280 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72281 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72282 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72283 'just inserted' FROM t0_template
72284 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72285 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
72286 BEGIN
72287 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72288 f_charbig = 'updated by trigger'
72289       WHERE f_int1 = - old.f_int1;
72290 END|
72291 DELETE FROM t0_aux
72292 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
72293         
72294 # check trigger-7 success:      1
72295 DROP TRIGGER trg_1;
72296 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72297 f_int2 = CAST(f_char1 AS SIGNED INT),
72298 f_charbig = 'just inserted'
72299    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72300 DELETE FROM t0_aux
72301 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72302 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72303 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72304 'just inserted' FROM t0_template
72305 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72306 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
72307 BEGIN
72308 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72309 f_charbig = 'updated by trigger'
72310       WHERE f_int1 = - old.f_int1;
72311 END|
72312 DELETE FROM t0_aux
72313 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
72314         
72315 # check trigger-8 success:      1
72316 DROP TRIGGER trg_1;
72317 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72318 f_int2 = CAST(f_char1 AS SIGNED INT),
72319 f_charbig = 'just inserted'
72320    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72321 DELETE FROM t0_aux
72322 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72323 DELETE FROM t1
72324 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72325 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
72326 BEGIN
72327 SET new.f_int1 = old.f_int1 + @max_row,
72328 new.f_int2 = old.f_int2 - @max_row,
72329 new.f_charbig = '####updated per update trigger####';
72330 END|
72331 UPDATE t1
72332 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
72333 f_charbig = '####updated per update statement itself####';
72334         
72335 # check trigger-9 success:      1
72336 DROP TRIGGER trg_2;
72337 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72338 f_int2 = CAST(f_char1 AS SIGNED INT),
72339 f_charbig = CONCAT('===',f_char1,'===');
72340 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
72341 BEGIN
72342 SET new.f_int1 = new.f_int1 + @max_row,
72343 new.f_int2 = new.f_int2 - @max_row,
72344 new.f_charbig = '####updated per update trigger####';
72345 END|
72346 UPDATE t1
72347 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
72348 f_charbig = '####updated per update statement itself####';
72349         
72350 # check trigger-10 success:     1
72351 DROP TRIGGER trg_2;
72352 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72353 f_int2 = CAST(f_char1 AS SIGNED INT),
72354 f_charbig = CONCAT('===',f_char1,'===');
72355 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
72356 BEGIN
72357 SET new.f_int1 = @my_max1 + @counter,
72358 new.f_int2 = @my_min2 - @counter,
72359 new.f_charbig = '####updated per insert trigger####';
72360 SET @counter = @counter + 1;
72361 END|
72362 SET @counter = 1;
72363 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
72364 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
72365 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
72366 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
72367 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
72368 ORDER BY f_int1;
72369 DROP TRIGGER trg_3;
72370         
72371 # check trigger-11 success:     1
72372 DELETE FROM t1
72373 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
72374 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
72375 AND f_charbig = '####updated per insert trigger####';
72376 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
72377 BEGIN
72378 SET new.f_int1 = @my_max1 + @counter,
72379 new.f_int2 = @my_min2 - @counter,
72380 new.f_charbig = '####updated per insert trigger####';
72381 SET @counter = @counter + 1;
72382 END|
72383 SET @counter = 1;
72384 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
72385 INSERT INTO t1 (f_char1, f_char2, f_charbig)
72386 SELECT CAST(f_int1 AS CHAR),
72387 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
72388 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
72389 ORDER BY f_int1;
72390 DROP TRIGGER trg_3;
72391         
72392 # check trigger-12 success:     1
72393 DELETE FROM t1
72394 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
72395 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
72396 AND f_charbig = '####updated per insert trigger####';
72397 ANALYZE  TABLE t1;
72398 Table   Op      Msg_type        Msg_text
72399 test.t1 analyze status  OK
72400 CHECK    TABLE t1 EXTENDED;
72401 Table   Op      Msg_type        Msg_text
72402 test.t1 check   status  OK
72403 CHECKSUM TABLE t1 EXTENDED;
72404 Table   Checksum
72405 test.t1 <some_value>
72406 OPTIMIZE TABLE t1;
72407 Table   Op      Msg_type        Msg_text
72408 test.t1 optimize        status  OK
72409 # check layout success:    1
72410 REPAIR   TABLE t1 EXTENDED;
72411 Table   Op      Msg_type        Msg_text
72412 test.t1 repair  status  OK
72413 # check layout success:    1
72414 TRUNCATE t1;
72415         
72416 # check TRUNCATE success:       1
72417 # check layout success:    1
72418 # End usability test (inc/partition_check.inc)
72419 DROP TABLE t1;
72420 CREATE TABLE t1 (
72421 f_int1 INTEGER,
72422 f_int2 INTEGER,
72423 f_char1 CHAR(20),
72424 f_char2 CHAR(20),
72425 f_charbig VARCHAR(1000)
72428 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
72429 (PARTITION part_1 VALUES LESS THAN (0),
72430 PARTITION part_2 VALUES LESS THAN (5),
72431 PARTITION part_3 VALUES LESS THAN (10),
72432 PARTITION part_4 VALUES LESS THAN (2147483646));
72433 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
72434 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
72435 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
72436 ALTER TABLE t1 REPAIR PARTITION part_1;
72437 Table   Op      Msg_type        Msg_text
72438 test.t1 repair  status  OK
72439 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
72440 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
72441 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
72442 # Start usability test (inc/partition_check.inc)
72443 create_command
72444 SHOW CREATE TABLE t1;
72445 Table   Create Table
72446 t1      CREATE TABLE `t1` (
72447   `f_int1` int(11) DEFAULT NULL,
72448   `f_int2` int(11) DEFAULT NULL,
72449   `f_char1` char(20) DEFAULT NULL,
72450   `f_char2` char(20) DEFAULT NULL,
72451   `f_charbig` varchar(1000) DEFAULT NULL
72452 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
72453 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
72454 SUBPARTITION BY HASH (f_int1)
72455 SUBPARTITIONS 2
72456 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
72457  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
72458  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
72459  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
72461 unified filelist
72462 t1#P#part_1#SP#part_1sp0.MYD
72463 t1#P#part_1#SP#part_1sp0.MYI
72464 t1#P#part_1#SP#part_1sp1.MYD
72465 t1#P#part_1#SP#part_1sp1.MYI
72466 t1#P#part_2#SP#part_2sp0.MYD
72467 t1#P#part_2#SP#part_2sp0.MYI
72468 t1#P#part_2#SP#part_2sp1.MYD
72469 t1#P#part_2#SP#part_2sp1.MYI
72470 t1#P#part_3#SP#part_3sp0.MYD
72471 t1#P#part_3#SP#part_3sp0.MYI
72472 t1#P#part_3#SP#part_3sp1.MYD
72473 t1#P#part_3#SP#part_3sp1.MYI
72474 t1#P#part_4#SP#part_4sp0.MYD
72475 t1#P#part_4#SP#part_4sp0.MYI
72476 t1#P#part_4#SP#part_4sp1.MYD
72477 t1#P#part_4#SP#part_4sp1.MYI
72478 t1.frm
72479 t1.par
72481 # check prerequisites-1 success:    1
72482 # check COUNT(*) success:    1
72483 # check MIN/MAX(f_int1) success:    1
72484 # check MIN/MAX(f_int2) success:    1
72485 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
72486 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
72487 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
72488 WHERE f_int1 IN (2,3);
72489 # check prerequisites-3 success:    1
72490 DELETE FROM t1 WHERE f_charbig = 'delete me';
72491 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
72492 # check read via f_int1 success: 1
72493 # check read via f_int2 success: 1
72494         
72495 # check multiple-1 success:     1
72496 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
72497         
72498 # check multiple-2 success:     1
72499 INSERT INTO t1 SELECT * FROM t0_template
72500 WHERE MOD(f_int1,3) = 0;
72501         
72502 # check multiple-3 success:     1
72503 UPDATE t1 SET f_int1 = f_int1 + @max_row
72504 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
72505 AND @max_row_div2 + @max_row_div4;
72506         
72507 # check multiple-4 success:     1
72508 DELETE FROM t1
72509 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
72510 AND @max_row_div2 + @max_row_div4 + @max_row;
72511         
72512 # check multiple-5 success:     1
72513 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
72514 INSERT INTO t1
72515 SET f_int1 = @cur_value , f_int2 = @cur_value,
72516 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
72517 f_charbig = '#SINGLE#';
72518         
72519 # check single-1 success:       1
72520 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
72521 INSERT INTO t1
72522 SET f_int1 = @cur_value , f_int2 = @cur_value,
72523 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
72524 f_charbig = '#SINGLE#';
72525         
72526 # check single-2 success:       1
72527 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
72528 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
72529 UPDATE t1 SET f_int1 = @cur_value2
72530 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
72531         
72532 # check single-3 success:       1
72533 SET @cur_value1= -1;
72534 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
72535 UPDATE t1 SET f_int1 = @cur_value1
72536 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
72537         
72538 # check single-4 success:       1
72539 SELECT MAX(f_int1) INTO @cur_value FROM t1;
72540 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
72541         
72542 # check single-5 success:       1
72543 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
72544         
72545 # check single-6 success:       1
72546 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
72547         
72548 # check single-7 success:       1
72549 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
72550 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
72551 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
72552 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
72553 f_charbig = '#NULL#';
72554 INSERT INTO t1
72555 SET f_int1 = NULL , f_int2 = -@max_row,
72556 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
72557 f_charbig = '#NULL#';
72558 # check null success:    1
72559         
72560 # check null-1 success:         1
72561 UPDATE t1 SET f_int1 = -@max_row
72562 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
72563 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
72564         
72565 # check null-2 success:         1
72566 UPDATE t1 SET f_int1 = NULL
72567 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
72568 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
72569         
72570 # check null-3 success:         1
72571 DELETE FROM t1
72572 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
72573 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
72574         
72575 # check null-4 success:         1
72576 DELETE FROM t1
72577 WHERE f_int1 = 0 AND f_int2 = 0
72578 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
72579 AND f_charbig = '#NULL#';
72580 SET AUTOCOMMIT= 0;
72581 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
72582 SELECT f_int1, f_int1, '', '', 'was inserted'
72583 FROM t0_template source_tab
72584 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
72585         
72586 # check transactions-1 success:         1
72587 COMMIT WORK;
72588         
72589 # check transactions-2 success:         1
72590 ROLLBACK WORK;
72591         
72592 # check transactions-3 success:         1
72593 DELETE FROM t1 WHERE f_charbig = 'was inserted';
72594 COMMIT WORK;
72595 ROLLBACK WORK;
72596         
72597 # check transactions-4 success:         1
72598 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
72599 SELECT f_int1, f_int1, '', '', 'was inserted'
72600 FROM t0_template source_tab
72601 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
72602         
72603 # check transactions-5 success:         1
72604 ROLLBACK WORK;
72605 Warnings:
72606 Warning 1196    Some non-transactional changed tables couldn't be rolled back
72607         
72608 # check transactions-6 success:         1
72609 # INFO: Storage engine used for t1 seems to be not transactional.
72610 COMMIT;
72611         
72612 # check transactions-7 success:         1
72613 DELETE FROM t1 WHERE f_charbig = 'was inserted';
72614 COMMIT WORK;
72615 SET @@session.sql_mode = 'traditional';
72616 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
72617 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
72618 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
72619 '', '', 'was inserted' FROM t0_template
72620 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
72621 ERROR 22012: Division by 0
72622 COMMIT;
72623         
72624 # check transactions-8 success:         1
72625 # INFO: Storage engine used for t1 seems to be unable to revert
72626 #       changes made by the failing statement.
72627 SET @@session.sql_mode = '';
72628 SET AUTOCOMMIT= 1;
72629 DELETE FROM t1 WHERE f_charbig = 'was inserted';
72630 COMMIT WORK;
72631 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
72632         
72633 # check special-1 success:      1
72634 UPDATE t1 SET f_charbig = '';
72635         
72636 # check special-2 success:      1
72637 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
72638 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
72639 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
72640 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72641 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72642 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72643 'just inserted' FROM t0_template
72644 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72645 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
72646 BEGIN
72647 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72648 f_charbig = 'updated by trigger'
72649       WHERE f_int1 = new.f_int1;
72650 END|
72651 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72652 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
72653 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72654         
72655 # check trigger-1 success:      1
72656 DROP TRIGGER trg_1;
72657 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72658 f_int2 = CAST(f_char1 AS SIGNED INT),
72659 f_charbig = 'just inserted'
72660    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72661 DELETE FROM t0_aux
72662 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72663 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72664 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72665 'just inserted' FROM t0_template
72666 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72667 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
72668 BEGIN
72669 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72670 f_charbig = 'updated by trigger'
72671       WHERE f_int1 = new.f_int1;
72672 END|
72673 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72674 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
72675 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72676         
72677 # check trigger-2 success:      1
72678 DROP TRIGGER trg_1;
72679 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72680 f_int2 = CAST(f_char1 AS SIGNED INT),
72681 f_charbig = 'just inserted'
72682    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72683 DELETE FROM t0_aux
72684 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72685 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72686 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72687 'just inserted' FROM t0_template
72688 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72689 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
72690 BEGIN
72691 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72692 f_charbig = 'updated by trigger'
72693       WHERE f_int1 = new.f_int1;
72694 END|
72695 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
72696 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
72697         
72698 # check trigger-3 success:      1
72699 DROP TRIGGER trg_1;
72700 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72701 f_int2 = CAST(f_char1 AS SIGNED INT),
72702 f_charbig = 'just inserted'
72703    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72704 DELETE FROM t0_aux
72705 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72706 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72707 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72708 'just inserted' FROM t0_template
72709 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72710 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
72711 BEGIN
72712 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72713 f_charbig = 'updated by trigger'
72714       WHERE f_int1 = - old.f_int1;
72715 END|
72716 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
72717 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
72718         
72719 # check trigger-4 success:      1
72720 DROP TRIGGER trg_1;
72721 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72722 f_int2 = CAST(f_char1 AS SIGNED INT),
72723 f_charbig = 'just inserted'
72724    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72725 DELETE FROM t0_aux
72726 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72727 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72728 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72729 'just inserted' FROM t0_template
72730 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72731 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
72732 BEGIN
72733 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72734 f_charbig = 'updated by trigger'
72735       WHERE f_int1 = new.f_int1;
72736 END|
72737 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
72738 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
72739         
72740 # check trigger-5 success:      1
72741 DROP TRIGGER trg_1;
72742 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72743 f_int2 = CAST(f_char1 AS SIGNED INT),
72744 f_charbig = 'just inserted'
72745    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72746 DELETE FROM t0_aux
72747 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72748 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72749 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72750 'just inserted' FROM t0_template
72751 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72752 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
72753 BEGIN
72754 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72755 f_charbig = 'updated by trigger'
72756       WHERE f_int1 = - old.f_int1;
72757 END|
72758 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
72759 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
72760         
72761 # check trigger-6 success:      1
72762 DROP TRIGGER trg_1;
72763 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72764 f_int2 = CAST(f_char1 AS SIGNED INT),
72765 f_charbig = 'just inserted'
72766    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72767 DELETE FROM t0_aux
72768 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72769 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72770 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72771 'just inserted' FROM t0_template
72772 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72773 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
72774 BEGIN
72775 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72776 f_charbig = 'updated by trigger'
72777       WHERE f_int1 = - old.f_int1;
72778 END|
72779 DELETE FROM t0_aux
72780 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
72781         
72782 # check trigger-7 success:      1
72783 DROP TRIGGER trg_1;
72784 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72785 f_int2 = CAST(f_char1 AS SIGNED INT),
72786 f_charbig = 'just inserted'
72787    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72788 DELETE FROM t0_aux
72789 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72790 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
72791 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
72792 'just inserted' FROM t0_template
72793 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72794 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
72795 BEGIN
72796 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
72797 f_charbig = 'updated by trigger'
72798       WHERE f_int1 = - old.f_int1;
72799 END|
72800 DELETE FROM t0_aux
72801 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
72802         
72803 # check trigger-8 success:      1
72804 DROP TRIGGER trg_1;
72805 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72806 f_int2 = CAST(f_char1 AS SIGNED INT),
72807 f_charbig = 'just inserted'
72808    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
72809 DELETE FROM t0_aux
72810 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72811 DELETE FROM t1
72812 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
72813 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
72814 BEGIN
72815 SET new.f_int1 = old.f_int1 + @max_row,
72816 new.f_int2 = old.f_int2 - @max_row,
72817 new.f_charbig = '####updated per update trigger####';
72818 END|
72819 UPDATE t1
72820 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
72821 f_charbig = '####updated per update statement itself####';
72822         
72823 # check trigger-9 success:      1
72824 DROP TRIGGER trg_2;
72825 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72826 f_int2 = CAST(f_char1 AS SIGNED INT),
72827 f_charbig = CONCAT('===',f_char1,'===');
72828 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
72829 BEGIN
72830 SET new.f_int1 = new.f_int1 + @max_row,
72831 new.f_int2 = new.f_int2 - @max_row,
72832 new.f_charbig = '####updated per update trigger####';
72833 END|
72834 UPDATE t1
72835 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
72836 f_charbig = '####updated per update statement itself####';
72837         
72838 # check trigger-10 success:     1
72839 DROP TRIGGER trg_2;
72840 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
72841 f_int2 = CAST(f_char1 AS SIGNED INT),
72842 f_charbig = CONCAT('===',f_char1,'===');
72843 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
72844 BEGIN
72845 SET new.f_int1 = @my_max1 + @counter,
72846 new.f_int2 = @my_min2 - @counter,
72847 new.f_charbig = '####updated per insert trigger####';
72848 SET @counter = @counter + 1;
72849 END|
72850 SET @counter = 1;
72851 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
72852 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
72853 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
72854 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
72855 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
72856 ORDER BY f_int1;
72857 DROP TRIGGER trg_3;
72858         
72859 # check trigger-11 success:     1
72860 DELETE FROM t1
72861 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
72862 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
72863 AND f_charbig = '####updated per insert trigger####';
72864 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
72865 BEGIN
72866 SET new.f_int1 = @my_max1 + @counter,
72867 new.f_int2 = @my_min2 - @counter,
72868 new.f_charbig = '####updated per insert trigger####';
72869 SET @counter = @counter + 1;
72870 END|
72871 SET @counter = 1;
72872 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
72873 INSERT INTO t1 (f_char1, f_char2, f_charbig)
72874 SELECT CAST(f_int1 AS CHAR),
72875 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
72876 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
72877 ORDER BY f_int1;
72878 DROP TRIGGER trg_3;
72879         
72880 # check trigger-12 success:     1
72881 DELETE FROM t1
72882 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
72883 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
72884 AND f_charbig = '####updated per insert trigger####';
72885 ANALYZE  TABLE t1;
72886 Table   Op      Msg_type        Msg_text
72887 test.t1 analyze status  OK
72888 CHECK    TABLE t1 EXTENDED;
72889 Table   Op      Msg_type        Msg_text
72890 test.t1 check   status  OK
72891 CHECKSUM TABLE t1 EXTENDED;
72892 Table   Checksum
72893 test.t1 <some_value>
72894 OPTIMIZE TABLE t1;
72895 Table   Op      Msg_type        Msg_text
72896 test.t1 optimize        status  OK
72897 # check layout success:    1
72898 REPAIR   TABLE t1 EXTENDED;
72899 Table   Op      Msg_type        Msg_text
72900 test.t1 repair  status  OK
72901 # check layout success:    1
72902 TRUNCATE t1;
72903         
72904 # check TRUNCATE success:       1
72905 # check layout success:    1
72906 # End usability test (inc/partition_check.inc)
72907 DROP TABLE t1;
72908 CREATE TABLE t1 (
72909 f_int1 INTEGER,
72910 f_int2 INTEGER,
72911 f_char1 CHAR(20),
72912 f_char2 CHAR(20),
72913 f_charbig VARCHAR(1000)
72916 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
72917 (PARTITION part_1 VALUES LESS THAN (0)
72918 (SUBPARTITION subpart11, SUBPARTITION subpart12),
72919 PARTITION part_2 VALUES LESS THAN (5)
72920 (SUBPARTITION subpart21, SUBPARTITION subpart22),
72921 PARTITION part_3 VALUES LESS THAN (10)
72922 (SUBPARTITION subpart31, SUBPARTITION subpart32),
72923 PARTITION part_4 VALUES LESS THAN (2147483646)
72924 (SUBPARTITION subpart41, SUBPARTITION subpart42));
72925 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
72926 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
72927 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
72928 ALTER TABLE t1 REPAIR PARTITION part_1;
72929 Table   Op      Msg_type        Msg_text
72930 test.t1 repair  status  OK
72931 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
72932 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
72933 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
72934 # Start usability test (inc/partition_check.inc)
72935 create_command
72936 SHOW CREATE TABLE t1;
72937 Table   Create Table
72938 t1      CREATE TABLE `t1` (
72939   `f_int1` int(11) DEFAULT NULL,
72940   `f_int2` int(11) DEFAULT NULL,
72941   `f_char1` char(20) DEFAULT NULL,
72942   `f_char2` char(20) DEFAULT NULL,
72943   `f_charbig` varchar(1000) DEFAULT NULL
72944 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
72945 /*!50100 PARTITION BY RANGE (f_int1)
72946 SUBPARTITION BY KEY (f_int1)
72947 (PARTITION part_1 VALUES LESS THAN (0)
72948  (SUBPARTITION subpart11 ENGINE = MyISAM,
72949   SUBPARTITION subpart12 ENGINE = MyISAM),
72950  PARTITION part_2 VALUES LESS THAN (5)
72951  (SUBPARTITION subpart21 ENGINE = MyISAM,
72952   SUBPARTITION subpart22 ENGINE = MyISAM),
72953  PARTITION part_3 VALUES LESS THAN (10)
72954  (SUBPARTITION subpart31 ENGINE = MyISAM,
72955   SUBPARTITION subpart32 ENGINE = MyISAM),
72956  PARTITION part_4 VALUES LESS THAN (2147483646)
72957  (SUBPARTITION subpart41 ENGINE = MyISAM,
72958   SUBPARTITION subpart42 ENGINE = MyISAM)) */
72960 unified filelist
72961 t1#P#part_1#SP#subpart11.MYD
72962 t1#P#part_1#SP#subpart11.MYI
72963 t1#P#part_1#SP#subpart12.MYD
72964 t1#P#part_1#SP#subpart12.MYI
72965 t1#P#part_2#SP#subpart21.MYD
72966 t1#P#part_2#SP#subpart21.MYI
72967 t1#P#part_2#SP#subpart22.MYD
72968 t1#P#part_2#SP#subpart22.MYI
72969 t1#P#part_3#SP#subpart31.MYD
72970 t1#P#part_3#SP#subpart31.MYI
72971 t1#P#part_3#SP#subpart32.MYD
72972 t1#P#part_3#SP#subpart32.MYI
72973 t1#P#part_4#SP#subpart41.MYD
72974 t1#P#part_4#SP#subpart41.MYI
72975 t1#P#part_4#SP#subpart42.MYD
72976 t1#P#part_4#SP#subpart42.MYI
72977 t1.frm
72978 t1.par
72980 # check prerequisites-1 success:    1
72981 # check COUNT(*) success:    1
72982 # check MIN/MAX(f_int1) success:    1
72983 # check MIN/MAX(f_int2) success:    1
72984 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
72985 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
72986 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
72987 WHERE f_int1 IN (2,3);
72988 # check prerequisites-3 success:    1
72989 DELETE FROM t1 WHERE f_charbig = 'delete me';
72990 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
72991 # check read via f_int1 success: 1
72992 # check read via f_int2 success: 1
72993         
72994 # check multiple-1 success:     1
72995 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
72996         
72997 # check multiple-2 success:     1
72998 INSERT INTO t1 SELECT * FROM t0_template
72999 WHERE MOD(f_int1,3) = 0;
73000         
73001 # check multiple-3 success:     1
73002 UPDATE t1 SET f_int1 = f_int1 + @max_row
73003 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
73004 AND @max_row_div2 + @max_row_div4;
73005         
73006 # check multiple-4 success:     1
73007 DELETE FROM t1
73008 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
73009 AND @max_row_div2 + @max_row_div4 + @max_row;
73010         
73011 # check multiple-5 success:     1
73012 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
73013 INSERT INTO t1
73014 SET f_int1 = @cur_value , f_int2 = @cur_value,
73015 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
73016 f_charbig = '#SINGLE#';
73017         
73018 # check single-1 success:       1
73019 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
73020 INSERT INTO t1
73021 SET f_int1 = @cur_value , f_int2 = @cur_value,
73022 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
73023 f_charbig = '#SINGLE#';
73024         
73025 # check single-2 success:       1
73026 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
73027 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
73028 UPDATE t1 SET f_int1 = @cur_value2
73029 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
73030         
73031 # check single-3 success:       1
73032 SET @cur_value1= -1;
73033 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
73034 UPDATE t1 SET f_int1 = @cur_value1
73035 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
73036         
73037 # check single-4 success:       1
73038 SELECT MAX(f_int1) INTO @cur_value FROM t1;
73039 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
73040         
73041 # check single-5 success:       1
73042 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
73043         
73044 # check single-6 success:       1
73045 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
73046 ERROR HY000: Table has no partition for value 2147483647
73047 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
73048 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
73049 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
73050 f_charbig = '#NULL#';
73051 INSERT INTO t1
73052 SET f_int1 = NULL , f_int2 = -@max_row,
73053 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
73054 f_charbig = '#NULL#';
73055 # check null success:    1
73056         
73057 # check null-1 success:         1
73058 UPDATE t1 SET f_int1 = -@max_row
73059 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
73060 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
73061         
73062 # check null-2 success:         1
73063 UPDATE t1 SET f_int1 = NULL
73064 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
73065 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
73066         
73067 # check null-3 success:         1
73068 DELETE FROM t1
73069 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
73070 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
73071         
73072 # check null-4 success:         1
73073 DELETE FROM t1
73074 WHERE f_int1 = 0 AND f_int2 = 0
73075 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
73076 AND f_charbig = '#NULL#';
73077 SET AUTOCOMMIT= 0;
73078 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
73079 SELECT f_int1, f_int1, '', '', 'was inserted'
73080 FROM t0_template source_tab
73081 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
73082         
73083 # check transactions-1 success:         1
73084 COMMIT WORK;
73085         
73086 # check transactions-2 success:         1
73087 ROLLBACK WORK;
73088         
73089 # check transactions-3 success:         1
73090 DELETE FROM t1 WHERE f_charbig = 'was inserted';
73091 COMMIT WORK;
73092 ROLLBACK WORK;
73093         
73094 # check transactions-4 success:         1
73095 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
73096 SELECT f_int1, f_int1, '', '', 'was inserted'
73097 FROM t0_template source_tab
73098 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
73099         
73100 # check transactions-5 success:         1
73101 ROLLBACK WORK;
73102 Warnings:
73103 Warning 1196    Some non-transactional changed tables couldn't be rolled back
73104         
73105 # check transactions-6 success:         1
73106 # INFO: Storage engine used for t1 seems to be not transactional.
73107 COMMIT;
73108         
73109 # check transactions-7 success:         1
73110 DELETE FROM t1 WHERE f_charbig = 'was inserted';
73111 COMMIT WORK;
73112 SET @@session.sql_mode = 'traditional';
73113 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
73114 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
73115 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
73116 '', '', 'was inserted' FROM t0_template
73117 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
73118 ERROR 22012: Division by 0
73119 COMMIT;
73120         
73121 # check transactions-8 success:         1
73122 # INFO: Storage engine used for t1 seems to be unable to revert
73123 #       changes made by the failing statement.
73124 SET @@session.sql_mode = '';
73125 SET AUTOCOMMIT= 1;
73126 DELETE FROM t1 WHERE f_charbig = 'was inserted';
73127 COMMIT WORK;
73128 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
73129         
73130 # check special-1 success:      1
73131 UPDATE t1 SET f_charbig = '';
73132         
73133 # check special-2 success:      1
73134 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
73135 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
73136 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
73137 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73138 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73139 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73140 'just inserted' FROM t0_template
73141 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73142 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
73143 BEGIN
73144 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73145 f_charbig = 'updated by trigger'
73146       WHERE f_int1 = new.f_int1;
73147 END|
73148 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73149 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
73150 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73151         
73152 # check trigger-1 success:      1
73153 DROP TRIGGER trg_1;
73154 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73155 f_int2 = CAST(f_char1 AS SIGNED INT),
73156 f_charbig = 'just inserted'
73157    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73158 DELETE FROM t0_aux
73159 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73160 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73161 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73162 'just inserted' FROM t0_template
73163 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73164 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
73165 BEGIN
73166 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73167 f_charbig = 'updated by trigger'
73168       WHERE f_int1 = new.f_int1;
73169 END|
73170 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73171 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
73172 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73173         
73174 # check trigger-2 success:      1
73175 DROP TRIGGER trg_1;
73176 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73177 f_int2 = CAST(f_char1 AS SIGNED INT),
73178 f_charbig = 'just inserted'
73179    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73180 DELETE FROM t0_aux
73181 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73182 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73183 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73184 'just inserted' FROM t0_template
73185 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73186 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
73187 BEGIN
73188 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73189 f_charbig = 'updated by trigger'
73190       WHERE f_int1 = new.f_int1;
73191 END|
73192 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
73193 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
73194         
73195 # check trigger-3 success:      1
73196 DROP TRIGGER trg_1;
73197 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73198 f_int2 = CAST(f_char1 AS SIGNED INT),
73199 f_charbig = 'just inserted'
73200    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73201 DELETE FROM t0_aux
73202 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73203 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73204 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73205 'just inserted' FROM t0_template
73206 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73207 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
73208 BEGIN
73209 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73210 f_charbig = 'updated by trigger'
73211       WHERE f_int1 = - old.f_int1;
73212 END|
73213 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
73214 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
73215         
73216 # check trigger-4 success:      1
73217 DROP TRIGGER trg_1;
73218 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73219 f_int2 = CAST(f_char1 AS SIGNED INT),
73220 f_charbig = 'just inserted'
73221    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73222 DELETE FROM t0_aux
73223 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73224 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73225 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73226 'just inserted' FROM t0_template
73227 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73228 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
73229 BEGIN
73230 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73231 f_charbig = 'updated by trigger'
73232       WHERE f_int1 = new.f_int1;
73233 END|
73234 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
73235 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
73236         
73237 # check trigger-5 success:      1
73238 DROP TRIGGER trg_1;
73239 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73240 f_int2 = CAST(f_char1 AS SIGNED INT),
73241 f_charbig = 'just inserted'
73242    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73243 DELETE FROM t0_aux
73244 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73245 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73246 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73247 'just inserted' FROM t0_template
73248 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73249 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
73250 BEGIN
73251 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73252 f_charbig = 'updated by trigger'
73253       WHERE f_int1 = - old.f_int1;
73254 END|
73255 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
73256 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
73257         
73258 # check trigger-6 success:      1
73259 DROP TRIGGER trg_1;
73260 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73261 f_int2 = CAST(f_char1 AS SIGNED INT),
73262 f_charbig = 'just inserted'
73263    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73264 DELETE FROM t0_aux
73265 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73266 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73267 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73268 'just inserted' FROM t0_template
73269 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73270 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
73271 BEGIN
73272 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73273 f_charbig = 'updated by trigger'
73274       WHERE f_int1 = - old.f_int1;
73275 END|
73276 DELETE FROM t0_aux
73277 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
73278         
73279 # check trigger-7 success:      1
73280 DROP TRIGGER trg_1;
73281 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73282 f_int2 = CAST(f_char1 AS SIGNED INT),
73283 f_charbig = 'just inserted'
73284    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73285 DELETE FROM t0_aux
73286 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73287 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73288 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73289 'just inserted' FROM t0_template
73290 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73291 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
73292 BEGIN
73293 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73294 f_charbig = 'updated by trigger'
73295       WHERE f_int1 = - old.f_int1;
73296 END|
73297 DELETE FROM t0_aux
73298 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
73299         
73300 # check trigger-8 success:      1
73301 DROP TRIGGER trg_1;
73302 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73303 f_int2 = CAST(f_char1 AS SIGNED INT),
73304 f_charbig = 'just inserted'
73305    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73306 DELETE FROM t0_aux
73307 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73308 DELETE FROM t1
73309 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73310 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
73311 BEGIN
73312 SET new.f_int1 = old.f_int1 + @max_row,
73313 new.f_int2 = old.f_int2 - @max_row,
73314 new.f_charbig = '####updated per update trigger####';
73315 END|
73316 UPDATE t1
73317 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
73318 f_charbig = '####updated per update statement itself####';
73319         
73320 # check trigger-9 success:      1
73321 DROP TRIGGER trg_2;
73322 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73323 f_int2 = CAST(f_char1 AS SIGNED INT),
73324 f_charbig = CONCAT('===',f_char1,'===');
73325 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
73326 BEGIN
73327 SET new.f_int1 = new.f_int1 + @max_row,
73328 new.f_int2 = new.f_int2 - @max_row,
73329 new.f_charbig = '####updated per update trigger####';
73330 END|
73331 UPDATE t1
73332 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
73333 f_charbig = '####updated per update statement itself####';
73334         
73335 # check trigger-10 success:     1
73336 DROP TRIGGER trg_2;
73337 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73338 f_int2 = CAST(f_char1 AS SIGNED INT),
73339 f_charbig = CONCAT('===',f_char1,'===');
73340 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
73341 BEGIN
73342 SET new.f_int1 = @my_max1 + @counter,
73343 new.f_int2 = @my_min2 - @counter,
73344 new.f_charbig = '####updated per insert trigger####';
73345 SET @counter = @counter + 1;
73346 END|
73347 SET @counter = 1;
73348 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
73349 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
73350 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
73351 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
73352 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
73353 ORDER BY f_int1;
73354 DROP TRIGGER trg_3;
73355         
73356 # check trigger-11 success:     1
73357 DELETE FROM t1
73358 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
73359 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
73360 AND f_charbig = '####updated per insert trigger####';
73361 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
73362 BEGIN
73363 SET new.f_int1 = @my_max1 + @counter,
73364 new.f_int2 = @my_min2 - @counter,
73365 new.f_charbig = '####updated per insert trigger####';
73366 SET @counter = @counter + 1;
73367 END|
73368 SET @counter = 1;
73369 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
73370 INSERT INTO t1 (f_char1, f_char2, f_charbig)
73371 SELECT CAST(f_int1 AS CHAR),
73372 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
73373 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
73374 ORDER BY f_int1;
73375 DROP TRIGGER trg_3;
73376         
73377 # check trigger-12 success:     1
73378 DELETE FROM t1
73379 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
73380 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
73381 AND f_charbig = '####updated per insert trigger####';
73382 ANALYZE  TABLE t1;
73383 Table   Op      Msg_type        Msg_text
73384 test.t1 analyze status  OK
73385 CHECK    TABLE t1 EXTENDED;
73386 Table   Op      Msg_type        Msg_text
73387 test.t1 check   status  OK
73388 CHECKSUM TABLE t1 EXTENDED;
73389 Table   Checksum
73390 test.t1 <some_value>
73391 OPTIMIZE TABLE t1;
73392 Table   Op      Msg_type        Msg_text
73393 test.t1 optimize        status  OK
73394 # check layout success:    1
73395 REPAIR   TABLE t1 EXTENDED;
73396 Table   Op      Msg_type        Msg_text
73397 test.t1 repair  status  OK
73398 # check layout success:    1
73399 TRUNCATE t1;
73400         
73401 # check TRUNCATE success:       1
73402 # check layout success:    1
73403 # End usability test (inc/partition_check.inc)
73404 DROP TABLE t1;
73405 CREATE TABLE t1 (
73406 f_int1 INTEGER,
73407 f_int2 INTEGER,
73408 f_char1 CHAR(20),
73409 f_char2 CHAR(20),
73410 f_charbig VARCHAR(1000)
73413 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
73414 (PARTITION part_1 VALUES IN (0)
73415 (SUBPARTITION sp11, SUBPARTITION sp12),
73416 PARTITION part_2 VALUES IN (1)
73417 (SUBPARTITION sp21, SUBPARTITION sp22),
73418 PARTITION part_3 VALUES IN (2)
73419 (SUBPARTITION sp31, SUBPARTITION sp32),
73420 PARTITION part_4 VALUES IN (NULL)
73421 (SUBPARTITION sp41, SUBPARTITION sp42));
73422 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
73423 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
73424 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
73425 ALTER TABLE t1 REPAIR PARTITION part_1;
73426 Table   Op      Msg_type        Msg_text
73427 test.t1 repair  status  OK
73428 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
73429 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
73430 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
73431 # Start usability test (inc/partition_check.inc)
73432 create_command
73433 SHOW CREATE TABLE t1;
73434 Table   Create Table
73435 t1      CREATE TABLE `t1` (
73436   `f_int1` int(11) DEFAULT NULL,
73437   `f_int2` int(11) DEFAULT NULL,
73438   `f_char1` char(20) DEFAULT NULL,
73439   `f_char2` char(20) DEFAULT NULL,
73440   `f_charbig` varchar(1000) DEFAULT NULL
73441 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
73442 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
73443 SUBPARTITION BY HASH (f_int1 + 1)
73444 (PARTITION part_1 VALUES IN (0)
73445  (SUBPARTITION sp11 ENGINE = MyISAM,
73446   SUBPARTITION sp12 ENGINE = MyISAM),
73447  PARTITION part_2 VALUES IN (1)
73448  (SUBPARTITION sp21 ENGINE = MyISAM,
73449   SUBPARTITION sp22 ENGINE = MyISAM),
73450  PARTITION part_3 VALUES IN (2)
73451  (SUBPARTITION sp31 ENGINE = MyISAM,
73452   SUBPARTITION sp32 ENGINE = MyISAM),
73453  PARTITION part_4 VALUES IN (NULL)
73454  (SUBPARTITION sp41 ENGINE = MyISAM,
73455   SUBPARTITION sp42 ENGINE = MyISAM)) */
73457 unified filelist
73458 t1#P#part_1#SP#sp11.MYD
73459 t1#P#part_1#SP#sp11.MYI
73460 t1#P#part_1#SP#sp12.MYD
73461 t1#P#part_1#SP#sp12.MYI
73462 t1#P#part_2#SP#sp21.MYD
73463 t1#P#part_2#SP#sp21.MYI
73464 t1#P#part_2#SP#sp22.MYD
73465 t1#P#part_2#SP#sp22.MYI
73466 t1#P#part_3#SP#sp31.MYD
73467 t1#P#part_3#SP#sp31.MYI
73468 t1#P#part_3#SP#sp32.MYD
73469 t1#P#part_3#SP#sp32.MYI
73470 t1#P#part_4#SP#sp41.MYD
73471 t1#P#part_4#SP#sp41.MYI
73472 t1#P#part_4#SP#sp42.MYD
73473 t1#P#part_4#SP#sp42.MYI
73474 t1.frm
73475 t1.par
73477 # check prerequisites-1 success:    1
73478 # check COUNT(*) success:    1
73479 # check MIN/MAX(f_int1) success:    1
73480 # check MIN/MAX(f_int2) success:    1
73481 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
73482 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
73483 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
73484 WHERE f_int1 IN (2,3);
73485 # check prerequisites-3 success:    1
73486 DELETE FROM t1 WHERE f_charbig = 'delete me';
73487 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
73488 # check read via f_int1 success: 1
73489 # check read via f_int2 success: 1
73490         
73491 # check multiple-1 success:     1
73492 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
73493         
73494 # check multiple-2 success:     1
73495 INSERT INTO t1 SELECT * FROM t0_template
73496 WHERE MOD(f_int1,3) = 0;
73497         
73498 # check multiple-3 success:     1
73499 UPDATE t1 SET f_int1 = f_int1 + @max_row
73500 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
73501 AND @max_row_div2 + @max_row_div4;
73502         
73503 # check multiple-4 success:     1
73504 DELETE FROM t1
73505 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
73506 AND @max_row_div2 + @max_row_div4 + @max_row;
73507         
73508 # check multiple-5 success:     1
73509 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
73510 INSERT INTO t1
73511 SET f_int1 = @cur_value , f_int2 = @cur_value,
73512 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
73513 f_charbig = '#SINGLE#';
73514         
73515 # check single-1 success:       1
73516 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
73517 INSERT INTO t1
73518 SET f_int1 = @cur_value , f_int2 = @cur_value,
73519 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
73520 f_charbig = '#SINGLE#';
73521         
73522 # check single-2 success:       1
73523 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
73524 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
73525 UPDATE t1 SET f_int1 = @cur_value2
73526 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
73527         
73528 # check single-3 success:       1
73529 SET @cur_value1= -1;
73530 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
73531 UPDATE t1 SET f_int1 = @cur_value1
73532 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
73533         
73534 # check single-4 success:       1
73535 SELECT MAX(f_int1) INTO @cur_value FROM t1;
73536 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
73537         
73538 # check single-5 success:       1
73539 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
73540         
73541 # check single-6 success:       1
73542 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
73543         
73544 # check single-7 success:       1
73545 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
73546 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
73547 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
73548 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
73549 f_charbig = '#NULL#';
73550 INSERT INTO t1
73551 SET f_int1 = NULL , f_int2 = -@max_row,
73552 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
73553 f_charbig = '#NULL#';
73554 # check null success:    1
73555         
73556 # check null-1 success:         1
73557 UPDATE t1 SET f_int1 = -@max_row
73558 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
73559 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
73560         
73561 # check null-2 success:         1
73562 UPDATE t1 SET f_int1 = NULL
73563 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
73564 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
73565         
73566 # check null-3 success:         1
73567 DELETE FROM t1
73568 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
73569 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
73570         
73571 # check null-4 success:         1
73572 DELETE FROM t1
73573 WHERE f_int1 = 0 AND f_int2 = 0
73574 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
73575 AND f_charbig = '#NULL#';
73576 SET AUTOCOMMIT= 0;
73577 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
73578 SELECT f_int1, f_int1, '', '', 'was inserted'
73579 FROM t0_template source_tab
73580 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
73581         
73582 # check transactions-1 success:         1
73583 COMMIT WORK;
73584         
73585 # check transactions-2 success:         1
73586 ROLLBACK WORK;
73587         
73588 # check transactions-3 success:         1
73589 DELETE FROM t1 WHERE f_charbig = 'was inserted';
73590 COMMIT WORK;
73591 ROLLBACK WORK;
73592         
73593 # check transactions-4 success:         1
73594 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
73595 SELECT f_int1, f_int1, '', '', 'was inserted'
73596 FROM t0_template source_tab
73597 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
73598         
73599 # check transactions-5 success:         1
73600 ROLLBACK WORK;
73601 Warnings:
73602 Warning 1196    Some non-transactional changed tables couldn't be rolled back
73603         
73604 # check transactions-6 success:         1
73605 # INFO: Storage engine used for t1 seems to be not transactional.
73606 COMMIT;
73607         
73608 # check transactions-7 success:         1
73609 DELETE FROM t1 WHERE f_charbig = 'was inserted';
73610 COMMIT WORK;
73611 SET @@session.sql_mode = 'traditional';
73612 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
73613 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
73614 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
73615 '', '', 'was inserted' FROM t0_template
73616 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
73617 ERROR 22012: Division by 0
73618 COMMIT;
73619         
73620 # check transactions-8 success:         1
73621 # INFO: Storage engine used for t1 seems to be unable to revert
73622 #       changes made by the failing statement.
73623 SET @@session.sql_mode = '';
73624 SET AUTOCOMMIT= 1;
73625 DELETE FROM t1 WHERE f_charbig = 'was inserted';
73626 COMMIT WORK;
73627 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
73628         
73629 # check special-1 success:      1
73630 UPDATE t1 SET f_charbig = '';
73631         
73632 # check special-2 success:      1
73633 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
73634 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
73635 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
73636 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73637 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73638 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73639 'just inserted' FROM t0_template
73640 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73641 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
73642 BEGIN
73643 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73644 f_charbig = 'updated by trigger'
73645       WHERE f_int1 = new.f_int1;
73646 END|
73647 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73648 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
73649 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73650         
73651 # check trigger-1 success:      1
73652 DROP TRIGGER trg_1;
73653 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73654 f_int2 = CAST(f_char1 AS SIGNED INT),
73655 f_charbig = 'just inserted'
73656    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73657 DELETE FROM t0_aux
73658 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73659 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73660 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73661 'just inserted' FROM t0_template
73662 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73663 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
73664 BEGIN
73665 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73666 f_charbig = 'updated by trigger'
73667       WHERE f_int1 = new.f_int1;
73668 END|
73669 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73670 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
73671 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73672         
73673 # check trigger-2 success:      1
73674 DROP TRIGGER trg_1;
73675 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73676 f_int2 = CAST(f_char1 AS SIGNED INT),
73677 f_charbig = 'just inserted'
73678    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73679 DELETE FROM t0_aux
73680 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73681 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73682 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73683 'just inserted' FROM t0_template
73684 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73685 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
73686 BEGIN
73687 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73688 f_charbig = 'updated by trigger'
73689       WHERE f_int1 = new.f_int1;
73690 END|
73691 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
73692 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
73693         
73694 # check trigger-3 success:      1
73695 DROP TRIGGER trg_1;
73696 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73697 f_int2 = CAST(f_char1 AS SIGNED INT),
73698 f_charbig = 'just inserted'
73699    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73700 DELETE FROM t0_aux
73701 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73702 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73703 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73704 'just inserted' FROM t0_template
73705 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73706 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
73707 BEGIN
73708 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73709 f_charbig = 'updated by trigger'
73710       WHERE f_int1 = - old.f_int1;
73711 END|
73712 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
73713 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
73714         
73715 # check trigger-4 success:      1
73716 DROP TRIGGER trg_1;
73717 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73718 f_int2 = CAST(f_char1 AS SIGNED INT),
73719 f_charbig = 'just inserted'
73720    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73721 DELETE FROM t0_aux
73722 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73723 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73724 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73725 'just inserted' FROM t0_template
73726 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73727 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
73728 BEGIN
73729 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73730 f_charbig = 'updated by trigger'
73731       WHERE f_int1 = new.f_int1;
73732 END|
73733 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
73734 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
73735         
73736 # check trigger-5 success:      1
73737 DROP TRIGGER trg_1;
73738 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73739 f_int2 = CAST(f_char1 AS SIGNED INT),
73740 f_charbig = 'just inserted'
73741    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73742 DELETE FROM t0_aux
73743 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73744 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73745 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73746 'just inserted' FROM t0_template
73747 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73748 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
73749 BEGIN
73750 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73751 f_charbig = 'updated by trigger'
73752       WHERE f_int1 = - old.f_int1;
73753 END|
73754 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
73755 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
73756         
73757 # check trigger-6 success:      1
73758 DROP TRIGGER trg_1;
73759 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73760 f_int2 = CAST(f_char1 AS SIGNED INT),
73761 f_charbig = 'just inserted'
73762    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73763 DELETE FROM t0_aux
73764 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73765 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73766 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73767 'just inserted' FROM t0_template
73768 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73769 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
73770 BEGIN
73771 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73772 f_charbig = 'updated by trigger'
73773       WHERE f_int1 = - old.f_int1;
73774 END|
73775 DELETE FROM t0_aux
73776 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
73777         
73778 # check trigger-7 success:      1
73779 DROP TRIGGER trg_1;
73780 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73781 f_int2 = CAST(f_char1 AS SIGNED INT),
73782 f_charbig = 'just inserted'
73783    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73784 DELETE FROM t0_aux
73785 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73786 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
73787 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
73788 'just inserted' FROM t0_template
73789 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73790 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
73791 BEGIN
73792 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
73793 f_charbig = 'updated by trigger'
73794       WHERE f_int1 = - old.f_int1;
73795 END|
73796 DELETE FROM t0_aux
73797 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
73798         
73799 # check trigger-8 success:      1
73800 DROP TRIGGER trg_1;
73801 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73802 f_int2 = CAST(f_char1 AS SIGNED INT),
73803 f_charbig = 'just inserted'
73804    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
73805 DELETE FROM t0_aux
73806 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73807 DELETE FROM t1
73808 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
73809 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
73810 BEGIN
73811 SET new.f_int1 = old.f_int1 + @max_row,
73812 new.f_int2 = old.f_int2 - @max_row,
73813 new.f_charbig = '####updated per update trigger####';
73814 END|
73815 UPDATE t1
73816 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
73817 f_charbig = '####updated per update statement itself####';
73818         
73819 # check trigger-9 success:      1
73820 DROP TRIGGER trg_2;
73821 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73822 f_int2 = CAST(f_char1 AS SIGNED INT),
73823 f_charbig = CONCAT('===',f_char1,'===');
73824 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
73825 BEGIN
73826 SET new.f_int1 = new.f_int1 + @max_row,
73827 new.f_int2 = new.f_int2 - @max_row,
73828 new.f_charbig = '####updated per update trigger####';
73829 END|
73830 UPDATE t1
73831 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
73832 f_charbig = '####updated per update statement itself####';
73833         
73834 # check trigger-10 success:     1
73835 DROP TRIGGER trg_2;
73836 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
73837 f_int2 = CAST(f_char1 AS SIGNED INT),
73838 f_charbig = CONCAT('===',f_char1,'===');
73839 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
73840 BEGIN
73841 SET new.f_int1 = @my_max1 + @counter,
73842 new.f_int2 = @my_min2 - @counter,
73843 new.f_charbig = '####updated per insert trigger####';
73844 SET @counter = @counter + 1;
73845 END|
73846 SET @counter = 1;
73847 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
73848 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
73849 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
73850 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
73851 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
73852 ORDER BY f_int1;
73853 DROP TRIGGER trg_3;
73854         
73855 # check trigger-11 success:     1
73856 DELETE FROM t1
73857 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
73858 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
73859 AND f_charbig = '####updated per insert trigger####';
73860 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
73861 BEGIN
73862 SET new.f_int1 = @my_max1 + @counter,
73863 new.f_int2 = @my_min2 - @counter,
73864 new.f_charbig = '####updated per insert trigger####';
73865 SET @counter = @counter + 1;
73866 END|
73867 SET @counter = 1;
73868 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
73869 INSERT INTO t1 (f_char1, f_char2, f_charbig)
73870 SELECT CAST(f_int1 AS CHAR),
73871 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
73872 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
73873 ORDER BY f_int1;
73874 DROP TRIGGER trg_3;
73875         
73876 # check trigger-12 success:     1
73877 DELETE FROM t1
73878 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
73879 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
73880 AND f_charbig = '####updated per insert trigger####';
73881 ANALYZE  TABLE t1;
73882 Table   Op      Msg_type        Msg_text
73883 test.t1 analyze status  OK
73884 CHECK    TABLE t1 EXTENDED;
73885 Table   Op      Msg_type        Msg_text
73886 test.t1 check   status  OK
73887 CHECKSUM TABLE t1 EXTENDED;
73888 Table   Checksum
73889 test.t1 <some_value>
73890 OPTIMIZE TABLE t1;
73891 Table   Op      Msg_type        Msg_text
73892 test.t1 optimize        status  OK
73893 # check layout success:    1
73894 REPAIR   TABLE t1 EXTENDED;
73895 Table   Op      Msg_type        Msg_text
73896 test.t1 repair  status  OK
73897 # check layout success:    1
73898 TRUNCATE t1;
73899         
73900 # check TRUNCATE success:       1
73901 # check layout success:    1
73902 # End usability test (inc/partition_check.inc)
73903 DROP TABLE t1;
73904 CREATE TABLE t1 (
73905 f_int1 INTEGER,
73906 f_int2 INTEGER,
73907 f_char1 CHAR(20),
73908 f_char2 CHAR(20),
73909 f_charbig VARCHAR(1000)
73912 PARTITION BY LIST(ABS(MOD(f_int1,2)))
73913 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
73914 (PARTITION part_1 VALUES IN (0),
73915  PARTITION part_2 VALUES IN (1),
73916  PARTITION part_3 VALUES IN (NULL));
73917 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
73918 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
73919 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
73920 ALTER TABLE t1 REPAIR PARTITION part_1;
73921 Table   Op      Msg_type        Msg_text
73922 test.t1 repair  status  OK
73923 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
73924 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
73925 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
73926 # Start usability test (inc/partition_check.inc)
73927 create_command
73928 SHOW CREATE TABLE t1;
73929 Table   Create Table
73930 t1      CREATE TABLE `t1` (
73931   `f_int1` int(11) DEFAULT NULL,
73932   `f_int2` int(11) DEFAULT NULL,
73933   `f_char1` char(20) DEFAULT NULL,
73934   `f_char2` char(20) DEFAULT NULL,
73935   `f_charbig` varchar(1000) DEFAULT NULL
73936 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
73937 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
73938 SUBPARTITION BY KEY (f_int1)
73939 SUBPARTITIONS 3
73940 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
73941  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
73942  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
73944 unified filelist
73945 t1#P#part_1#SP#part_1sp0.MYD
73946 t1#P#part_1#SP#part_1sp0.MYI
73947 t1#P#part_1#SP#part_1sp1.MYD
73948 t1#P#part_1#SP#part_1sp1.MYI
73949 t1#P#part_1#SP#part_1sp2.MYD
73950 t1#P#part_1#SP#part_1sp2.MYI
73951 t1#P#part_2#SP#part_2sp0.MYD
73952 t1#P#part_2#SP#part_2sp0.MYI
73953 t1#P#part_2#SP#part_2sp1.MYD
73954 t1#P#part_2#SP#part_2sp1.MYI
73955 t1#P#part_2#SP#part_2sp2.MYD
73956 t1#P#part_2#SP#part_2sp2.MYI
73957 t1#P#part_3#SP#part_3sp0.MYD
73958 t1#P#part_3#SP#part_3sp0.MYI
73959 t1#P#part_3#SP#part_3sp1.MYD
73960 t1#P#part_3#SP#part_3sp1.MYI
73961 t1#P#part_3#SP#part_3sp2.MYD
73962 t1#P#part_3#SP#part_3sp2.MYI
73963 t1.frm
73964 t1.par
73966 # check prerequisites-1 success:    1
73967 # check COUNT(*) success:    1
73968 # check MIN/MAX(f_int1) success:    1
73969 # check MIN/MAX(f_int2) success:    1
73970 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
73971 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
73972 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
73973 WHERE f_int1 IN (2,3);
73974 # check prerequisites-3 success:    1
73975 DELETE FROM t1 WHERE f_charbig = 'delete me';
73976 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
73977 # check read via f_int1 success: 1
73978 # check read via f_int2 success: 1
73979         
73980 # check multiple-1 success:     1
73981 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
73982         
73983 # check multiple-2 success:     1
73984 INSERT INTO t1 SELECT * FROM t0_template
73985 WHERE MOD(f_int1,3) = 0;
73986         
73987 # check multiple-3 success:     1
73988 UPDATE t1 SET f_int1 = f_int1 + @max_row
73989 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
73990 AND @max_row_div2 + @max_row_div4;
73991         
73992 # check multiple-4 success:     1
73993 DELETE FROM t1
73994 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
73995 AND @max_row_div2 + @max_row_div4 + @max_row;
73996         
73997 # check multiple-5 success:     1
73998 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
73999 INSERT INTO t1
74000 SET f_int1 = @cur_value , f_int2 = @cur_value,
74001 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
74002 f_charbig = '#SINGLE#';
74003         
74004 # check single-1 success:       1
74005 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
74006 INSERT INTO t1
74007 SET f_int1 = @cur_value , f_int2 = @cur_value,
74008 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
74009 f_charbig = '#SINGLE#';
74010         
74011 # check single-2 success:       1
74012 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
74013 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
74014 UPDATE t1 SET f_int1 = @cur_value2
74015 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
74016         
74017 # check single-3 success:       1
74018 SET @cur_value1= -1;
74019 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
74020 UPDATE t1 SET f_int1 = @cur_value1
74021 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
74022         
74023 # check single-4 success:       1
74024 SELECT MAX(f_int1) INTO @cur_value FROM t1;
74025 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
74026         
74027 # check single-5 success:       1
74028 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
74029         
74030 # check single-6 success:       1
74031 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
74032         
74033 # check single-7 success:       1
74034 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
74035 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
74036 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
74037 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
74038 f_charbig = '#NULL#';
74039 INSERT INTO t1
74040 SET f_int1 = NULL , f_int2 = -@max_row,
74041 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
74042 f_charbig = '#NULL#';
74043 # check null success:    1
74044         
74045 # check null-1 success:         1
74046 UPDATE t1 SET f_int1 = -@max_row
74047 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
74048 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
74049         
74050 # check null-2 success:         1
74051 UPDATE t1 SET f_int1 = NULL
74052 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
74053 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
74054         
74055 # check null-3 success:         1
74056 DELETE FROM t1
74057 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
74058 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
74059         
74060 # check null-4 success:         1
74061 DELETE FROM t1
74062 WHERE f_int1 = 0 AND f_int2 = 0
74063 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
74064 AND f_charbig = '#NULL#';
74065 SET AUTOCOMMIT= 0;
74066 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
74067 SELECT f_int1, f_int1, '', '', 'was inserted'
74068 FROM t0_template source_tab
74069 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
74070         
74071 # check transactions-1 success:         1
74072 COMMIT WORK;
74073         
74074 # check transactions-2 success:         1
74075 ROLLBACK WORK;
74076         
74077 # check transactions-3 success:         1
74078 DELETE FROM t1 WHERE f_charbig = 'was inserted';
74079 COMMIT WORK;
74080 ROLLBACK WORK;
74081         
74082 # check transactions-4 success:         1
74083 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
74084 SELECT f_int1, f_int1, '', '', 'was inserted'
74085 FROM t0_template source_tab
74086 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
74087         
74088 # check transactions-5 success:         1
74089 ROLLBACK WORK;
74090 Warnings:
74091 Warning 1196    Some non-transactional changed tables couldn't be rolled back
74092         
74093 # check transactions-6 success:         1
74094 # INFO: Storage engine used for t1 seems to be not transactional.
74095 COMMIT;
74096         
74097 # check transactions-7 success:         1
74098 DELETE FROM t1 WHERE f_charbig = 'was inserted';
74099 COMMIT WORK;
74100 SET @@session.sql_mode = 'traditional';
74101 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
74102 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
74103 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
74104 '', '', 'was inserted' FROM t0_template
74105 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
74106 ERROR 22012: Division by 0
74107 COMMIT;
74108         
74109 # check transactions-8 success:         1
74110 # INFO: Storage engine used for t1 seems to be unable to revert
74111 #       changes made by the failing statement.
74112 SET @@session.sql_mode = '';
74113 SET AUTOCOMMIT= 1;
74114 DELETE FROM t1 WHERE f_charbig = 'was inserted';
74115 COMMIT WORK;
74116 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
74117         
74118 # check special-1 success:      1
74119 UPDATE t1 SET f_charbig = '';
74120         
74121 # check special-2 success:      1
74122 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
74123 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
74124 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
74125 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74126 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74127 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74128 'just inserted' FROM t0_template
74129 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74130 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
74131 BEGIN
74132 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74133 f_charbig = 'updated by trigger'
74134       WHERE f_int1 = new.f_int1;
74135 END|
74136 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74137 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
74138 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74139         
74140 # check trigger-1 success:      1
74141 DROP TRIGGER trg_1;
74142 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74143 f_int2 = CAST(f_char1 AS SIGNED INT),
74144 f_charbig = 'just inserted'
74145    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74146 DELETE FROM t0_aux
74147 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74148 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74149 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74150 'just inserted' FROM t0_template
74151 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74152 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
74153 BEGIN
74154 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74155 f_charbig = 'updated by trigger'
74156       WHERE f_int1 = new.f_int1;
74157 END|
74158 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74159 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
74160 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74161         
74162 # check trigger-2 success:      1
74163 DROP TRIGGER trg_1;
74164 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74165 f_int2 = CAST(f_char1 AS SIGNED INT),
74166 f_charbig = 'just inserted'
74167    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74168 DELETE FROM t0_aux
74169 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74170 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74171 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74172 'just inserted' FROM t0_template
74173 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74174 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
74175 BEGIN
74176 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74177 f_charbig = 'updated by trigger'
74178       WHERE f_int1 = new.f_int1;
74179 END|
74180 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
74181 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
74182         
74183 # check trigger-3 success:      1
74184 DROP TRIGGER trg_1;
74185 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74186 f_int2 = CAST(f_char1 AS SIGNED INT),
74187 f_charbig = 'just inserted'
74188    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74189 DELETE FROM t0_aux
74190 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74191 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74192 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74193 'just inserted' FROM t0_template
74194 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74195 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
74196 BEGIN
74197 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74198 f_charbig = 'updated by trigger'
74199       WHERE f_int1 = - old.f_int1;
74200 END|
74201 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
74202 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
74203         
74204 # check trigger-4 success:      1
74205 DROP TRIGGER trg_1;
74206 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74207 f_int2 = CAST(f_char1 AS SIGNED INT),
74208 f_charbig = 'just inserted'
74209    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74210 DELETE FROM t0_aux
74211 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74212 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74213 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74214 'just inserted' FROM t0_template
74215 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74216 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
74217 BEGIN
74218 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74219 f_charbig = 'updated by trigger'
74220       WHERE f_int1 = new.f_int1;
74221 END|
74222 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
74223 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
74224         
74225 # check trigger-5 success:      1
74226 DROP TRIGGER trg_1;
74227 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74228 f_int2 = CAST(f_char1 AS SIGNED INT),
74229 f_charbig = 'just inserted'
74230    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74231 DELETE FROM t0_aux
74232 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74233 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74234 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74235 'just inserted' FROM t0_template
74236 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74237 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
74238 BEGIN
74239 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74240 f_charbig = 'updated by trigger'
74241       WHERE f_int1 = - old.f_int1;
74242 END|
74243 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
74244 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
74245         
74246 # check trigger-6 success:      1
74247 DROP TRIGGER trg_1;
74248 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74249 f_int2 = CAST(f_char1 AS SIGNED INT),
74250 f_charbig = 'just inserted'
74251    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74252 DELETE FROM t0_aux
74253 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74254 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74255 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74256 'just inserted' FROM t0_template
74257 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74258 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
74259 BEGIN
74260 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74261 f_charbig = 'updated by trigger'
74262       WHERE f_int1 = - old.f_int1;
74263 END|
74264 DELETE FROM t0_aux
74265 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
74266         
74267 # check trigger-7 success:      1
74268 DROP TRIGGER trg_1;
74269 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74270 f_int2 = CAST(f_char1 AS SIGNED INT),
74271 f_charbig = 'just inserted'
74272    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74273 DELETE FROM t0_aux
74274 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74275 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74276 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74277 'just inserted' FROM t0_template
74278 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74279 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
74280 BEGIN
74281 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74282 f_charbig = 'updated by trigger'
74283       WHERE f_int1 = - old.f_int1;
74284 END|
74285 DELETE FROM t0_aux
74286 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
74287         
74288 # check trigger-8 success:      1
74289 DROP TRIGGER trg_1;
74290 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74291 f_int2 = CAST(f_char1 AS SIGNED INT),
74292 f_charbig = 'just inserted'
74293    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74294 DELETE FROM t0_aux
74295 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74296 DELETE FROM t1
74297 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74298 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
74299 BEGIN
74300 SET new.f_int1 = old.f_int1 + @max_row,
74301 new.f_int2 = old.f_int2 - @max_row,
74302 new.f_charbig = '####updated per update trigger####';
74303 END|
74304 UPDATE t1
74305 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
74306 f_charbig = '####updated per update statement itself####';
74307         
74308 # check trigger-9 success:      1
74309 DROP TRIGGER trg_2;
74310 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74311 f_int2 = CAST(f_char1 AS SIGNED INT),
74312 f_charbig = CONCAT('===',f_char1,'===');
74313 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
74314 BEGIN
74315 SET new.f_int1 = new.f_int1 + @max_row,
74316 new.f_int2 = new.f_int2 - @max_row,
74317 new.f_charbig = '####updated per update trigger####';
74318 END|
74319 UPDATE t1
74320 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
74321 f_charbig = '####updated per update statement itself####';
74322         
74323 # check trigger-10 success:     1
74324 DROP TRIGGER trg_2;
74325 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74326 f_int2 = CAST(f_char1 AS SIGNED INT),
74327 f_charbig = CONCAT('===',f_char1,'===');
74328 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
74329 BEGIN
74330 SET new.f_int1 = @my_max1 + @counter,
74331 new.f_int2 = @my_min2 - @counter,
74332 new.f_charbig = '####updated per insert trigger####';
74333 SET @counter = @counter + 1;
74334 END|
74335 SET @counter = 1;
74336 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
74337 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
74338 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
74339 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
74340 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
74341 ORDER BY f_int1;
74342 DROP TRIGGER trg_3;
74343         
74344 # check trigger-11 success:     1
74345 DELETE FROM t1
74346 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
74347 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
74348 AND f_charbig = '####updated per insert trigger####';
74349 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
74350 BEGIN
74351 SET new.f_int1 = @my_max1 + @counter,
74352 new.f_int2 = @my_min2 - @counter,
74353 new.f_charbig = '####updated per insert trigger####';
74354 SET @counter = @counter + 1;
74355 END|
74356 SET @counter = 1;
74357 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
74358 INSERT INTO t1 (f_char1, f_char2, f_charbig)
74359 SELECT CAST(f_int1 AS CHAR),
74360 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
74361 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
74362 ORDER BY f_int1;
74363 DROP TRIGGER trg_3;
74364         
74365 # check trigger-12 success:     1
74366 DELETE FROM t1
74367 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
74368 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
74369 AND f_charbig = '####updated per insert trigger####';
74370 ANALYZE  TABLE t1;
74371 Table   Op      Msg_type        Msg_text
74372 test.t1 analyze status  OK
74373 CHECK    TABLE t1 EXTENDED;
74374 Table   Op      Msg_type        Msg_text
74375 test.t1 check   status  OK
74376 CHECKSUM TABLE t1 EXTENDED;
74377 Table   Checksum
74378 test.t1 <some_value>
74379 OPTIMIZE TABLE t1;
74380 Table   Op      Msg_type        Msg_text
74381 test.t1 optimize        status  OK
74382 # check layout success:    1
74383 REPAIR   TABLE t1 EXTENDED;
74384 Table   Op      Msg_type        Msg_text
74385 test.t1 repair  status  OK
74386 # check layout success:    1
74387 TRUNCATE t1;
74388         
74389 # check TRUNCATE success:       1
74390 # check layout success:    1
74391 # End usability test (inc/partition_check.inc)
74392 DROP TABLE t1;
74393 #  5.2 ALTER ... REPAIR PARTITION part_1,part_2;
74394 DROP TABLE IF EXISTS t1;
74395 CREATE TABLE t1 (
74396 f_int1 INTEGER,
74397 f_int2 INTEGER,
74398 f_char1 CHAR(20),
74399 f_char2 CHAR(20),
74400 f_charbig VARCHAR(1000)
74403 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
74404 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
74405 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
74406 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
74407 ALTER TABLE t1 REPAIR PARTITION part_1,part_2;
74408 Table   Op      Msg_type        Msg_text
74409 test.t1 repair  status  OK
74410 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
74411 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
74412 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
74413 # Start usability test (inc/partition_check.inc)
74414 create_command
74415 SHOW CREATE TABLE t1;
74416 Table   Create Table
74417 t1      CREATE TABLE `t1` (
74418   `f_int1` int(11) DEFAULT NULL,
74419   `f_int2` int(11) DEFAULT NULL,
74420   `f_char1` char(20) DEFAULT NULL,
74421   `f_char2` char(20) DEFAULT NULL,
74422   `f_charbig` varchar(1000) DEFAULT NULL
74423 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
74424 /*!50100 PARTITION BY HASH (f_int1)
74425 (PARTITION part_1 ENGINE = MyISAM,
74426  PARTITION part_2 ENGINE = MyISAM) */
74428 unified filelist
74429 t1#P#part_1.MYD
74430 t1#P#part_1.MYI
74431 t1#P#part_2.MYD
74432 t1#P#part_2.MYI
74433 t1.frm
74434 t1.par
74436 # check prerequisites-1 success:    1
74437 # check COUNT(*) success:    1
74438 # check MIN/MAX(f_int1) success:    1
74439 # check MIN/MAX(f_int2) success:    1
74440 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
74441 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
74442 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
74443 WHERE f_int1 IN (2,3);
74444 # check prerequisites-3 success:    1
74445 DELETE FROM t1 WHERE f_charbig = 'delete me';
74446 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
74447 # check read via f_int1 success: 1
74448 # check read via f_int2 success: 1
74449         
74450 # check multiple-1 success:     1
74451 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
74452         
74453 # check multiple-2 success:     1
74454 INSERT INTO t1 SELECT * FROM t0_template
74455 WHERE MOD(f_int1,3) = 0;
74456         
74457 # check multiple-3 success:     1
74458 UPDATE t1 SET f_int1 = f_int1 + @max_row
74459 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
74460 AND @max_row_div2 + @max_row_div4;
74461         
74462 # check multiple-4 success:     1
74463 DELETE FROM t1
74464 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
74465 AND @max_row_div2 + @max_row_div4 + @max_row;
74466         
74467 # check multiple-5 success:     1
74468 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
74469 INSERT INTO t1
74470 SET f_int1 = @cur_value , f_int2 = @cur_value,
74471 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
74472 f_charbig = '#SINGLE#';
74473         
74474 # check single-1 success:       1
74475 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
74476 INSERT INTO t1
74477 SET f_int1 = @cur_value , f_int2 = @cur_value,
74478 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
74479 f_charbig = '#SINGLE#';
74480         
74481 # check single-2 success:       1
74482 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
74483 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
74484 UPDATE t1 SET f_int1 = @cur_value2
74485 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
74486         
74487 # check single-3 success:       1
74488 SET @cur_value1= -1;
74489 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
74490 UPDATE t1 SET f_int1 = @cur_value1
74491 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
74492         
74493 # check single-4 success:       1
74494 SELECT MAX(f_int1) INTO @cur_value FROM t1;
74495 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
74496         
74497 # check single-5 success:       1
74498 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
74499         
74500 # check single-6 success:       1
74501 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
74502         
74503 # check single-7 success:       1
74504 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
74505 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
74506 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
74507 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
74508 f_charbig = '#NULL#';
74509 INSERT INTO t1
74510 SET f_int1 = NULL , f_int2 = -@max_row,
74511 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
74512 f_charbig = '#NULL#';
74513 # check null success:    1
74514         
74515 # check null-1 success:         1
74516 UPDATE t1 SET f_int1 = -@max_row
74517 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
74518 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
74519         
74520 # check null-2 success:         1
74521 UPDATE t1 SET f_int1 = NULL
74522 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
74523 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
74524         
74525 # check null-3 success:         1
74526 DELETE FROM t1
74527 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
74528 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
74529         
74530 # check null-4 success:         1
74531 DELETE FROM t1
74532 WHERE f_int1 = 0 AND f_int2 = 0
74533 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
74534 AND f_charbig = '#NULL#';
74535 SET AUTOCOMMIT= 0;
74536 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
74537 SELECT f_int1, f_int1, '', '', 'was inserted'
74538 FROM t0_template source_tab
74539 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
74540         
74541 # check transactions-1 success:         1
74542 COMMIT WORK;
74543         
74544 # check transactions-2 success:         1
74545 ROLLBACK WORK;
74546         
74547 # check transactions-3 success:         1
74548 DELETE FROM t1 WHERE f_charbig = 'was inserted';
74549 COMMIT WORK;
74550 ROLLBACK WORK;
74551         
74552 # check transactions-4 success:         1
74553 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
74554 SELECT f_int1, f_int1, '', '', 'was inserted'
74555 FROM t0_template source_tab
74556 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
74557         
74558 # check transactions-5 success:         1
74559 ROLLBACK WORK;
74560 Warnings:
74561 Warning 1196    Some non-transactional changed tables couldn't be rolled back
74562         
74563 # check transactions-6 success:         1
74564 # INFO: Storage engine used for t1 seems to be not transactional.
74565 COMMIT;
74566         
74567 # check transactions-7 success:         1
74568 DELETE FROM t1 WHERE f_charbig = 'was inserted';
74569 COMMIT WORK;
74570 SET @@session.sql_mode = 'traditional';
74571 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
74572 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
74573 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
74574 '', '', 'was inserted' FROM t0_template
74575 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
74576 ERROR 22012: Division by 0
74577 COMMIT;
74578         
74579 # check transactions-8 success:         1
74580 # INFO: Storage engine used for t1 seems to be unable to revert
74581 #       changes made by the failing statement.
74582 SET @@session.sql_mode = '';
74583 SET AUTOCOMMIT= 1;
74584 DELETE FROM t1 WHERE f_charbig = 'was inserted';
74585 COMMIT WORK;
74586 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
74587         
74588 # check special-1 success:      1
74589 UPDATE t1 SET f_charbig = '';
74590         
74591 # check special-2 success:      1
74592 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
74593 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
74594 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
74595 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74596 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74597 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74598 'just inserted' FROM t0_template
74599 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74600 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
74601 BEGIN
74602 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74603 f_charbig = 'updated by trigger'
74604       WHERE f_int1 = new.f_int1;
74605 END|
74606 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74607 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
74608 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74609         
74610 # check trigger-1 success:      1
74611 DROP TRIGGER trg_1;
74612 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74613 f_int2 = CAST(f_char1 AS SIGNED INT),
74614 f_charbig = 'just inserted'
74615    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74616 DELETE FROM t0_aux
74617 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74618 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74619 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74620 'just inserted' FROM t0_template
74621 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74622 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
74623 BEGIN
74624 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74625 f_charbig = 'updated by trigger'
74626       WHERE f_int1 = new.f_int1;
74627 END|
74628 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74629 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
74630 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74631         
74632 # check trigger-2 success:      1
74633 DROP TRIGGER trg_1;
74634 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74635 f_int2 = CAST(f_char1 AS SIGNED INT),
74636 f_charbig = 'just inserted'
74637    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74638 DELETE FROM t0_aux
74639 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74640 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74641 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74642 'just inserted' FROM t0_template
74643 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74644 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
74645 BEGIN
74646 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74647 f_charbig = 'updated by trigger'
74648       WHERE f_int1 = new.f_int1;
74649 END|
74650 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
74651 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
74652         
74653 # check trigger-3 success:      1
74654 DROP TRIGGER trg_1;
74655 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74656 f_int2 = CAST(f_char1 AS SIGNED INT),
74657 f_charbig = 'just inserted'
74658    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74659 DELETE FROM t0_aux
74660 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74661 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74662 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74663 'just inserted' FROM t0_template
74664 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74665 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
74666 BEGIN
74667 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74668 f_charbig = 'updated by trigger'
74669       WHERE f_int1 = - old.f_int1;
74670 END|
74671 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
74672 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
74673         
74674 # check trigger-4 success:      1
74675 DROP TRIGGER trg_1;
74676 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74677 f_int2 = CAST(f_char1 AS SIGNED INT),
74678 f_charbig = 'just inserted'
74679    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74680 DELETE FROM t0_aux
74681 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74682 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74683 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74684 'just inserted' FROM t0_template
74685 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74686 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
74687 BEGIN
74688 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74689 f_charbig = 'updated by trigger'
74690       WHERE f_int1 = new.f_int1;
74691 END|
74692 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
74693 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
74694         
74695 # check trigger-5 success:      1
74696 DROP TRIGGER trg_1;
74697 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74698 f_int2 = CAST(f_char1 AS SIGNED INT),
74699 f_charbig = 'just inserted'
74700    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74701 DELETE FROM t0_aux
74702 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74703 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74704 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74705 'just inserted' FROM t0_template
74706 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74707 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
74708 BEGIN
74709 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74710 f_charbig = 'updated by trigger'
74711       WHERE f_int1 = - old.f_int1;
74712 END|
74713 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
74714 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
74715         
74716 # check trigger-6 success:      1
74717 DROP TRIGGER trg_1;
74718 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74719 f_int2 = CAST(f_char1 AS SIGNED INT),
74720 f_charbig = 'just inserted'
74721    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74722 DELETE FROM t0_aux
74723 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74724 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74725 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74726 'just inserted' FROM t0_template
74727 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74728 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
74729 BEGIN
74730 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74731 f_charbig = 'updated by trigger'
74732       WHERE f_int1 = - old.f_int1;
74733 END|
74734 DELETE FROM t0_aux
74735 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
74736         
74737 # check trigger-7 success:      1
74738 DROP TRIGGER trg_1;
74739 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74740 f_int2 = CAST(f_char1 AS SIGNED INT),
74741 f_charbig = 'just inserted'
74742    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74743 DELETE FROM t0_aux
74744 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74745 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
74746 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
74747 'just inserted' FROM t0_template
74748 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74749 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
74750 BEGIN
74751 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
74752 f_charbig = 'updated by trigger'
74753       WHERE f_int1 = - old.f_int1;
74754 END|
74755 DELETE FROM t0_aux
74756 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
74757         
74758 # check trigger-8 success:      1
74759 DROP TRIGGER trg_1;
74760 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74761 f_int2 = CAST(f_char1 AS SIGNED INT),
74762 f_charbig = 'just inserted'
74763    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
74764 DELETE FROM t0_aux
74765 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74766 DELETE FROM t1
74767 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
74768 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
74769 BEGIN
74770 SET new.f_int1 = old.f_int1 + @max_row,
74771 new.f_int2 = old.f_int2 - @max_row,
74772 new.f_charbig = '####updated per update trigger####';
74773 END|
74774 UPDATE t1
74775 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
74776 f_charbig = '####updated per update statement itself####';
74777         
74778 # check trigger-9 success:      1
74779 DROP TRIGGER trg_2;
74780 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74781 f_int2 = CAST(f_char1 AS SIGNED INT),
74782 f_charbig = CONCAT('===',f_char1,'===');
74783 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
74784 BEGIN
74785 SET new.f_int1 = new.f_int1 + @max_row,
74786 new.f_int2 = new.f_int2 - @max_row,
74787 new.f_charbig = '####updated per update trigger####';
74788 END|
74789 UPDATE t1
74790 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
74791 f_charbig = '####updated per update statement itself####';
74792         
74793 # check trigger-10 success:     1
74794 DROP TRIGGER trg_2;
74795 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
74796 f_int2 = CAST(f_char1 AS SIGNED INT),
74797 f_charbig = CONCAT('===',f_char1,'===');
74798 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
74799 BEGIN
74800 SET new.f_int1 = @my_max1 + @counter,
74801 new.f_int2 = @my_min2 - @counter,
74802 new.f_charbig = '####updated per insert trigger####';
74803 SET @counter = @counter + 1;
74804 END|
74805 SET @counter = 1;
74806 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
74807 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
74808 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
74809 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
74810 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
74811 ORDER BY f_int1;
74812 DROP TRIGGER trg_3;
74813         
74814 # check trigger-11 success:     1
74815 DELETE FROM t1
74816 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
74817 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
74818 AND f_charbig = '####updated per insert trigger####';
74819 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
74820 BEGIN
74821 SET new.f_int1 = @my_max1 + @counter,
74822 new.f_int2 = @my_min2 - @counter,
74823 new.f_charbig = '####updated per insert trigger####';
74824 SET @counter = @counter + 1;
74825 END|
74826 SET @counter = 1;
74827 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
74828 INSERT INTO t1 (f_char1, f_char2, f_charbig)
74829 SELECT CAST(f_int1 AS CHAR),
74830 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
74831 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
74832 ORDER BY f_int1;
74833 DROP TRIGGER trg_3;
74834         
74835 # check trigger-12 success:     1
74836 DELETE FROM t1
74837 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
74838 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
74839 AND f_charbig = '####updated per insert trigger####';
74840 ANALYZE  TABLE t1;
74841 Table   Op      Msg_type        Msg_text
74842 test.t1 analyze status  OK
74843 CHECK    TABLE t1 EXTENDED;
74844 Table   Op      Msg_type        Msg_text
74845 test.t1 check   status  OK
74846 CHECKSUM TABLE t1 EXTENDED;
74847 Table   Checksum
74848 test.t1 <some_value>
74849 OPTIMIZE TABLE t1;
74850 Table   Op      Msg_type        Msg_text
74851 test.t1 optimize        status  OK
74852 # check layout success:    1
74853 REPAIR   TABLE t1 EXTENDED;
74854 Table   Op      Msg_type        Msg_text
74855 test.t1 repair  status  OK
74856 # check layout success:    1
74857 TRUNCATE t1;
74858         
74859 # check TRUNCATE success:       1
74860 # check layout success:    1
74861 # End usability test (inc/partition_check.inc)
74862 DROP TABLE t1;
74863 CREATE TABLE t1 (
74864 f_int1 INTEGER,
74865 f_int2 INTEGER,
74866 f_char1 CHAR(20),
74867 f_char2 CHAR(20),
74868 f_charbig VARCHAR(1000)
74871 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
74872 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
74873 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
74874 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
74875 ALTER TABLE t1 REPAIR PARTITION part_1,part_2;
74876 Table   Op      Msg_type        Msg_text
74877 test.t1 repair  status  OK
74878 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
74879 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
74880 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
74881 # Start usability test (inc/partition_check.inc)
74882 create_command
74883 SHOW CREATE TABLE t1;
74884 Table   Create Table
74885 t1      CREATE TABLE `t1` (
74886   `f_int1` int(11) DEFAULT NULL,
74887   `f_int2` int(11) DEFAULT NULL,
74888   `f_char1` char(20) DEFAULT NULL,
74889   `f_char2` char(20) DEFAULT NULL,
74890   `f_charbig` varchar(1000) DEFAULT NULL
74891 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
74892 /*!50100 PARTITION BY KEY (f_int1)
74893 (PARTITION part_1 ENGINE = MyISAM,
74894  PARTITION part_2 ENGINE = MyISAM,
74895  PARTITION part_3 ENGINE = MyISAM,
74896  PARTITION part_4 ENGINE = MyISAM,
74897  PARTITION part_5 ENGINE = MyISAM) */
74899 unified filelist
74900 t1#P#part_1.MYD
74901 t1#P#part_1.MYI
74902 t1#P#part_2.MYD
74903 t1#P#part_2.MYI
74904 t1#P#part_3.MYD
74905 t1#P#part_3.MYI
74906 t1#P#part_4.MYD
74907 t1#P#part_4.MYI
74908 t1#P#part_5.MYD
74909 t1#P#part_5.MYI
74910 t1.frm
74911 t1.par
74913 # check prerequisites-1 success:    1
74914 # check COUNT(*) success:    1
74915 # check MIN/MAX(f_int1) success:    1
74916 # check MIN/MAX(f_int2) success:    1
74917 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
74918 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
74919 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
74920 WHERE f_int1 IN (2,3);
74921 # check prerequisites-3 success:    1
74922 DELETE FROM t1 WHERE f_charbig = 'delete me';
74923 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
74924 # check read via f_int1 success: 1
74925 # check read via f_int2 success: 1
74926         
74927 # check multiple-1 success:     1
74928 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
74929         
74930 # check multiple-2 success:     1
74931 INSERT INTO t1 SELECT * FROM t0_template
74932 WHERE MOD(f_int1,3) = 0;
74933         
74934 # check multiple-3 success:     1
74935 UPDATE t1 SET f_int1 = f_int1 + @max_row
74936 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
74937 AND @max_row_div2 + @max_row_div4;
74938         
74939 # check multiple-4 success:     1
74940 DELETE FROM t1
74941 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
74942 AND @max_row_div2 + @max_row_div4 + @max_row;
74943         
74944 # check multiple-5 success:     1
74945 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
74946 INSERT INTO t1
74947 SET f_int1 = @cur_value , f_int2 = @cur_value,
74948 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
74949 f_charbig = '#SINGLE#';
74950         
74951 # check single-1 success:       1
74952 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
74953 INSERT INTO t1
74954 SET f_int1 = @cur_value , f_int2 = @cur_value,
74955 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
74956 f_charbig = '#SINGLE#';
74957         
74958 # check single-2 success:       1
74959 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
74960 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
74961 UPDATE t1 SET f_int1 = @cur_value2
74962 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
74963         
74964 # check single-3 success:       1
74965 SET @cur_value1= -1;
74966 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
74967 UPDATE t1 SET f_int1 = @cur_value1
74968 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
74969         
74970 # check single-4 success:       1
74971 SELECT MAX(f_int1) INTO @cur_value FROM t1;
74972 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
74973         
74974 # check single-5 success:       1
74975 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
74976         
74977 # check single-6 success:       1
74978 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
74979         
74980 # check single-7 success:       1
74981 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
74982 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
74983 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
74984 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
74985 f_charbig = '#NULL#';
74986 INSERT INTO t1
74987 SET f_int1 = NULL , f_int2 = -@max_row,
74988 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
74989 f_charbig = '#NULL#';
74990 # check null success:    1
74991         
74992 # check null-1 success:         1
74993 UPDATE t1 SET f_int1 = -@max_row
74994 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
74995 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
74996         
74997 # check null-2 success:         1
74998 UPDATE t1 SET f_int1 = NULL
74999 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
75000 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
75001         
75002 # check null-3 success:         1
75003 DELETE FROM t1
75004 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
75005 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
75006         
75007 # check null-4 success:         1
75008 DELETE FROM t1
75009 WHERE f_int1 = 0 AND f_int2 = 0
75010 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
75011 AND f_charbig = '#NULL#';
75012 SET AUTOCOMMIT= 0;
75013 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
75014 SELECT f_int1, f_int1, '', '', 'was inserted'
75015 FROM t0_template source_tab
75016 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
75017         
75018 # check transactions-1 success:         1
75019 COMMIT WORK;
75020         
75021 # check transactions-2 success:         1
75022 ROLLBACK WORK;
75023         
75024 # check transactions-3 success:         1
75025 DELETE FROM t1 WHERE f_charbig = 'was inserted';
75026 COMMIT WORK;
75027 ROLLBACK WORK;
75028         
75029 # check transactions-4 success:         1
75030 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
75031 SELECT f_int1, f_int1, '', '', 'was inserted'
75032 FROM t0_template source_tab
75033 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
75034         
75035 # check transactions-5 success:         1
75036 ROLLBACK WORK;
75037 Warnings:
75038 Warning 1196    Some non-transactional changed tables couldn't be rolled back
75039         
75040 # check transactions-6 success:         1
75041 # INFO: Storage engine used for t1 seems to be not transactional.
75042 COMMIT;
75043         
75044 # check transactions-7 success:         1
75045 DELETE FROM t1 WHERE f_charbig = 'was inserted';
75046 COMMIT WORK;
75047 SET @@session.sql_mode = 'traditional';
75048 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
75049 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
75050 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
75051 '', '', 'was inserted' FROM t0_template
75052 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
75053 ERROR 22012: Division by 0
75054 COMMIT;
75055         
75056 # check transactions-8 success:         1
75057 # INFO: Storage engine used for t1 seems to be unable to revert
75058 #       changes made by the failing statement.
75059 SET @@session.sql_mode = '';
75060 SET AUTOCOMMIT= 1;
75061 DELETE FROM t1 WHERE f_charbig = 'was inserted';
75062 COMMIT WORK;
75063 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
75064         
75065 # check special-1 success:      1
75066 UPDATE t1 SET f_charbig = '';
75067         
75068 # check special-2 success:      1
75069 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
75070 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
75071 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
75072 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75073 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75074 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75075 'just inserted' FROM t0_template
75076 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75077 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
75078 BEGIN
75079 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75080 f_charbig = 'updated by trigger'
75081       WHERE f_int1 = new.f_int1;
75082 END|
75083 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75084 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
75085 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75086         
75087 # check trigger-1 success:      1
75088 DROP TRIGGER trg_1;
75089 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75090 f_int2 = CAST(f_char1 AS SIGNED INT),
75091 f_charbig = 'just inserted'
75092    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75093 DELETE FROM t0_aux
75094 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75095 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75096 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75097 'just inserted' FROM t0_template
75098 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75099 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
75100 BEGIN
75101 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75102 f_charbig = 'updated by trigger'
75103       WHERE f_int1 = new.f_int1;
75104 END|
75105 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75106 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
75107 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75108         
75109 # check trigger-2 success:      1
75110 DROP TRIGGER trg_1;
75111 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75112 f_int2 = CAST(f_char1 AS SIGNED INT),
75113 f_charbig = 'just inserted'
75114    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75115 DELETE FROM t0_aux
75116 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75117 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75118 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75119 'just inserted' FROM t0_template
75120 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75121 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
75122 BEGIN
75123 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75124 f_charbig = 'updated by trigger'
75125       WHERE f_int1 = new.f_int1;
75126 END|
75127 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
75128 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
75129         
75130 # check trigger-3 success:      1
75131 DROP TRIGGER trg_1;
75132 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75133 f_int2 = CAST(f_char1 AS SIGNED INT),
75134 f_charbig = 'just inserted'
75135    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75136 DELETE FROM t0_aux
75137 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75138 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75139 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75140 'just inserted' FROM t0_template
75141 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75142 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
75143 BEGIN
75144 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75145 f_charbig = 'updated by trigger'
75146       WHERE f_int1 = - old.f_int1;
75147 END|
75148 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
75149 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
75150         
75151 # check trigger-4 success:      1
75152 DROP TRIGGER trg_1;
75153 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75154 f_int2 = CAST(f_char1 AS SIGNED INT),
75155 f_charbig = 'just inserted'
75156    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75157 DELETE FROM t0_aux
75158 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75159 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75160 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75161 'just inserted' FROM t0_template
75162 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75163 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
75164 BEGIN
75165 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75166 f_charbig = 'updated by trigger'
75167       WHERE f_int1 = new.f_int1;
75168 END|
75169 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
75170 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
75171         
75172 # check trigger-5 success:      1
75173 DROP TRIGGER trg_1;
75174 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75175 f_int2 = CAST(f_char1 AS SIGNED INT),
75176 f_charbig = 'just inserted'
75177    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75178 DELETE FROM t0_aux
75179 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75180 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75181 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75182 'just inserted' FROM t0_template
75183 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75184 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
75185 BEGIN
75186 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75187 f_charbig = 'updated by trigger'
75188       WHERE f_int1 = - old.f_int1;
75189 END|
75190 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
75191 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
75192         
75193 # check trigger-6 success:      1
75194 DROP TRIGGER trg_1;
75195 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75196 f_int2 = CAST(f_char1 AS SIGNED INT),
75197 f_charbig = 'just inserted'
75198    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75199 DELETE FROM t0_aux
75200 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75201 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75202 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75203 'just inserted' FROM t0_template
75204 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75205 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
75206 BEGIN
75207 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75208 f_charbig = 'updated by trigger'
75209       WHERE f_int1 = - old.f_int1;
75210 END|
75211 DELETE FROM t0_aux
75212 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
75213         
75214 # check trigger-7 success:      1
75215 DROP TRIGGER trg_1;
75216 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75217 f_int2 = CAST(f_char1 AS SIGNED INT),
75218 f_charbig = 'just inserted'
75219    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75220 DELETE FROM t0_aux
75221 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75222 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75223 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75224 'just inserted' FROM t0_template
75225 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75226 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
75227 BEGIN
75228 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75229 f_charbig = 'updated by trigger'
75230       WHERE f_int1 = - old.f_int1;
75231 END|
75232 DELETE FROM t0_aux
75233 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
75234         
75235 # check trigger-8 success:      1
75236 DROP TRIGGER trg_1;
75237 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75238 f_int2 = CAST(f_char1 AS SIGNED INT),
75239 f_charbig = 'just inserted'
75240    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75241 DELETE FROM t0_aux
75242 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75243 DELETE FROM t1
75244 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75245 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
75246 BEGIN
75247 SET new.f_int1 = old.f_int1 + @max_row,
75248 new.f_int2 = old.f_int2 - @max_row,
75249 new.f_charbig = '####updated per update trigger####';
75250 END|
75251 UPDATE t1
75252 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
75253 f_charbig = '####updated per update statement itself####';
75254         
75255 # check trigger-9 success:      1
75256 DROP TRIGGER trg_2;
75257 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75258 f_int2 = CAST(f_char1 AS SIGNED INT),
75259 f_charbig = CONCAT('===',f_char1,'===');
75260 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
75261 BEGIN
75262 SET new.f_int1 = new.f_int1 + @max_row,
75263 new.f_int2 = new.f_int2 - @max_row,
75264 new.f_charbig = '####updated per update trigger####';
75265 END|
75266 UPDATE t1
75267 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
75268 f_charbig = '####updated per update statement itself####';
75269         
75270 # check trigger-10 success:     1
75271 DROP TRIGGER trg_2;
75272 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75273 f_int2 = CAST(f_char1 AS SIGNED INT),
75274 f_charbig = CONCAT('===',f_char1,'===');
75275 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
75276 BEGIN
75277 SET new.f_int1 = @my_max1 + @counter,
75278 new.f_int2 = @my_min2 - @counter,
75279 new.f_charbig = '####updated per insert trigger####';
75280 SET @counter = @counter + 1;
75281 END|
75282 SET @counter = 1;
75283 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
75284 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
75285 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
75286 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
75287 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
75288 ORDER BY f_int1;
75289 DROP TRIGGER trg_3;
75290         
75291 # check trigger-11 success:     1
75292 DELETE FROM t1
75293 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
75294 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
75295 AND f_charbig = '####updated per insert trigger####';
75296 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
75297 BEGIN
75298 SET new.f_int1 = @my_max1 + @counter,
75299 new.f_int2 = @my_min2 - @counter,
75300 new.f_charbig = '####updated per insert trigger####';
75301 SET @counter = @counter + 1;
75302 END|
75303 SET @counter = 1;
75304 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
75305 INSERT INTO t1 (f_char1, f_char2, f_charbig)
75306 SELECT CAST(f_int1 AS CHAR),
75307 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
75308 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
75309 ORDER BY f_int1;
75310 DROP TRIGGER trg_3;
75311         
75312 # check trigger-12 success:     1
75313 DELETE FROM t1
75314 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
75315 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
75316 AND f_charbig = '####updated per insert trigger####';
75317 ANALYZE  TABLE t1;
75318 Table   Op      Msg_type        Msg_text
75319 test.t1 analyze status  OK
75320 CHECK    TABLE t1 EXTENDED;
75321 Table   Op      Msg_type        Msg_text
75322 test.t1 check   status  OK
75323 CHECKSUM TABLE t1 EXTENDED;
75324 Table   Checksum
75325 test.t1 <some_value>
75326 OPTIMIZE TABLE t1;
75327 Table   Op      Msg_type        Msg_text
75328 test.t1 optimize        status  OK
75329 # check layout success:    1
75330 REPAIR   TABLE t1 EXTENDED;
75331 Table   Op      Msg_type        Msg_text
75332 test.t1 repair  status  OK
75333 # check layout success:    1
75334 TRUNCATE t1;
75335         
75336 # check TRUNCATE success:       1
75337 # check layout success:    1
75338 # End usability test (inc/partition_check.inc)
75339 DROP TABLE t1;
75340 CREATE TABLE t1 (
75341 f_int1 INTEGER,
75342 f_int2 INTEGER,
75343 f_char1 CHAR(20),
75344 f_char2 CHAR(20),
75345 f_charbig VARCHAR(1000)
75348 PARTITION BY LIST(MOD(f_int1,4))
75349 (PARTITION part_3 VALUES IN (-3),
75350 PARTITION part_2 VALUES IN (-2),
75351 PARTITION part_1 VALUES IN (-1),
75352 PARTITION part_N VALUES IN (NULL),
75353 PARTITION part0 VALUES IN (0),
75354 PARTITION part1 VALUES IN (1),
75355 PARTITION part2 VALUES IN (2),
75356 PARTITION part3 VALUES IN (3));
75357 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
75358 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
75359 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
75360 ALTER TABLE t1 REPAIR PARTITION part_1,part_2;
75361 Table   Op      Msg_type        Msg_text
75362 test.t1 repair  status  OK
75363 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
75364 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
75365 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
75366 # Start usability test (inc/partition_check.inc)
75367 create_command
75368 SHOW CREATE TABLE t1;
75369 Table   Create Table
75370 t1      CREATE TABLE `t1` (
75371   `f_int1` int(11) DEFAULT NULL,
75372   `f_int2` int(11) DEFAULT NULL,
75373   `f_char1` char(20) DEFAULT NULL,
75374   `f_char2` char(20) DEFAULT NULL,
75375   `f_charbig` varchar(1000) DEFAULT NULL
75376 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
75377 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
75378 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
75379  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
75380  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
75381  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
75382  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
75383  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
75384  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
75385  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
75387 unified filelist
75388 t1#P#part0.MYD
75389 t1#P#part0.MYI
75390 t1#P#part1.MYD
75391 t1#P#part1.MYI
75392 t1#P#part2.MYD
75393 t1#P#part2.MYI
75394 t1#P#part3.MYD
75395 t1#P#part3.MYI
75396 t1#P#part_1.MYD
75397 t1#P#part_1.MYI
75398 t1#P#part_2.MYD
75399 t1#P#part_2.MYI
75400 t1#P#part_3.MYD
75401 t1#P#part_3.MYI
75402 t1#P#part_N.MYD
75403 t1#P#part_N.MYI
75404 t1.frm
75405 t1.par
75407 # check prerequisites-1 success:    1
75408 # check COUNT(*) success:    1
75409 # check MIN/MAX(f_int1) success:    1
75410 # check MIN/MAX(f_int2) success:    1
75411 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
75412 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
75413 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
75414 WHERE f_int1 IN (2,3);
75415 # check prerequisites-3 success:    1
75416 DELETE FROM t1 WHERE f_charbig = 'delete me';
75417 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
75418 # check read via f_int1 success: 1
75419 # check read via f_int2 success: 1
75420         
75421 # check multiple-1 success:     1
75422 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
75423         
75424 # check multiple-2 success:     1
75425 INSERT INTO t1 SELECT * FROM t0_template
75426 WHERE MOD(f_int1,3) = 0;
75427         
75428 # check multiple-3 success:     1
75429 UPDATE t1 SET f_int1 = f_int1 + @max_row
75430 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
75431 AND @max_row_div2 + @max_row_div4;
75432         
75433 # check multiple-4 success:     1
75434 DELETE FROM t1
75435 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
75436 AND @max_row_div2 + @max_row_div4 + @max_row;
75437         
75438 # check multiple-5 success:     1
75439 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
75440 INSERT INTO t1
75441 SET f_int1 = @cur_value , f_int2 = @cur_value,
75442 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
75443 f_charbig = '#SINGLE#';
75444         
75445 # check single-1 success:       1
75446 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
75447 INSERT INTO t1
75448 SET f_int1 = @cur_value , f_int2 = @cur_value,
75449 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
75450 f_charbig = '#SINGLE#';
75451         
75452 # check single-2 success:       1
75453 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
75454 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
75455 UPDATE t1 SET f_int1 = @cur_value2
75456 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
75457         
75458 # check single-3 success:       1
75459 SET @cur_value1= -1;
75460 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
75461 UPDATE t1 SET f_int1 = @cur_value1
75462 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
75463         
75464 # check single-4 success:       1
75465 SELECT MAX(f_int1) INTO @cur_value FROM t1;
75466 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
75467         
75468 # check single-5 success:       1
75469 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
75470         
75471 # check single-6 success:       1
75472 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
75473         
75474 # check single-7 success:       1
75475 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
75476 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
75477 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
75478 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
75479 f_charbig = '#NULL#';
75480 INSERT INTO t1
75481 SET f_int1 = NULL , f_int2 = -@max_row,
75482 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
75483 f_charbig = '#NULL#';
75484 # check null success:    1
75485         
75486 # check null-1 success:         1
75487 UPDATE t1 SET f_int1 = -@max_row
75488 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
75489 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
75490         
75491 # check null-2 success:         1
75492 UPDATE t1 SET f_int1 = NULL
75493 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
75494 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
75495         
75496 # check null-3 success:         1
75497 DELETE FROM t1
75498 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
75499 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
75500         
75501 # check null-4 success:         1
75502 DELETE FROM t1
75503 WHERE f_int1 = 0 AND f_int2 = 0
75504 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
75505 AND f_charbig = '#NULL#';
75506 SET AUTOCOMMIT= 0;
75507 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
75508 SELECT f_int1, f_int1, '', '', 'was inserted'
75509 FROM t0_template source_tab
75510 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
75511         
75512 # check transactions-1 success:         1
75513 COMMIT WORK;
75514         
75515 # check transactions-2 success:         1
75516 ROLLBACK WORK;
75517         
75518 # check transactions-3 success:         1
75519 DELETE FROM t1 WHERE f_charbig = 'was inserted';
75520 COMMIT WORK;
75521 ROLLBACK WORK;
75522         
75523 # check transactions-4 success:         1
75524 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
75525 SELECT f_int1, f_int1, '', '', 'was inserted'
75526 FROM t0_template source_tab
75527 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
75528         
75529 # check transactions-5 success:         1
75530 ROLLBACK WORK;
75531 Warnings:
75532 Warning 1196    Some non-transactional changed tables couldn't be rolled back
75533         
75534 # check transactions-6 success:         1
75535 # INFO: Storage engine used for t1 seems to be not transactional.
75536 COMMIT;
75537         
75538 # check transactions-7 success:         1
75539 DELETE FROM t1 WHERE f_charbig = 'was inserted';
75540 COMMIT WORK;
75541 SET @@session.sql_mode = 'traditional';
75542 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
75543 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
75544 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
75545 '', '', 'was inserted' FROM t0_template
75546 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
75547 ERROR 22012: Division by 0
75548 COMMIT;
75549         
75550 # check transactions-8 success:         1
75551 # INFO: Storage engine used for t1 seems to be unable to revert
75552 #       changes made by the failing statement.
75553 SET @@session.sql_mode = '';
75554 SET AUTOCOMMIT= 1;
75555 DELETE FROM t1 WHERE f_charbig = 'was inserted';
75556 COMMIT WORK;
75557 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
75558         
75559 # check special-1 success:      1
75560 UPDATE t1 SET f_charbig = '';
75561         
75562 # check special-2 success:      1
75563 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
75564 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
75565 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
75566 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75567 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75568 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75569 'just inserted' FROM t0_template
75570 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75571 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
75572 BEGIN
75573 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75574 f_charbig = 'updated by trigger'
75575       WHERE f_int1 = new.f_int1;
75576 END|
75577 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75578 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
75579 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75580         
75581 # check trigger-1 success:      1
75582 DROP TRIGGER trg_1;
75583 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75584 f_int2 = CAST(f_char1 AS SIGNED INT),
75585 f_charbig = 'just inserted'
75586    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75587 DELETE FROM t0_aux
75588 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75589 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75590 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75591 'just inserted' FROM t0_template
75592 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75593 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
75594 BEGIN
75595 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75596 f_charbig = 'updated by trigger'
75597       WHERE f_int1 = new.f_int1;
75598 END|
75599 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75600 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
75601 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75602         
75603 # check trigger-2 success:      1
75604 DROP TRIGGER trg_1;
75605 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75606 f_int2 = CAST(f_char1 AS SIGNED INT),
75607 f_charbig = 'just inserted'
75608    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75609 DELETE FROM t0_aux
75610 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75611 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75612 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75613 'just inserted' FROM t0_template
75614 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75615 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
75616 BEGIN
75617 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75618 f_charbig = 'updated by trigger'
75619       WHERE f_int1 = new.f_int1;
75620 END|
75621 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
75622 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
75623         
75624 # check trigger-3 success:      1
75625 DROP TRIGGER trg_1;
75626 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75627 f_int2 = CAST(f_char1 AS SIGNED INT),
75628 f_charbig = 'just inserted'
75629    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75630 DELETE FROM t0_aux
75631 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75632 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75633 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75634 'just inserted' FROM t0_template
75635 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75636 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
75637 BEGIN
75638 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75639 f_charbig = 'updated by trigger'
75640       WHERE f_int1 = - old.f_int1;
75641 END|
75642 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
75643 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
75644         
75645 # check trigger-4 success:      1
75646 DROP TRIGGER trg_1;
75647 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75648 f_int2 = CAST(f_char1 AS SIGNED INT),
75649 f_charbig = 'just inserted'
75650    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75651 DELETE FROM t0_aux
75652 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75653 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75654 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75655 'just inserted' FROM t0_template
75656 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75657 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
75658 BEGIN
75659 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75660 f_charbig = 'updated by trigger'
75661       WHERE f_int1 = new.f_int1;
75662 END|
75663 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
75664 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
75665         
75666 # check trigger-5 success:      1
75667 DROP TRIGGER trg_1;
75668 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75669 f_int2 = CAST(f_char1 AS SIGNED INT),
75670 f_charbig = 'just inserted'
75671    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75672 DELETE FROM t0_aux
75673 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75674 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75675 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75676 'just inserted' FROM t0_template
75677 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75678 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
75679 BEGIN
75680 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75681 f_charbig = 'updated by trigger'
75682       WHERE f_int1 = - old.f_int1;
75683 END|
75684 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
75685 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
75686         
75687 # check trigger-6 success:      1
75688 DROP TRIGGER trg_1;
75689 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75690 f_int2 = CAST(f_char1 AS SIGNED INT),
75691 f_charbig = 'just inserted'
75692    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75693 DELETE FROM t0_aux
75694 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75695 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75696 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75697 'just inserted' FROM t0_template
75698 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75699 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
75700 BEGIN
75701 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75702 f_charbig = 'updated by trigger'
75703       WHERE f_int1 = - old.f_int1;
75704 END|
75705 DELETE FROM t0_aux
75706 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
75707         
75708 # check trigger-7 success:      1
75709 DROP TRIGGER trg_1;
75710 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75711 f_int2 = CAST(f_char1 AS SIGNED INT),
75712 f_charbig = 'just inserted'
75713    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75714 DELETE FROM t0_aux
75715 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75716 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
75717 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
75718 'just inserted' FROM t0_template
75719 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75720 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
75721 BEGIN
75722 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
75723 f_charbig = 'updated by trigger'
75724       WHERE f_int1 = - old.f_int1;
75725 END|
75726 DELETE FROM t0_aux
75727 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
75728         
75729 # check trigger-8 success:      1
75730 DROP TRIGGER trg_1;
75731 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75732 f_int2 = CAST(f_char1 AS SIGNED INT),
75733 f_charbig = 'just inserted'
75734    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
75735 DELETE FROM t0_aux
75736 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75737 DELETE FROM t1
75738 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
75739 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
75740 BEGIN
75741 SET new.f_int1 = old.f_int1 + @max_row,
75742 new.f_int2 = old.f_int2 - @max_row,
75743 new.f_charbig = '####updated per update trigger####';
75744 END|
75745 UPDATE t1
75746 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
75747 f_charbig = '####updated per update statement itself####';
75748         
75749 # check trigger-9 success:      1
75750 DROP TRIGGER trg_2;
75751 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75752 f_int2 = CAST(f_char1 AS SIGNED INT),
75753 f_charbig = CONCAT('===',f_char1,'===');
75754 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
75755 BEGIN
75756 SET new.f_int1 = new.f_int1 + @max_row,
75757 new.f_int2 = new.f_int2 - @max_row,
75758 new.f_charbig = '####updated per update trigger####';
75759 END|
75760 UPDATE t1
75761 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
75762 f_charbig = '####updated per update statement itself####';
75763         
75764 # check trigger-10 success:     1
75765 DROP TRIGGER trg_2;
75766 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
75767 f_int2 = CAST(f_char1 AS SIGNED INT),
75768 f_charbig = CONCAT('===',f_char1,'===');
75769 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
75770 BEGIN
75771 SET new.f_int1 = @my_max1 + @counter,
75772 new.f_int2 = @my_min2 - @counter,
75773 new.f_charbig = '####updated per insert trigger####';
75774 SET @counter = @counter + 1;
75775 END|
75776 SET @counter = 1;
75777 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
75778 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
75779 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
75780 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
75781 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
75782 ORDER BY f_int1;
75783 DROP TRIGGER trg_3;
75784         
75785 # check trigger-11 success:     1
75786 DELETE FROM t1
75787 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
75788 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
75789 AND f_charbig = '####updated per insert trigger####';
75790 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
75791 BEGIN
75792 SET new.f_int1 = @my_max1 + @counter,
75793 new.f_int2 = @my_min2 - @counter,
75794 new.f_charbig = '####updated per insert trigger####';
75795 SET @counter = @counter + 1;
75796 END|
75797 SET @counter = 1;
75798 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
75799 INSERT INTO t1 (f_char1, f_char2, f_charbig)
75800 SELECT CAST(f_int1 AS CHAR),
75801 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
75802 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
75803 ORDER BY f_int1;
75804 DROP TRIGGER trg_3;
75805         
75806 # check trigger-12 success:     1
75807 DELETE FROM t1
75808 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
75809 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
75810 AND f_charbig = '####updated per insert trigger####';
75811 ANALYZE  TABLE t1;
75812 Table   Op      Msg_type        Msg_text
75813 test.t1 analyze status  OK
75814 CHECK    TABLE t1 EXTENDED;
75815 Table   Op      Msg_type        Msg_text
75816 test.t1 check   status  OK
75817 CHECKSUM TABLE t1 EXTENDED;
75818 Table   Checksum
75819 test.t1 <some_value>
75820 OPTIMIZE TABLE t1;
75821 Table   Op      Msg_type        Msg_text
75822 test.t1 optimize        status  OK
75823 # check layout success:    1
75824 REPAIR   TABLE t1 EXTENDED;
75825 Table   Op      Msg_type        Msg_text
75826 test.t1 repair  status  OK
75827 # check layout success:    1
75828 TRUNCATE t1;
75829         
75830 # check TRUNCATE success:       1
75831 # check layout success:    1
75832 # End usability test (inc/partition_check.inc)
75833 DROP TABLE t1;
75834 CREATE TABLE t1 (
75835 f_int1 INTEGER,
75836 f_int2 INTEGER,
75837 f_char1 CHAR(20),
75838 f_char2 CHAR(20),
75839 f_charbig VARCHAR(1000)
75842 PARTITION BY RANGE(f_int1)
75843 (PARTITION parta VALUES LESS THAN (0),
75844 PARTITION part_1 VALUES LESS THAN (5),
75845 PARTITION part_2 VALUES LESS THAN (10),
75846 PARTITION part_3 VALUES LESS THAN (10 + 5),
75847 PARTITION part_4 VALUES LESS THAN (20),
75848 PARTITION part_5 VALUES LESS THAN (2147483646));
75849 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
75850 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
75851 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
75852 ALTER TABLE t1 REPAIR PARTITION part_1,part_2;
75853 Table   Op      Msg_type        Msg_text
75854 test.t1 repair  status  OK
75855 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
75856 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
75857 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
75858 # Start usability test (inc/partition_check.inc)
75859 create_command
75860 SHOW CREATE TABLE t1;
75861 Table   Create Table
75862 t1      CREATE TABLE `t1` (
75863   `f_int1` int(11) DEFAULT NULL,
75864   `f_int2` int(11) DEFAULT NULL,
75865   `f_char1` char(20) DEFAULT NULL,
75866   `f_char2` char(20) DEFAULT NULL,
75867   `f_charbig` varchar(1000) DEFAULT NULL
75868 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
75869 /*!50100 PARTITION BY RANGE (f_int1)
75870 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
75871  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
75872  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
75873  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
75874  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
75875  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
75877 unified filelist
75878 t1#P#part_1.MYD
75879 t1#P#part_1.MYI
75880 t1#P#part_2.MYD
75881 t1#P#part_2.MYI
75882 t1#P#part_3.MYD
75883 t1#P#part_3.MYI
75884 t1#P#part_4.MYD
75885 t1#P#part_4.MYI
75886 t1#P#part_5.MYD
75887 t1#P#part_5.MYI
75888 t1#P#parta.MYD
75889 t1#P#parta.MYI
75890 t1.frm
75891 t1.par
75893 # check prerequisites-1 success:    1
75894 # check COUNT(*) success:    1
75895 # check MIN/MAX(f_int1) success:    1
75896 # check MIN/MAX(f_int2) success:    1
75897 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
75898 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
75899 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
75900 WHERE f_int1 IN (2,3);
75901 # check prerequisites-3 success:    1
75902 DELETE FROM t1 WHERE f_charbig = 'delete me';
75903 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
75904 # check read via f_int1 success: 1
75905 # check read via f_int2 success: 1
75906         
75907 # check multiple-1 success:     1
75908 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
75909         
75910 # check multiple-2 success:     1
75911 INSERT INTO t1 SELECT * FROM t0_template
75912 WHERE MOD(f_int1,3) = 0;
75913         
75914 # check multiple-3 success:     1
75915 UPDATE t1 SET f_int1 = f_int1 + @max_row
75916 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
75917 AND @max_row_div2 + @max_row_div4;
75918         
75919 # check multiple-4 success:     1
75920 DELETE FROM t1
75921 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
75922 AND @max_row_div2 + @max_row_div4 + @max_row;
75923         
75924 # check multiple-5 success:     1
75925 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
75926 INSERT INTO t1
75927 SET f_int1 = @cur_value , f_int2 = @cur_value,
75928 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
75929 f_charbig = '#SINGLE#';
75930         
75931 # check single-1 success:       1
75932 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
75933 INSERT INTO t1
75934 SET f_int1 = @cur_value , f_int2 = @cur_value,
75935 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
75936 f_charbig = '#SINGLE#';
75937         
75938 # check single-2 success:       1
75939 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
75940 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
75941 UPDATE t1 SET f_int1 = @cur_value2
75942 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
75943         
75944 # check single-3 success:       1
75945 SET @cur_value1= -1;
75946 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
75947 UPDATE t1 SET f_int1 = @cur_value1
75948 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
75949         
75950 # check single-4 success:       1
75951 SELECT MAX(f_int1) INTO @cur_value FROM t1;
75952 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
75953         
75954 # check single-5 success:       1
75955 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
75956         
75957 # check single-6 success:       1
75958 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
75959 ERROR HY000: Table has no partition for value 2147483647
75960 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
75961 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
75962 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
75963 f_charbig = '#NULL#';
75964 INSERT INTO t1
75965 SET f_int1 = NULL , f_int2 = -@max_row,
75966 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
75967 f_charbig = '#NULL#';
75968 # check null success:    1
75969         
75970 # check null-1 success:         1
75971 UPDATE t1 SET f_int1 = -@max_row
75972 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
75973 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
75974         
75975 # check null-2 success:         1
75976 UPDATE t1 SET f_int1 = NULL
75977 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
75978 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
75979         
75980 # check null-3 success:         1
75981 DELETE FROM t1
75982 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
75983 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
75984         
75985 # check null-4 success:         1
75986 DELETE FROM t1
75987 WHERE f_int1 = 0 AND f_int2 = 0
75988 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
75989 AND f_charbig = '#NULL#';
75990 SET AUTOCOMMIT= 0;
75991 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
75992 SELECT f_int1, f_int1, '', '', 'was inserted'
75993 FROM t0_template source_tab
75994 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
75995         
75996 # check transactions-1 success:         1
75997 COMMIT WORK;
75998         
75999 # check transactions-2 success:         1
76000 ROLLBACK WORK;
76001         
76002 # check transactions-3 success:         1
76003 DELETE FROM t1 WHERE f_charbig = 'was inserted';
76004 COMMIT WORK;
76005 ROLLBACK WORK;
76006         
76007 # check transactions-4 success:         1
76008 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
76009 SELECT f_int1, f_int1, '', '', 'was inserted'
76010 FROM t0_template source_tab
76011 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
76012         
76013 # check transactions-5 success:         1
76014 ROLLBACK WORK;
76015 Warnings:
76016 Warning 1196    Some non-transactional changed tables couldn't be rolled back
76017         
76018 # check transactions-6 success:         1
76019 # INFO: Storage engine used for t1 seems to be not transactional.
76020 COMMIT;
76021         
76022 # check transactions-7 success:         1
76023 DELETE FROM t1 WHERE f_charbig = 'was inserted';
76024 COMMIT WORK;
76025 SET @@session.sql_mode = 'traditional';
76026 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
76027 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
76028 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
76029 '', '', 'was inserted' FROM t0_template
76030 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
76031 ERROR 22012: Division by 0
76032 COMMIT;
76033         
76034 # check transactions-8 success:         1
76035 # INFO: Storage engine used for t1 seems to be unable to revert
76036 #       changes made by the failing statement.
76037 SET @@session.sql_mode = '';
76038 SET AUTOCOMMIT= 1;
76039 DELETE FROM t1 WHERE f_charbig = 'was inserted';
76040 COMMIT WORK;
76041 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
76042         
76043 # check special-1 success:      1
76044 UPDATE t1 SET f_charbig = '';
76045         
76046 # check special-2 success:      1
76047 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
76048 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
76049 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
76050 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76051 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76052 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76053 'just inserted' FROM t0_template
76054 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76055 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
76056 BEGIN
76057 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76058 f_charbig = 'updated by trigger'
76059       WHERE f_int1 = new.f_int1;
76060 END|
76061 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76062 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
76063 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76064         
76065 # check trigger-1 success:      1
76066 DROP TRIGGER trg_1;
76067 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76068 f_int2 = CAST(f_char1 AS SIGNED INT),
76069 f_charbig = 'just inserted'
76070    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76071 DELETE FROM t0_aux
76072 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76073 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76074 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76075 'just inserted' FROM t0_template
76076 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76077 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
76078 BEGIN
76079 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76080 f_charbig = 'updated by trigger'
76081       WHERE f_int1 = new.f_int1;
76082 END|
76083 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76084 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
76085 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76086         
76087 # check trigger-2 success:      1
76088 DROP TRIGGER trg_1;
76089 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76090 f_int2 = CAST(f_char1 AS SIGNED INT),
76091 f_charbig = 'just inserted'
76092    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76093 DELETE FROM t0_aux
76094 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76095 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76096 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76097 'just inserted' FROM t0_template
76098 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76099 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
76100 BEGIN
76101 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76102 f_charbig = 'updated by trigger'
76103       WHERE f_int1 = new.f_int1;
76104 END|
76105 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
76106 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
76107         
76108 # check trigger-3 success:      1
76109 DROP TRIGGER trg_1;
76110 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76111 f_int2 = CAST(f_char1 AS SIGNED INT),
76112 f_charbig = 'just inserted'
76113    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76114 DELETE FROM t0_aux
76115 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76116 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76117 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76118 'just inserted' FROM t0_template
76119 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76120 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
76121 BEGIN
76122 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76123 f_charbig = 'updated by trigger'
76124       WHERE f_int1 = - old.f_int1;
76125 END|
76126 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
76127 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
76128         
76129 # check trigger-4 success:      1
76130 DROP TRIGGER trg_1;
76131 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76132 f_int2 = CAST(f_char1 AS SIGNED INT),
76133 f_charbig = 'just inserted'
76134    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76135 DELETE FROM t0_aux
76136 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76137 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76138 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76139 'just inserted' FROM t0_template
76140 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76141 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
76142 BEGIN
76143 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76144 f_charbig = 'updated by trigger'
76145       WHERE f_int1 = new.f_int1;
76146 END|
76147 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
76148 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
76149         
76150 # check trigger-5 success:      1
76151 DROP TRIGGER trg_1;
76152 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76153 f_int2 = CAST(f_char1 AS SIGNED INT),
76154 f_charbig = 'just inserted'
76155    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76156 DELETE FROM t0_aux
76157 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76158 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76159 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76160 'just inserted' FROM t0_template
76161 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76162 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
76163 BEGIN
76164 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76165 f_charbig = 'updated by trigger'
76166       WHERE f_int1 = - old.f_int1;
76167 END|
76168 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
76169 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
76170         
76171 # check trigger-6 success:      1
76172 DROP TRIGGER trg_1;
76173 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76174 f_int2 = CAST(f_char1 AS SIGNED INT),
76175 f_charbig = 'just inserted'
76176    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76177 DELETE FROM t0_aux
76178 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76179 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76180 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76181 'just inserted' FROM t0_template
76182 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76183 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
76184 BEGIN
76185 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76186 f_charbig = 'updated by trigger'
76187       WHERE f_int1 = - old.f_int1;
76188 END|
76189 DELETE FROM t0_aux
76190 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
76191         
76192 # check trigger-7 success:      1
76193 DROP TRIGGER trg_1;
76194 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76195 f_int2 = CAST(f_char1 AS SIGNED INT),
76196 f_charbig = 'just inserted'
76197    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76198 DELETE FROM t0_aux
76199 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76200 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76201 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76202 'just inserted' FROM t0_template
76203 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76204 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
76205 BEGIN
76206 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76207 f_charbig = 'updated by trigger'
76208       WHERE f_int1 = - old.f_int1;
76209 END|
76210 DELETE FROM t0_aux
76211 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
76212         
76213 # check trigger-8 success:      1
76214 DROP TRIGGER trg_1;
76215 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76216 f_int2 = CAST(f_char1 AS SIGNED INT),
76217 f_charbig = 'just inserted'
76218    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76219 DELETE FROM t0_aux
76220 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76221 DELETE FROM t1
76222 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76223 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
76224 BEGIN
76225 SET new.f_int1 = old.f_int1 + @max_row,
76226 new.f_int2 = old.f_int2 - @max_row,
76227 new.f_charbig = '####updated per update trigger####';
76228 END|
76229 UPDATE t1
76230 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
76231 f_charbig = '####updated per update statement itself####';
76232         
76233 # check trigger-9 success:      1
76234 DROP TRIGGER trg_2;
76235 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76236 f_int2 = CAST(f_char1 AS SIGNED INT),
76237 f_charbig = CONCAT('===',f_char1,'===');
76238 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
76239 BEGIN
76240 SET new.f_int1 = new.f_int1 + @max_row,
76241 new.f_int2 = new.f_int2 - @max_row,
76242 new.f_charbig = '####updated per update trigger####';
76243 END|
76244 UPDATE t1
76245 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
76246 f_charbig = '####updated per update statement itself####';
76247         
76248 # check trigger-10 success:     1
76249 DROP TRIGGER trg_2;
76250 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76251 f_int2 = CAST(f_char1 AS SIGNED INT),
76252 f_charbig = CONCAT('===',f_char1,'===');
76253 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
76254 BEGIN
76255 SET new.f_int1 = @my_max1 + @counter,
76256 new.f_int2 = @my_min2 - @counter,
76257 new.f_charbig = '####updated per insert trigger####';
76258 SET @counter = @counter + 1;
76259 END|
76260 SET @counter = 1;
76261 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
76262 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
76263 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
76264 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
76265 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
76266 ORDER BY f_int1;
76267 DROP TRIGGER trg_3;
76268         
76269 # check trigger-11 success:     1
76270 DELETE FROM t1
76271 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
76272 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
76273 AND f_charbig = '####updated per insert trigger####';
76274 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
76275 BEGIN
76276 SET new.f_int1 = @my_max1 + @counter,
76277 new.f_int2 = @my_min2 - @counter,
76278 new.f_charbig = '####updated per insert trigger####';
76279 SET @counter = @counter + 1;
76280 END|
76281 SET @counter = 1;
76282 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
76283 INSERT INTO t1 (f_char1, f_char2, f_charbig)
76284 SELECT CAST(f_int1 AS CHAR),
76285 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
76286 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
76287 ORDER BY f_int1;
76288 DROP TRIGGER trg_3;
76289         
76290 # check trigger-12 success:     1
76291 DELETE FROM t1
76292 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
76293 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
76294 AND f_charbig = '####updated per insert trigger####';
76295 ANALYZE  TABLE t1;
76296 Table   Op      Msg_type        Msg_text
76297 test.t1 analyze status  OK
76298 CHECK    TABLE t1 EXTENDED;
76299 Table   Op      Msg_type        Msg_text
76300 test.t1 check   status  OK
76301 CHECKSUM TABLE t1 EXTENDED;
76302 Table   Checksum
76303 test.t1 <some_value>
76304 OPTIMIZE TABLE t1;
76305 Table   Op      Msg_type        Msg_text
76306 test.t1 optimize        status  OK
76307 # check layout success:    1
76308 REPAIR   TABLE t1 EXTENDED;
76309 Table   Op      Msg_type        Msg_text
76310 test.t1 repair  status  OK
76311 # check layout success:    1
76312 TRUNCATE t1;
76313         
76314 # check TRUNCATE success:       1
76315 # check layout success:    1
76316 # End usability test (inc/partition_check.inc)
76317 DROP TABLE t1;
76318 CREATE TABLE t1 (
76319 f_int1 INTEGER,
76320 f_int2 INTEGER,
76321 f_char1 CHAR(20),
76322 f_char2 CHAR(20),
76323 f_charbig VARCHAR(1000)
76326 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
76327 (PARTITION part_1 VALUES LESS THAN (0),
76328 PARTITION part_2 VALUES LESS THAN (5),
76329 PARTITION part_3 VALUES LESS THAN (10),
76330 PARTITION part_4 VALUES LESS THAN (2147483646));
76331 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
76332 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
76333 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
76334 ALTER TABLE t1 REPAIR PARTITION part_1,part_2;
76335 Table   Op      Msg_type        Msg_text
76336 test.t1 repair  status  OK
76337 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
76338 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
76339 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
76340 # Start usability test (inc/partition_check.inc)
76341 create_command
76342 SHOW CREATE TABLE t1;
76343 Table   Create Table
76344 t1      CREATE TABLE `t1` (
76345   `f_int1` int(11) DEFAULT NULL,
76346   `f_int2` int(11) DEFAULT NULL,
76347   `f_char1` char(20) DEFAULT NULL,
76348   `f_char2` char(20) DEFAULT NULL,
76349   `f_charbig` varchar(1000) DEFAULT NULL
76350 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
76351 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
76352 SUBPARTITION BY HASH (f_int1)
76353 SUBPARTITIONS 2
76354 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
76355  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
76356  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
76357  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
76359 unified filelist
76360 t1#P#part_1#SP#part_1sp0.MYD
76361 t1#P#part_1#SP#part_1sp0.MYI
76362 t1#P#part_1#SP#part_1sp1.MYD
76363 t1#P#part_1#SP#part_1sp1.MYI
76364 t1#P#part_2#SP#part_2sp0.MYD
76365 t1#P#part_2#SP#part_2sp0.MYI
76366 t1#P#part_2#SP#part_2sp1.MYD
76367 t1#P#part_2#SP#part_2sp1.MYI
76368 t1#P#part_3#SP#part_3sp0.MYD
76369 t1#P#part_3#SP#part_3sp0.MYI
76370 t1#P#part_3#SP#part_3sp1.MYD
76371 t1#P#part_3#SP#part_3sp1.MYI
76372 t1#P#part_4#SP#part_4sp0.MYD
76373 t1#P#part_4#SP#part_4sp0.MYI
76374 t1#P#part_4#SP#part_4sp1.MYD
76375 t1#P#part_4#SP#part_4sp1.MYI
76376 t1.frm
76377 t1.par
76379 # check prerequisites-1 success:    1
76380 # check COUNT(*) success:    1
76381 # check MIN/MAX(f_int1) success:    1
76382 # check MIN/MAX(f_int2) success:    1
76383 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
76384 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
76385 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
76386 WHERE f_int1 IN (2,3);
76387 # check prerequisites-3 success:    1
76388 DELETE FROM t1 WHERE f_charbig = 'delete me';
76389 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
76390 # check read via f_int1 success: 1
76391 # check read via f_int2 success: 1
76392         
76393 # check multiple-1 success:     1
76394 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
76395         
76396 # check multiple-2 success:     1
76397 INSERT INTO t1 SELECT * FROM t0_template
76398 WHERE MOD(f_int1,3) = 0;
76399         
76400 # check multiple-3 success:     1
76401 UPDATE t1 SET f_int1 = f_int1 + @max_row
76402 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
76403 AND @max_row_div2 + @max_row_div4;
76404         
76405 # check multiple-4 success:     1
76406 DELETE FROM t1
76407 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
76408 AND @max_row_div2 + @max_row_div4 + @max_row;
76409         
76410 # check multiple-5 success:     1
76411 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
76412 INSERT INTO t1
76413 SET f_int1 = @cur_value , f_int2 = @cur_value,
76414 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
76415 f_charbig = '#SINGLE#';
76416         
76417 # check single-1 success:       1
76418 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
76419 INSERT INTO t1
76420 SET f_int1 = @cur_value , f_int2 = @cur_value,
76421 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
76422 f_charbig = '#SINGLE#';
76423         
76424 # check single-2 success:       1
76425 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
76426 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
76427 UPDATE t1 SET f_int1 = @cur_value2
76428 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
76429         
76430 # check single-3 success:       1
76431 SET @cur_value1= -1;
76432 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
76433 UPDATE t1 SET f_int1 = @cur_value1
76434 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
76435         
76436 # check single-4 success:       1
76437 SELECT MAX(f_int1) INTO @cur_value FROM t1;
76438 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
76439         
76440 # check single-5 success:       1
76441 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
76442         
76443 # check single-6 success:       1
76444 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
76445         
76446 # check single-7 success:       1
76447 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
76448 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
76449 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
76450 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
76451 f_charbig = '#NULL#';
76452 INSERT INTO t1
76453 SET f_int1 = NULL , f_int2 = -@max_row,
76454 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
76455 f_charbig = '#NULL#';
76456 # check null success:    1
76457         
76458 # check null-1 success:         1
76459 UPDATE t1 SET f_int1 = -@max_row
76460 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
76461 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
76462         
76463 # check null-2 success:         1
76464 UPDATE t1 SET f_int1 = NULL
76465 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
76466 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
76467         
76468 # check null-3 success:         1
76469 DELETE FROM t1
76470 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
76471 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
76472         
76473 # check null-4 success:         1
76474 DELETE FROM t1
76475 WHERE f_int1 = 0 AND f_int2 = 0
76476 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
76477 AND f_charbig = '#NULL#';
76478 SET AUTOCOMMIT= 0;
76479 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
76480 SELECT f_int1, f_int1, '', '', 'was inserted'
76481 FROM t0_template source_tab
76482 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
76483         
76484 # check transactions-1 success:         1
76485 COMMIT WORK;
76486         
76487 # check transactions-2 success:         1
76488 ROLLBACK WORK;
76489         
76490 # check transactions-3 success:         1
76491 DELETE FROM t1 WHERE f_charbig = 'was inserted';
76492 COMMIT WORK;
76493 ROLLBACK WORK;
76494         
76495 # check transactions-4 success:         1
76496 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
76497 SELECT f_int1, f_int1, '', '', 'was inserted'
76498 FROM t0_template source_tab
76499 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
76500         
76501 # check transactions-5 success:         1
76502 ROLLBACK WORK;
76503 Warnings:
76504 Warning 1196    Some non-transactional changed tables couldn't be rolled back
76505         
76506 # check transactions-6 success:         1
76507 # INFO: Storage engine used for t1 seems to be not transactional.
76508 COMMIT;
76509         
76510 # check transactions-7 success:         1
76511 DELETE FROM t1 WHERE f_charbig = 'was inserted';
76512 COMMIT WORK;
76513 SET @@session.sql_mode = 'traditional';
76514 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
76515 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
76516 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
76517 '', '', 'was inserted' FROM t0_template
76518 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
76519 ERROR 22012: Division by 0
76520 COMMIT;
76521         
76522 # check transactions-8 success:         1
76523 # INFO: Storage engine used for t1 seems to be unable to revert
76524 #       changes made by the failing statement.
76525 SET @@session.sql_mode = '';
76526 SET AUTOCOMMIT= 1;
76527 DELETE FROM t1 WHERE f_charbig = 'was inserted';
76528 COMMIT WORK;
76529 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
76530         
76531 # check special-1 success:      1
76532 UPDATE t1 SET f_charbig = '';
76533         
76534 # check special-2 success:      1
76535 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
76536 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
76537 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
76538 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76539 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76540 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76541 'just inserted' FROM t0_template
76542 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76543 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
76544 BEGIN
76545 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76546 f_charbig = 'updated by trigger'
76547       WHERE f_int1 = new.f_int1;
76548 END|
76549 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76550 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
76551 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76552         
76553 # check trigger-1 success:      1
76554 DROP TRIGGER trg_1;
76555 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76556 f_int2 = CAST(f_char1 AS SIGNED INT),
76557 f_charbig = 'just inserted'
76558    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76559 DELETE FROM t0_aux
76560 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76561 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76562 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76563 'just inserted' FROM t0_template
76564 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76565 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
76566 BEGIN
76567 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76568 f_charbig = 'updated by trigger'
76569       WHERE f_int1 = new.f_int1;
76570 END|
76571 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76572 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
76573 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76574         
76575 # check trigger-2 success:      1
76576 DROP TRIGGER trg_1;
76577 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76578 f_int2 = CAST(f_char1 AS SIGNED INT),
76579 f_charbig = 'just inserted'
76580    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76581 DELETE FROM t0_aux
76582 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76583 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76584 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76585 'just inserted' FROM t0_template
76586 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76587 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
76588 BEGIN
76589 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76590 f_charbig = 'updated by trigger'
76591       WHERE f_int1 = new.f_int1;
76592 END|
76593 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
76594 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
76595         
76596 # check trigger-3 success:      1
76597 DROP TRIGGER trg_1;
76598 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76599 f_int2 = CAST(f_char1 AS SIGNED INT),
76600 f_charbig = 'just inserted'
76601    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76602 DELETE FROM t0_aux
76603 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76604 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76605 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76606 'just inserted' FROM t0_template
76607 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76608 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
76609 BEGIN
76610 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76611 f_charbig = 'updated by trigger'
76612       WHERE f_int1 = - old.f_int1;
76613 END|
76614 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
76615 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
76616         
76617 # check trigger-4 success:      1
76618 DROP TRIGGER trg_1;
76619 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76620 f_int2 = CAST(f_char1 AS SIGNED INT),
76621 f_charbig = 'just inserted'
76622    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76623 DELETE FROM t0_aux
76624 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76625 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76626 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76627 'just inserted' FROM t0_template
76628 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76629 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
76630 BEGIN
76631 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76632 f_charbig = 'updated by trigger'
76633       WHERE f_int1 = new.f_int1;
76634 END|
76635 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
76636 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
76637         
76638 # check trigger-5 success:      1
76639 DROP TRIGGER trg_1;
76640 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76641 f_int2 = CAST(f_char1 AS SIGNED INT),
76642 f_charbig = 'just inserted'
76643    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76644 DELETE FROM t0_aux
76645 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76646 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76647 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76648 'just inserted' FROM t0_template
76649 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76650 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
76651 BEGIN
76652 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76653 f_charbig = 'updated by trigger'
76654       WHERE f_int1 = - old.f_int1;
76655 END|
76656 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
76657 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
76658         
76659 # check trigger-6 success:      1
76660 DROP TRIGGER trg_1;
76661 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76662 f_int2 = CAST(f_char1 AS SIGNED INT),
76663 f_charbig = 'just inserted'
76664    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76665 DELETE FROM t0_aux
76666 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76667 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76668 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76669 'just inserted' FROM t0_template
76670 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76671 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
76672 BEGIN
76673 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76674 f_charbig = 'updated by trigger'
76675       WHERE f_int1 = - old.f_int1;
76676 END|
76677 DELETE FROM t0_aux
76678 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
76679         
76680 # check trigger-7 success:      1
76681 DROP TRIGGER trg_1;
76682 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76683 f_int2 = CAST(f_char1 AS SIGNED INT),
76684 f_charbig = 'just inserted'
76685    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76686 DELETE FROM t0_aux
76687 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76688 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
76689 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
76690 'just inserted' FROM t0_template
76691 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76692 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
76693 BEGIN
76694 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
76695 f_charbig = 'updated by trigger'
76696       WHERE f_int1 = - old.f_int1;
76697 END|
76698 DELETE FROM t0_aux
76699 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
76700         
76701 # check trigger-8 success:      1
76702 DROP TRIGGER trg_1;
76703 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76704 f_int2 = CAST(f_char1 AS SIGNED INT),
76705 f_charbig = 'just inserted'
76706    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
76707 DELETE FROM t0_aux
76708 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76709 DELETE FROM t1
76710 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
76711 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
76712 BEGIN
76713 SET new.f_int1 = old.f_int1 + @max_row,
76714 new.f_int2 = old.f_int2 - @max_row,
76715 new.f_charbig = '####updated per update trigger####';
76716 END|
76717 UPDATE t1
76718 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
76719 f_charbig = '####updated per update statement itself####';
76720         
76721 # check trigger-9 success:      1
76722 DROP TRIGGER trg_2;
76723 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76724 f_int2 = CAST(f_char1 AS SIGNED INT),
76725 f_charbig = CONCAT('===',f_char1,'===');
76726 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
76727 BEGIN
76728 SET new.f_int1 = new.f_int1 + @max_row,
76729 new.f_int2 = new.f_int2 - @max_row,
76730 new.f_charbig = '####updated per update trigger####';
76731 END|
76732 UPDATE t1
76733 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
76734 f_charbig = '####updated per update statement itself####';
76735         
76736 # check trigger-10 success:     1
76737 DROP TRIGGER trg_2;
76738 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
76739 f_int2 = CAST(f_char1 AS SIGNED INT),
76740 f_charbig = CONCAT('===',f_char1,'===');
76741 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
76742 BEGIN
76743 SET new.f_int1 = @my_max1 + @counter,
76744 new.f_int2 = @my_min2 - @counter,
76745 new.f_charbig = '####updated per insert trigger####';
76746 SET @counter = @counter + 1;
76747 END|
76748 SET @counter = 1;
76749 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
76750 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
76751 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
76752 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
76753 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
76754 ORDER BY f_int1;
76755 DROP TRIGGER trg_3;
76756         
76757 # check trigger-11 success:     1
76758 DELETE FROM t1
76759 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
76760 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
76761 AND f_charbig = '####updated per insert trigger####';
76762 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
76763 BEGIN
76764 SET new.f_int1 = @my_max1 + @counter,
76765 new.f_int2 = @my_min2 - @counter,
76766 new.f_charbig = '####updated per insert trigger####';
76767 SET @counter = @counter + 1;
76768 END|
76769 SET @counter = 1;
76770 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
76771 INSERT INTO t1 (f_char1, f_char2, f_charbig)
76772 SELECT CAST(f_int1 AS CHAR),
76773 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
76774 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
76775 ORDER BY f_int1;
76776 DROP TRIGGER trg_3;
76777         
76778 # check trigger-12 success:     1
76779 DELETE FROM t1
76780 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
76781 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
76782 AND f_charbig = '####updated per insert trigger####';
76783 ANALYZE  TABLE t1;
76784 Table   Op      Msg_type        Msg_text
76785 test.t1 analyze status  OK
76786 CHECK    TABLE t1 EXTENDED;
76787 Table   Op      Msg_type        Msg_text
76788 test.t1 check   status  OK
76789 CHECKSUM TABLE t1 EXTENDED;
76790 Table   Checksum
76791 test.t1 <some_value>
76792 OPTIMIZE TABLE t1;
76793 Table   Op      Msg_type        Msg_text
76794 test.t1 optimize        status  OK
76795 # check layout success:    1
76796 REPAIR   TABLE t1 EXTENDED;
76797 Table   Op      Msg_type        Msg_text
76798 test.t1 repair  status  OK
76799 # check layout success:    1
76800 TRUNCATE t1;
76801         
76802 # check TRUNCATE success:       1
76803 # check layout success:    1
76804 # End usability test (inc/partition_check.inc)
76805 DROP TABLE t1;
76806 CREATE TABLE t1 (
76807 f_int1 INTEGER,
76808 f_int2 INTEGER,
76809 f_char1 CHAR(20),
76810 f_char2 CHAR(20),
76811 f_charbig VARCHAR(1000)
76814 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
76815 (PARTITION part_1 VALUES LESS THAN (0)
76816 (SUBPARTITION subpart11, SUBPARTITION subpart12),
76817 PARTITION part_2 VALUES LESS THAN (5)
76818 (SUBPARTITION subpart21, SUBPARTITION subpart22),
76819 PARTITION part_3 VALUES LESS THAN (10)
76820 (SUBPARTITION subpart31, SUBPARTITION subpart32),
76821 PARTITION part_4 VALUES LESS THAN (2147483646)
76822 (SUBPARTITION subpart41, SUBPARTITION subpart42));
76823 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
76824 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
76825 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
76826 ALTER TABLE t1 REPAIR PARTITION part_1,part_2;
76827 Table   Op      Msg_type        Msg_text
76828 test.t1 repair  status  OK
76829 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
76830 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
76831 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
76832 # Start usability test (inc/partition_check.inc)
76833 create_command
76834 SHOW CREATE TABLE t1;
76835 Table   Create Table
76836 t1      CREATE TABLE `t1` (
76837   `f_int1` int(11) DEFAULT NULL,
76838   `f_int2` int(11) DEFAULT NULL,
76839   `f_char1` char(20) DEFAULT NULL,
76840   `f_char2` char(20) DEFAULT NULL,
76841   `f_charbig` varchar(1000) DEFAULT NULL
76842 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
76843 /*!50100 PARTITION BY RANGE (f_int1)
76844 SUBPARTITION BY KEY (f_int1)
76845 (PARTITION part_1 VALUES LESS THAN (0)
76846  (SUBPARTITION subpart11 ENGINE = MyISAM,
76847   SUBPARTITION subpart12 ENGINE = MyISAM),
76848  PARTITION part_2 VALUES LESS THAN (5)
76849  (SUBPARTITION subpart21 ENGINE = MyISAM,
76850   SUBPARTITION subpart22 ENGINE = MyISAM),
76851  PARTITION part_3 VALUES LESS THAN (10)
76852  (SUBPARTITION subpart31 ENGINE = MyISAM,
76853   SUBPARTITION subpart32 ENGINE = MyISAM),
76854  PARTITION part_4 VALUES LESS THAN (2147483646)
76855  (SUBPARTITION subpart41 ENGINE = MyISAM,
76856   SUBPARTITION subpart42 ENGINE = MyISAM)) */
76858 unified filelist
76859 t1#P#part_1#SP#subpart11.MYD
76860 t1#P#part_1#SP#subpart11.MYI
76861 t1#P#part_1#SP#subpart12.MYD
76862 t1#P#part_1#SP#subpart12.MYI
76863 t1#P#part_2#SP#subpart21.MYD
76864 t1#P#part_2#SP#subpart21.MYI
76865 t1#P#part_2#SP#subpart22.MYD
76866 t1#P#part_2#SP#subpart22.MYI
76867 t1#P#part_3#SP#subpart31.MYD
76868 t1#P#part_3#SP#subpart31.MYI
76869 t1#P#part_3#SP#subpart32.MYD
76870 t1#P#part_3#SP#subpart32.MYI
76871 t1#P#part_4#SP#subpart41.MYD
76872 t1#P#part_4#SP#subpart41.MYI
76873 t1#P#part_4#SP#subpart42.MYD
76874 t1#P#part_4#SP#subpart42.MYI
76875 t1.frm
76876 t1.par
76878 # check prerequisites-1 success:    1
76879 # check COUNT(*) success:    1
76880 # check MIN/MAX(f_int1) success:    1
76881 # check MIN/MAX(f_int2) success:    1
76882 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
76883 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
76884 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
76885 WHERE f_int1 IN (2,3);
76886 # check prerequisites-3 success:    1
76887 DELETE FROM t1 WHERE f_charbig = 'delete me';
76888 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
76889 # check read via f_int1 success: 1
76890 # check read via f_int2 success: 1
76891         
76892 # check multiple-1 success:     1
76893 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
76894         
76895 # check multiple-2 success:     1
76896 INSERT INTO t1 SELECT * FROM t0_template
76897 WHERE MOD(f_int1,3) = 0;
76898         
76899 # check multiple-3 success:     1
76900 UPDATE t1 SET f_int1 = f_int1 + @max_row
76901 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
76902 AND @max_row_div2 + @max_row_div4;
76903         
76904 # check multiple-4 success:     1
76905 DELETE FROM t1
76906 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
76907 AND @max_row_div2 + @max_row_div4 + @max_row;
76908         
76909 # check multiple-5 success:     1
76910 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
76911 INSERT INTO t1
76912 SET f_int1 = @cur_value , f_int2 = @cur_value,
76913 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
76914 f_charbig = '#SINGLE#';
76915         
76916 # check single-1 success:       1
76917 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
76918 INSERT INTO t1
76919 SET f_int1 = @cur_value , f_int2 = @cur_value,
76920 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
76921 f_charbig = '#SINGLE#';
76922         
76923 # check single-2 success:       1
76924 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
76925 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
76926 UPDATE t1 SET f_int1 = @cur_value2
76927 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
76928         
76929 # check single-3 success:       1
76930 SET @cur_value1= -1;
76931 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
76932 UPDATE t1 SET f_int1 = @cur_value1
76933 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
76934         
76935 # check single-4 success:       1
76936 SELECT MAX(f_int1) INTO @cur_value FROM t1;
76937 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
76938         
76939 # check single-5 success:       1
76940 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
76941         
76942 # check single-6 success:       1
76943 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
76944 ERROR HY000: Table has no partition for value 2147483647
76945 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
76946 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
76947 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
76948 f_charbig = '#NULL#';
76949 INSERT INTO t1
76950 SET f_int1 = NULL , f_int2 = -@max_row,
76951 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
76952 f_charbig = '#NULL#';
76953 # check null success:    1
76954         
76955 # check null-1 success:         1
76956 UPDATE t1 SET f_int1 = -@max_row
76957 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
76958 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
76959         
76960 # check null-2 success:         1
76961 UPDATE t1 SET f_int1 = NULL
76962 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
76963 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
76964         
76965 # check null-3 success:         1
76966 DELETE FROM t1
76967 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
76968 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
76969         
76970 # check null-4 success:         1
76971 DELETE FROM t1
76972 WHERE f_int1 = 0 AND f_int2 = 0
76973 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
76974 AND f_charbig = '#NULL#';
76975 SET AUTOCOMMIT= 0;
76976 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
76977 SELECT f_int1, f_int1, '', '', 'was inserted'
76978 FROM t0_template source_tab
76979 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
76980         
76981 # check transactions-1 success:         1
76982 COMMIT WORK;
76983         
76984 # check transactions-2 success:         1
76985 ROLLBACK WORK;
76986         
76987 # check transactions-3 success:         1
76988 DELETE FROM t1 WHERE f_charbig = 'was inserted';
76989 COMMIT WORK;
76990 ROLLBACK WORK;
76991         
76992 # check transactions-4 success:         1
76993 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
76994 SELECT f_int1, f_int1, '', '', 'was inserted'
76995 FROM t0_template source_tab
76996 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
76997         
76998 # check transactions-5 success:         1
76999 ROLLBACK WORK;
77000 Warnings:
77001 Warning 1196    Some non-transactional changed tables couldn't be rolled back
77002         
77003 # check transactions-6 success:         1
77004 # INFO: Storage engine used for t1 seems to be not transactional.
77005 COMMIT;
77006         
77007 # check transactions-7 success:         1
77008 DELETE FROM t1 WHERE f_charbig = 'was inserted';
77009 COMMIT WORK;
77010 SET @@session.sql_mode = 'traditional';
77011 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
77012 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
77013 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
77014 '', '', 'was inserted' FROM t0_template
77015 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
77016 ERROR 22012: Division by 0
77017 COMMIT;
77018         
77019 # check transactions-8 success:         1
77020 # INFO: Storage engine used for t1 seems to be unable to revert
77021 #       changes made by the failing statement.
77022 SET @@session.sql_mode = '';
77023 SET AUTOCOMMIT= 1;
77024 DELETE FROM t1 WHERE f_charbig = 'was inserted';
77025 COMMIT WORK;
77026 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
77027         
77028 # check special-1 success:      1
77029 UPDATE t1 SET f_charbig = '';
77030         
77031 # check special-2 success:      1
77032 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
77033 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
77034 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
77035 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77036 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77037 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77038 'just inserted' FROM t0_template
77039 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77040 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
77041 BEGIN
77042 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77043 f_charbig = 'updated by trigger'
77044       WHERE f_int1 = new.f_int1;
77045 END|
77046 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77047 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
77048 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77049         
77050 # check trigger-1 success:      1
77051 DROP TRIGGER trg_1;
77052 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77053 f_int2 = CAST(f_char1 AS SIGNED INT),
77054 f_charbig = 'just inserted'
77055    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77056 DELETE FROM t0_aux
77057 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77058 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77059 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77060 'just inserted' FROM t0_template
77061 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77062 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
77063 BEGIN
77064 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77065 f_charbig = 'updated by trigger'
77066       WHERE f_int1 = new.f_int1;
77067 END|
77068 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77069 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
77070 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77071         
77072 # check trigger-2 success:      1
77073 DROP TRIGGER trg_1;
77074 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77075 f_int2 = CAST(f_char1 AS SIGNED INT),
77076 f_charbig = 'just inserted'
77077    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77078 DELETE FROM t0_aux
77079 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77080 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77081 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77082 'just inserted' FROM t0_template
77083 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77084 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
77085 BEGIN
77086 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77087 f_charbig = 'updated by trigger'
77088       WHERE f_int1 = new.f_int1;
77089 END|
77090 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
77091 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
77092         
77093 # check trigger-3 success:      1
77094 DROP TRIGGER trg_1;
77095 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77096 f_int2 = CAST(f_char1 AS SIGNED INT),
77097 f_charbig = 'just inserted'
77098    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77099 DELETE FROM t0_aux
77100 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77101 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77102 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77103 'just inserted' FROM t0_template
77104 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77105 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
77106 BEGIN
77107 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77108 f_charbig = 'updated by trigger'
77109       WHERE f_int1 = - old.f_int1;
77110 END|
77111 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
77112 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
77113         
77114 # check trigger-4 success:      1
77115 DROP TRIGGER trg_1;
77116 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77117 f_int2 = CAST(f_char1 AS SIGNED INT),
77118 f_charbig = 'just inserted'
77119    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77120 DELETE FROM t0_aux
77121 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77122 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77123 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77124 'just inserted' FROM t0_template
77125 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77126 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
77127 BEGIN
77128 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77129 f_charbig = 'updated by trigger'
77130       WHERE f_int1 = new.f_int1;
77131 END|
77132 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
77133 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
77134         
77135 # check trigger-5 success:      1
77136 DROP TRIGGER trg_1;
77137 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77138 f_int2 = CAST(f_char1 AS SIGNED INT),
77139 f_charbig = 'just inserted'
77140    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77141 DELETE FROM t0_aux
77142 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77143 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77144 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77145 'just inserted' FROM t0_template
77146 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77147 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
77148 BEGIN
77149 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77150 f_charbig = 'updated by trigger'
77151       WHERE f_int1 = - old.f_int1;
77152 END|
77153 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
77154 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
77155         
77156 # check trigger-6 success:      1
77157 DROP TRIGGER trg_1;
77158 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77159 f_int2 = CAST(f_char1 AS SIGNED INT),
77160 f_charbig = 'just inserted'
77161    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77162 DELETE FROM t0_aux
77163 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77164 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77165 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77166 'just inserted' FROM t0_template
77167 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77168 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
77169 BEGIN
77170 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77171 f_charbig = 'updated by trigger'
77172       WHERE f_int1 = - old.f_int1;
77173 END|
77174 DELETE FROM t0_aux
77175 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
77176         
77177 # check trigger-7 success:      1
77178 DROP TRIGGER trg_1;
77179 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77180 f_int2 = CAST(f_char1 AS SIGNED INT),
77181 f_charbig = 'just inserted'
77182    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77183 DELETE FROM t0_aux
77184 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77185 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77186 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77187 'just inserted' FROM t0_template
77188 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77189 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
77190 BEGIN
77191 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77192 f_charbig = 'updated by trigger'
77193       WHERE f_int1 = - old.f_int1;
77194 END|
77195 DELETE FROM t0_aux
77196 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
77197         
77198 # check trigger-8 success:      1
77199 DROP TRIGGER trg_1;
77200 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77201 f_int2 = CAST(f_char1 AS SIGNED INT),
77202 f_charbig = 'just inserted'
77203    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77204 DELETE FROM t0_aux
77205 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77206 DELETE FROM t1
77207 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77208 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
77209 BEGIN
77210 SET new.f_int1 = old.f_int1 + @max_row,
77211 new.f_int2 = old.f_int2 - @max_row,
77212 new.f_charbig = '####updated per update trigger####';
77213 END|
77214 UPDATE t1
77215 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
77216 f_charbig = '####updated per update statement itself####';
77217         
77218 # check trigger-9 success:      1
77219 DROP TRIGGER trg_2;
77220 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77221 f_int2 = CAST(f_char1 AS SIGNED INT),
77222 f_charbig = CONCAT('===',f_char1,'===');
77223 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
77224 BEGIN
77225 SET new.f_int1 = new.f_int1 + @max_row,
77226 new.f_int2 = new.f_int2 - @max_row,
77227 new.f_charbig = '####updated per update trigger####';
77228 END|
77229 UPDATE t1
77230 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
77231 f_charbig = '####updated per update statement itself####';
77232         
77233 # check trigger-10 success:     1
77234 DROP TRIGGER trg_2;
77235 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77236 f_int2 = CAST(f_char1 AS SIGNED INT),
77237 f_charbig = CONCAT('===',f_char1,'===');
77238 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
77239 BEGIN
77240 SET new.f_int1 = @my_max1 + @counter,
77241 new.f_int2 = @my_min2 - @counter,
77242 new.f_charbig = '####updated per insert trigger####';
77243 SET @counter = @counter + 1;
77244 END|
77245 SET @counter = 1;
77246 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
77247 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
77248 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
77249 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
77250 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
77251 ORDER BY f_int1;
77252 DROP TRIGGER trg_3;
77253         
77254 # check trigger-11 success:     1
77255 DELETE FROM t1
77256 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
77257 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
77258 AND f_charbig = '####updated per insert trigger####';
77259 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
77260 BEGIN
77261 SET new.f_int1 = @my_max1 + @counter,
77262 new.f_int2 = @my_min2 - @counter,
77263 new.f_charbig = '####updated per insert trigger####';
77264 SET @counter = @counter + 1;
77265 END|
77266 SET @counter = 1;
77267 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
77268 INSERT INTO t1 (f_char1, f_char2, f_charbig)
77269 SELECT CAST(f_int1 AS CHAR),
77270 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
77271 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
77272 ORDER BY f_int1;
77273 DROP TRIGGER trg_3;
77274         
77275 # check trigger-12 success:     1
77276 DELETE FROM t1
77277 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
77278 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
77279 AND f_charbig = '####updated per insert trigger####';
77280 ANALYZE  TABLE t1;
77281 Table   Op      Msg_type        Msg_text
77282 test.t1 analyze status  OK
77283 CHECK    TABLE t1 EXTENDED;
77284 Table   Op      Msg_type        Msg_text
77285 test.t1 check   status  OK
77286 CHECKSUM TABLE t1 EXTENDED;
77287 Table   Checksum
77288 test.t1 <some_value>
77289 OPTIMIZE TABLE t1;
77290 Table   Op      Msg_type        Msg_text
77291 test.t1 optimize        status  OK
77292 # check layout success:    1
77293 REPAIR   TABLE t1 EXTENDED;
77294 Table   Op      Msg_type        Msg_text
77295 test.t1 repair  status  OK
77296 # check layout success:    1
77297 TRUNCATE t1;
77298         
77299 # check TRUNCATE success:       1
77300 # check layout success:    1
77301 # End usability test (inc/partition_check.inc)
77302 DROP TABLE t1;
77303 CREATE TABLE t1 (
77304 f_int1 INTEGER,
77305 f_int2 INTEGER,
77306 f_char1 CHAR(20),
77307 f_char2 CHAR(20),
77308 f_charbig VARCHAR(1000)
77311 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
77312 (PARTITION part_1 VALUES IN (0)
77313 (SUBPARTITION sp11, SUBPARTITION sp12),
77314 PARTITION part_2 VALUES IN (1)
77315 (SUBPARTITION sp21, SUBPARTITION sp22),
77316 PARTITION part_3 VALUES IN (2)
77317 (SUBPARTITION sp31, SUBPARTITION sp32),
77318 PARTITION part_4 VALUES IN (NULL)
77319 (SUBPARTITION sp41, SUBPARTITION sp42));
77320 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
77321 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
77322 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
77323 ALTER TABLE t1 REPAIR PARTITION part_1,part_2;
77324 Table   Op      Msg_type        Msg_text
77325 test.t1 repair  status  OK
77326 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
77327 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
77328 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
77329 # Start usability test (inc/partition_check.inc)
77330 create_command
77331 SHOW CREATE TABLE t1;
77332 Table   Create Table
77333 t1      CREATE TABLE `t1` (
77334   `f_int1` int(11) DEFAULT NULL,
77335   `f_int2` int(11) DEFAULT NULL,
77336   `f_char1` char(20) DEFAULT NULL,
77337   `f_char2` char(20) DEFAULT NULL,
77338   `f_charbig` varchar(1000) DEFAULT NULL
77339 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
77340 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
77341 SUBPARTITION BY HASH (f_int1 + 1)
77342 (PARTITION part_1 VALUES IN (0)
77343  (SUBPARTITION sp11 ENGINE = MyISAM,
77344   SUBPARTITION sp12 ENGINE = MyISAM),
77345  PARTITION part_2 VALUES IN (1)
77346  (SUBPARTITION sp21 ENGINE = MyISAM,
77347   SUBPARTITION sp22 ENGINE = MyISAM),
77348  PARTITION part_3 VALUES IN (2)
77349  (SUBPARTITION sp31 ENGINE = MyISAM,
77350   SUBPARTITION sp32 ENGINE = MyISAM),
77351  PARTITION part_4 VALUES IN (NULL)
77352  (SUBPARTITION sp41 ENGINE = MyISAM,
77353   SUBPARTITION sp42 ENGINE = MyISAM)) */
77355 unified filelist
77356 t1#P#part_1#SP#sp11.MYD
77357 t1#P#part_1#SP#sp11.MYI
77358 t1#P#part_1#SP#sp12.MYD
77359 t1#P#part_1#SP#sp12.MYI
77360 t1#P#part_2#SP#sp21.MYD
77361 t1#P#part_2#SP#sp21.MYI
77362 t1#P#part_2#SP#sp22.MYD
77363 t1#P#part_2#SP#sp22.MYI
77364 t1#P#part_3#SP#sp31.MYD
77365 t1#P#part_3#SP#sp31.MYI
77366 t1#P#part_3#SP#sp32.MYD
77367 t1#P#part_3#SP#sp32.MYI
77368 t1#P#part_4#SP#sp41.MYD
77369 t1#P#part_4#SP#sp41.MYI
77370 t1#P#part_4#SP#sp42.MYD
77371 t1#P#part_4#SP#sp42.MYI
77372 t1.frm
77373 t1.par
77375 # check prerequisites-1 success:    1
77376 # check COUNT(*) success:    1
77377 # check MIN/MAX(f_int1) success:    1
77378 # check MIN/MAX(f_int2) success:    1
77379 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
77380 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
77381 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
77382 WHERE f_int1 IN (2,3);
77383 # check prerequisites-3 success:    1
77384 DELETE FROM t1 WHERE f_charbig = 'delete me';
77385 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
77386 # check read via f_int1 success: 1
77387 # check read via f_int2 success: 1
77388         
77389 # check multiple-1 success:     1
77390 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
77391         
77392 # check multiple-2 success:     1
77393 INSERT INTO t1 SELECT * FROM t0_template
77394 WHERE MOD(f_int1,3) = 0;
77395         
77396 # check multiple-3 success:     1
77397 UPDATE t1 SET f_int1 = f_int1 + @max_row
77398 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
77399 AND @max_row_div2 + @max_row_div4;
77400         
77401 # check multiple-4 success:     1
77402 DELETE FROM t1
77403 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
77404 AND @max_row_div2 + @max_row_div4 + @max_row;
77405         
77406 # check multiple-5 success:     1
77407 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
77408 INSERT INTO t1
77409 SET f_int1 = @cur_value , f_int2 = @cur_value,
77410 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
77411 f_charbig = '#SINGLE#';
77412         
77413 # check single-1 success:       1
77414 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
77415 INSERT INTO t1
77416 SET f_int1 = @cur_value , f_int2 = @cur_value,
77417 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
77418 f_charbig = '#SINGLE#';
77419         
77420 # check single-2 success:       1
77421 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
77422 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
77423 UPDATE t1 SET f_int1 = @cur_value2
77424 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
77425         
77426 # check single-3 success:       1
77427 SET @cur_value1= -1;
77428 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
77429 UPDATE t1 SET f_int1 = @cur_value1
77430 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
77431         
77432 # check single-4 success:       1
77433 SELECT MAX(f_int1) INTO @cur_value FROM t1;
77434 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
77435         
77436 # check single-5 success:       1
77437 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
77438         
77439 # check single-6 success:       1
77440 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
77441         
77442 # check single-7 success:       1
77443 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
77444 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
77445 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
77446 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
77447 f_charbig = '#NULL#';
77448 INSERT INTO t1
77449 SET f_int1 = NULL , f_int2 = -@max_row,
77450 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
77451 f_charbig = '#NULL#';
77452 # check null success:    1
77453         
77454 # check null-1 success:         1
77455 UPDATE t1 SET f_int1 = -@max_row
77456 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
77457 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
77458         
77459 # check null-2 success:         1
77460 UPDATE t1 SET f_int1 = NULL
77461 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
77462 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
77463         
77464 # check null-3 success:         1
77465 DELETE FROM t1
77466 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
77467 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
77468         
77469 # check null-4 success:         1
77470 DELETE FROM t1
77471 WHERE f_int1 = 0 AND f_int2 = 0
77472 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
77473 AND f_charbig = '#NULL#';
77474 SET AUTOCOMMIT= 0;
77475 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
77476 SELECT f_int1, f_int1, '', '', 'was inserted'
77477 FROM t0_template source_tab
77478 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
77479         
77480 # check transactions-1 success:         1
77481 COMMIT WORK;
77482         
77483 # check transactions-2 success:         1
77484 ROLLBACK WORK;
77485         
77486 # check transactions-3 success:         1
77487 DELETE FROM t1 WHERE f_charbig = 'was inserted';
77488 COMMIT WORK;
77489 ROLLBACK WORK;
77490         
77491 # check transactions-4 success:         1
77492 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
77493 SELECT f_int1, f_int1, '', '', 'was inserted'
77494 FROM t0_template source_tab
77495 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
77496         
77497 # check transactions-5 success:         1
77498 ROLLBACK WORK;
77499 Warnings:
77500 Warning 1196    Some non-transactional changed tables couldn't be rolled back
77501         
77502 # check transactions-6 success:         1
77503 # INFO: Storage engine used for t1 seems to be not transactional.
77504 COMMIT;
77505         
77506 # check transactions-7 success:         1
77507 DELETE FROM t1 WHERE f_charbig = 'was inserted';
77508 COMMIT WORK;
77509 SET @@session.sql_mode = 'traditional';
77510 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
77511 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
77512 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
77513 '', '', 'was inserted' FROM t0_template
77514 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
77515 ERROR 22012: Division by 0
77516 COMMIT;
77517         
77518 # check transactions-8 success:         1
77519 # INFO: Storage engine used for t1 seems to be unable to revert
77520 #       changes made by the failing statement.
77521 SET @@session.sql_mode = '';
77522 SET AUTOCOMMIT= 1;
77523 DELETE FROM t1 WHERE f_charbig = 'was inserted';
77524 COMMIT WORK;
77525 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
77526         
77527 # check special-1 success:      1
77528 UPDATE t1 SET f_charbig = '';
77529         
77530 # check special-2 success:      1
77531 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
77532 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
77533 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
77534 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77535 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77536 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77537 'just inserted' FROM t0_template
77538 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77539 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
77540 BEGIN
77541 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77542 f_charbig = 'updated by trigger'
77543       WHERE f_int1 = new.f_int1;
77544 END|
77545 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77546 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
77547 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77548         
77549 # check trigger-1 success:      1
77550 DROP TRIGGER trg_1;
77551 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77552 f_int2 = CAST(f_char1 AS SIGNED INT),
77553 f_charbig = 'just inserted'
77554    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77555 DELETE FROM t0_aux
77556 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77557 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77558 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77559 'just inserted' FROM t0_template
77560 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77561 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
77562 BEGIN
77563 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77564 f_charbig = 'updated by trigger'
77565       WHERE f_int1 = new.f_int1;
77566 END|
77567 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77568 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
77569 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77570         
77571 # check trigger-2 success:      1
77572 DROP TRIGGER trg_1;
77573 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77574 f_int2 = CAST(f_char1 AS SIGNED INT),
77575 f_charbig = 'just inserted'
77576    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77577 DELETE FROM t0_aux
77578 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77579 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77580 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77581 'just inserted' FROM t0_template
77582 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77583 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
77584 BEGIN
77585 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77586 f_charbig = 'updated by trigger'
77587       WHERE f_int1 = new.f_int1;
77588 END|
77589 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
77590 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
77591         
77592 # check trigger-3 success:      1
77593 DROP TRIGGER trg_1;
77594 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77595 f_int2 = CAST(f_char1 AS SIGNED INT),
77596 f_charbig = 'just inserted'
77597    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77598 DELETE FROM t0_aux
77599 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77600 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77601 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77602 'just inserted' FROM t0_template
77603 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77604 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
77605 BEGIN
77606 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77607 f_charbig = 'updated by trigger'
77608       WHERE f_int1 = - old.f_int1;
77609 END|
77610 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
77611 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
77612         
77613 # check trigger-4 success:      1
77614 DROP TRIGGER trg_1;
77615 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77616 f_int2 = CAST(f_char1 AS SIGNED INT),
77617 f_charbig = 'just inserted'
77618    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77619 DELETE FROM t0_aux
77620 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77621 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77622 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77623 'just inserted' FROM t0_template
77624 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77625 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
77626 BEGIN
77627 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77628 f_charbig = 'updated by trigger'
77629       WHERE f_int1 = new.f_int1;
77630 END|
77631 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
77632 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
77633         
77634 # check trigger-5 success:      1
77635 DROP TRIGGER trg_1;
77636 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77637 f_int2 = CAST(f_char1 AS SIGNED INT),
77638 f_charbig = 'just inserted'
77639    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77640 DELETE FROM t0_aux
77641 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77642 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77643 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77644 'just inserted' FROM t0_template
77645 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77646 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
77647 BEGIN
77648 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77649 f_charbig = 'updated by trigger'
77650       WHERE f_int1 = - old.f_int1;
77651 END|
77652 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
77653 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
77654         
77655 # check trigger-6 success:      1
77656 DROP TRIGGER trg_1;
77657 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77658 f_int2 = CAST(f_char1 AS SIGNED INT),
77659 f_charbig = 'just inserted'
77660    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77661 DELETE FROM t0_aux
77662 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77663 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77664 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77665 'just inserted' FROM t0_template
77666 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77667 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
77668 BEGIN
77669 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77670 f_charbig = 'updated by trigger'
77671       WHERE f_int1 = - old.f_int1;
77672 END|
77673 DELETE FROM t0_aux
77674 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
77675         
77676 # check trigger-7 success:      1
77677 DROP TRIGGER trg_1;
77678 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77679 f_int2 = CAST(f_char1 AS SIGNED INT),
77680 f_charbig = 'just inserted'
77681    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77682 DELETE FROM t0_aux
77683 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77684 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
77685 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
77686 'just inserted' FROM t0_template
77687 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77688 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
77689 BEGIN
77690 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
77691 f_charbig = 'updated by trigger'
77692       WHERE f_int1 = - old.f_int1;
77693 END|
77694 DELETE FROM t0_aux
77695 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
77696         
77697 # check trigger-8 success:      1
77698 DROP TRIGGER trg_1;
77699 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77700 f_int2 = CAST(f_char1 AS SIGNED INT),
77701 f_charbig = 'just inserted'
77702    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
77703 DELETE FROM t0_aux
77704 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77705 DELETE FROM t1
77706 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
77707 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
77708 BEGIN
77709 SET new.f_int1 = old.f_int1 + @max_row,
77710 new.f_int2 = old.f_int2 - @max_row,
77711 new.f_charbig = '####updated per update trigger####';
77712 END|
77713 UPDATE t1
77714 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
77715 f_charbig = '####updated per update statement itself####';
77716         
77717 # check trigger-9 success:      1
77718 DROP TRIGGER trg_2;
77719 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77720 f_int2 = CAST(f_char1 AS SIGNED INT),
77721 f_charbig = CONCAT('===',f_char1,'===');
77722 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
77723 BEGIN
77724 SET new.f_int1 = new.f_int1 + @max_row,
77725 new.f_int2 = new.f_int2 - @max_row,
77726 new.f_charbig = '####updated per update trigger####';
77727 END|
77728 UPDATE t1
77729 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
77730 f_charbig = '####updated per update statement itself####';
77731         
77732 # check trigger-10 success:     1
77733 DROP TRIGGER trg_2;
77734 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
77735 f_int2 = CAST(f_char1 AS SIGNED INT),
77736 f_charbig = CONCAT('===',f_char1,'===');
77737 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
77738 BEGIN
77739 SET new.f_int1 = @my_max1 + @counter,
77740 new.f_int2 = @my_min2 - @counter,
77741 new.f_charbig = '####updated per insert trigger####';
77742 SET @counter = @counter + 1;
77743 END|
77744 SET @counter = 1;
77745 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
77746 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
77747 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
77748 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
77749 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
77750 ORDER BY f_int1;
77751 DROP TRIGGER trg_3;
77752         
77753 # check trigger-11 success:     1
77754 DELETE FROM t1
77755 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
77756 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
77757 AND f_charbig = '####updated per insert trigger####';
77758 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
77759 BEGIN
77760 SET new.f_int1 = @my_max1 + @counter,
77761 new.f_int2 = @my_min2 - @counter,
77762 new.f_charbig = '####updated per insert trigger####';
77763 SET @counter = @counter + 1;
77764 END|
77765 SET @counter = 1;
77766 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
77767 INSERT INTO t1 (f_char1, f_char2, f_charbig)
77768 SELECT CAST(f_int1 AS CHAR),
77769 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
77770 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
77771 ORDER BY f_int1;
77772 DROP TRIGGER trg_3;
77773         
77774 # check trigger-12 success:     1
77775 DELETE FROM t1
77776 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
77777 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
77778 AND f_charbig = '####updated per insert trigger####';
77779 ANALYZE  TABLE t1;
77780 Table   Op      Msg_type        Msg_text
77781 test.t1 analyze status  OK
77782 CHECK    TABLE t1 EXTENDED;
77783 Table   Op      Msg_type        Msg_text
77784 test.t1 check   status  OK
77785 CHECKSUM TABLE t1 EXTENDED;
77786 Table   Checksum
77787 test.t1 <some_value>
77788 OPTIMIZE TABLE t1;
77789 Table   Op      Msg_type        Msg_text
77790 test.t1 optimize        status  OK
77791 # check layout success:    1
77792 REPAIR   TABLE t1 EXTENDED;
77793 Table   Op      Msg_type        Msg_text
77794 test.t1 repair  status  OK
77795 # check layout success:    1
77796 TRUNCATE t1;
77797         
77798 # check TRUNCATE success:       1
77799 # check layout success:    1
77800 # End usability test (inc/partition_check.inc)
77801 DROP TABLE t1;
77802 CREATE TABLE t1 (
77803 f_int1 INTEGER,
77804 f_int2 INTEGER,
77805 f_char1 CHAR(20),
77806 f_char2 CHAR(20),
77807 f_charbig VARCHAR(1000)
77810 PARTITION BY LIST(ABS(MOD(f_int1,2)))
77811 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
77812 (PARTITION part_1 VALUES IN (0),
77813  PARTITION part_2 VALUES IN (1),
77814  PARTITION part_3 VALUES IN (NULL));
77815 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
77816 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
77817 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
77818 ALTER TABLE t1 REPAIR PARTITION part_1,part_2;
77819 Table   Op      Msg_type        Msg_text
77820 test.t1 repair  status  OK
77821 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
77822 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
77823 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
77824 # Start usability test (inc/partition_check.inc)
77825 create_command
77826 SHOW CREATE TABLE t1;
77827 Table   Create Table
77828 t1      CREATE TABLE `t1` (
77829   `f_int1` int(11) DEFAULT NULL,
77830   `f_int2` int(11) DEFAULT NULL,
77831   `f_char1` char(20) DEFAULT NULL,
77832   `f_char2` char(20) DEFAULT NULL,
77833   `f_charbig` varchar(1000) DEFAULT NULL
77834 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
77835 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
77836 SUBPARTITION BY KEY (f_int1)
77837 SUBPARTITIONS 3
77838 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
77839  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
77840  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
77842 unified filelist
77843 t1#P#part_1#SP#part_1sp0.MYD
77844 t1#P#part_1#SP#part_1sp0.MYI
77845 t1#P#part_1#SP#part_1sp1.MYD
77846 t1#P#part_1#SP#part_1sp1.MYI
77847 t1#P#part_1#SP#part_1sp2.MYD
77848 t1#P#part_1#SP#part_1sp2.MYI
77849 t1#P#part_2#SP#part_2sp0.MYD
77850 t1#P#part_2#SP#part_2sp0.MYI
77851 t1#P#part_2#SP#part_2sp1.MYD
77852 t1#P#part_2#SP#part_2sp1.MYI
77853 t1#P#part_2#SP#part_2sp2.MYD
77854 t1#P#part_2#SP#part_2sp2.MYI
77855 t1#P#part_3#SP#part_3sp0.MYD
77856 t1#P#part_3#SP#part_3sp0.MYI
77857 t1#P#part_3#SP#part_3sp1.MYD
77858 t1#P#part_3#SP#part_3sp1.MYI
77859 t1#P#part_3#SP#part_3sp2.MYD
77860 t1#P#part_3#SP#part_3sp2.MYI
77861 t1.frm
77862 t1.par
77864 # check prerequisites-1 success:    1
77865 # check COUNT(*) success:    1
77866 # check MIN/MAX(f_int1) success:    1
77867 # check MIN/MAX(f_int2) success:    1
77868 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
77869 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
77870 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
77871 WHERE f_int1 IN (2,3);
77872 # check prerequisites-3 success:    1
77873 DELETE FROM t1 WHERE f_charbig = 'delete me';
77874 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
77875 # check read via f_int1 success: 1
77876 # check read via f_int2 success: 1
77877         
77878 # check multiple-1 success:     1
77879 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
77880         
77881 # check multiple-2 success:     1
77882 INSERT INTO t1 SELECT * FROM t0_template
77883 WHERE MOD(f_int1,3) = 0;
77884         
77885 # check multiple-3 success:     1
77886 UPDATE t1 SET f_int1 = f_int1 + @max_row
77887 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
77888 AND @max_row_div2 + @max_row_div4;
77889         
77890 # check multiple-4 success:     1
77891 DELETE FROM t1
77892 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
77893 AND @max_row_div2 + @max_row_div4 + @max_row;
77894         
77895 # check multiple-5 success:     1
77896 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
77897 INSERT INTO t1
77898 SET f_int1 = @cur_value , f_int2 = @cur_value,
77899 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
77900 f_charbig = '#SINGLE#';
77901         
77902 # check single-1 success:       1
77903 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
77904 INSERT INTO t1
77905 SET f_int1 = @cur_value , f_int2 = @cur_value,
77906 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
77907 f_charbig = '#SINGLE#';
77908         
77909 # check single-2 success:       1
77910 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
77911 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
77912 UPDATE t1 SET f_int1 = @cur_value2
77913 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
77914         
77915 # check single-3 success:       1
77916 SET @cur_value1= -1;
77917 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
77918 UPDATE t1 SET f_int1 = @cur_value1
77919 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
77920         
77921 # check single-4 success:       1
77922 SELECT MAX(f_int1) INTO @cur_value FROM t1;
77923 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
77924         
77925 # check single-5 success:       1
77926 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
77927         
77928 # check single-6 success:       1
77929 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
77930         
77931 # check single-7 success:       1
77932 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
77933 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
77934 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
77935 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
77936 f_charbig = '#NULL#';
77937 INSERT INTO t1
77938 SET f_int1 = NULL , f_int2 = -@max_row,
77939 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
77940 f_charbig = '#NULL#';
77941 # check null success:    1
77942         
77943 # check null-1 success:         1
77944 UPDATE t1 SET f_int1 = -@max_row
77945 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
77946 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
77947         
77948 # check null-2 success:         1
77949 UPDATE t1 SET f_int1 = NULL
77950 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
77951 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
77952         
77953 # check null-3 success:         1
77954 DELETE FROM t1
77955 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
77956 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
77957         
77958 # check null-4 success:         1
77959 DELETE FROM t1
77960 WHERE f_int1 = 0 AND f_int2 = 0
77961 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
77962 AND f_charbig = '#NULL#';
77963 SET AUTOCOMMIT= 0;
77964 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
77965 SELECT f_int1, f_int1, '', '', 'was inserted'
77966 FROM t0_template source_tab
77967 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
77968         
77969 # check transactions-1 success:         1
77970 COMMIT WORK;
77971         
77972 # check transactions-2 success:         1
77973 ROLLBACK WORK;
77974         
77975 # check transactions-3 success:         1
77976 DELETE FROM t1 WHERE f_charbig = 'was inserted';
77977 COMMIT WORK;
77978 ROLLBACK WORK;
77979         
77980 # check transactions-4 success:         1
77981 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
77982 SELECT f_int1, f_int1, '', '', 'was inserted'
77983 FROM t0_template source_tab
77984 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
77985         
77986 # check transactions-5 success:         1
77987 ROLLBACK WORK;
77988 Warnings:
77989 Warning 1196    Some non-transactional changed tables couldn't be rolled back
77990         
77991 # check transactions-6 success:         1
77992 # INFO: Storage engine used for t1 seems to be not transactional.
77993 COMMIT;
77994         
77995 # check transactions-7 success:         1
77996 DELETE FROM t1 WHERE f_charbig = 'was inserted';
77997 COMMIT WORK;
77998 SET @@session.sql_mode = 'traditional';
77999 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
78000 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
78001 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
78002 '', '', 'was inserted' FROM t0_template
78003 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
78004 ERROR 22012: Division by 0
78005 COMMIT;
78006         
78007 # check transactions-8 success:         1
78008 # INFO: Storage engine used for t1 seems to be unable to revert
78009 #       changes made by the failing statement.
78010 SET @@session.sql_mode = '';
78011 SET AUTOCOMMIT= 1;
78012 DELETE FROM t1 WHERE f_charbig = 'was inserted';
78013 COMMIT WORK;
78014 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
78015         
78016 # check special-1 success:      1
78017 UPDATE t1 SET f_charbig = '';
78018         
78019 # check special-2 success:      1
78020 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
78021 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
78022 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
78023 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78024 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78025 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78026 'just inserted' FROM t0_template
78027 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78028 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
78029 BEGIN
78030 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78031 f_charbig = 'updated by trigger'
78032       WHERE f_int1 = new.f_int1;
78033 END|
78034 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78035 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
78036 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78037         
78038 # check trigger-1 success:      1
78039 DROP TRIGGER trg_1;
78040 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78041 f_int2 = CAST(f_char1 AS SIGNED INT),
78042 f_charbig = 'just inserted'
78043    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78044 DELETE FROM t0_aux
78045 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78046 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78047 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78048 'just inserted' FROM t0_template
78049 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78050 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
78051 BEGIN
78052 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78053 f_charbig = 'updated by trigger'
78054       WHERE f_int1 = new.f_int1;
78055 END|
78056 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78057 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
78058 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78059         
78060 # check trigger-2 success:      1
78061 DROP TRIGGER trg_1;
78062 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78063 f_int2 = CAST(f_char1 AS SIGNED INT),
78064 f_charbig = 'just inserted'
78065    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78066 DELETE FROM t0_aux
78067 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78068 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78069 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78070 'just inserted' FROM t0_template
78071 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78072 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
78073 BEGIN
78074 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78075 f_charbig = 'updated by trigger'
78076       WHERE f_int1 = new.f_int1;
78077 END|
78078 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
78079 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
78080         
78081 # check trigger-3 success:      1
78082 DROP TRIGGER trg_1;
78083 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78084 f_int2 = CAST(f_char1 AS SIGNED INT),
78085 f_charbig = 'just inserted'
78086    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78087 DELETE FROM t0_aux
78088 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78089 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78090 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78091 'just inserted' FROM t0_template
78092 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78093 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
78094 BEGIN
78095 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78096 f_charbig = 'updated by trigger'
78097       WHERE f_int1 = - old.f_int1;
78098 END|
78099 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
78100 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
78101         
78102 # check trigger-4 success:      1
78103 DROP TRIGGER trg_1;
78104 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78105 f_int2 = CAST(f_char1 AS SIGNED INT),
78106 f_charbig = 'just inserted'
78107    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78108 DELETE FROM t0_aux
78109 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78110 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78111 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78112 'just inserted' FROM t0_template
78113 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78114 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
78115 BEGIN
78116 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78117 f_charbig = 'updated by trigger'
78118       WHERE f_int1 = new.f_int1;
78119 END|
78120 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
78121 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
78122         
78123 # check trigger-5 success:      1
78124 DROP TRIGGER trg_1;
78125 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78126 f_int2 = CAST(f_char1 AS SIGNED INT),
78127 f_charbig = 'just inserted'
78128    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78129 DELETE FROM t0_aux
78130 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78131 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78132 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78133 'just inserted' FROM t0_template
78134 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78135 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
78136 BEGIN
78137 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78138 f_charbig = 'updated by trigger'
78139       WHERE f_int1 = - old.f_int1;
78140 END|
78141 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
78142 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
78143         
78144 # check trigger-6 success:      1
78145 DROP TRIGGER trg_1;
78146 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78147 f_int2 = CAST(f_char1 AS SIGNED INT),
78148 f_charbig = 'just inserted'
78149    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78150 DELETE FROM t0_aux
78151 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78152 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78153 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78154 'just inserted' FROM t0_template
78155 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78156 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
78157 BEGIN
78158 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78159 f_charbig = 'updated by trigger'
78160       WHERE f_int1 = - old.f_int1;
78161 END|
78162 DELETE FROM t0_aux
78163 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
78164         
78165 # check trigger-7 success:      1
78166 DROP TRIGGER trg_1;
78167 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78168 f_int2 = CAST(f_char1 AS SIGNED INT),
78169 f_charbig = 'just inserted'
78170    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78171 DELETE FROM t0_aux
78172 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78173 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78174 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78175 'just inserted' FROM t0_template
78176 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78177 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
78178 BEGIN
78179 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78180 f_charbig = 'updated by trigger'
78181       WHERE f_int1 = - old.f_int1;
78182 END|
78183 DELETE FROM t0_aux
78184 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
78185         
78186 # check trigger-8 success:      1
78187 DROP TRIGGER trg_1;
78188 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78189 f_int2 = CAST(f_char1 AS SIGNED INT),
78190 f_charbig = 'just inserted'
78191    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78192 DELETE FROM t0_aux
78193 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78194 DELETE FROM t1
78195 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78196 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
78197 BEGIN
78198 SET new.f_int1 = old.f_int1 + @max_row,
78199 new.f_int2 = old.f_int2 - @max_row,
78200 new.f_charbig = '####updated per update trigger####';
78201 END|
78202 UPDATE t1
78203 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
78204 f_charbig = '####updated per update statement itself####';
78205         
78206 # check trigger-9 success:      1
78207 DROP TRIGGER trg_2;
78208 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78209 f_int2 = CAST(f_char1 AS SIGNED INT),
78210 f_charbig = CONCAT('===',f_char1,'===');
78211 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
78212 BEGIN
78213 SET new.f_int1 = new.f_int1 + @max_row,
78214 new.f_int2 = new.f_int2 - @max_row,
78215 new.f_charbig = '####updated per update trigger####';
78216 END|
78217 UPDATE t1
78218 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
78219 f_charbig = '####updated per update statement itself####';
78220         
78221 # check trigger-10 success:     1
78222 DROP TRIGGER trg_2;
78223 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78224 f_int2 = CAST(f_char1 AS SIGNED INT),
78225 f_charbig = CONCAT('===',f_char1,'===');
78226 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
78227 BEGIN
78228 SET new.f_int1 = @my_max1 + @counter,
78229 new.f_int2 = @my_min2 - @counter,
78230 new.f_charbig = '####updated per insert trigger####';
78231 SET @counter = @counter + 1;
78232 END|
78233 SET @counter = 1;
78234 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
78235 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
78236 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
78237 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
78238 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
78239 ORDER BY f_int1;
78240 DROP TRIGGER trg_3;
78241         
78242 # check trigger-11 success:     1
78243 DELETE FROM t1
78244 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
78245 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
78246 AND f_charbig = '####updated per insert trigger####';
78247 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
78248 BEGIN
78249 SET new.f_int1 = @my_max1 + @counter,
78250 new.f_int2 = @my_min2 - @counter,
78251 new.f_charbig = '####updated per insert trigger####';
78252 SET @counter = @counter + 1;
78253 END|
78254 SET @counter = 1;
78255 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
78256 INSERT INTO t1 (f_char1, f_char2, f_charbig)
78257 SELECT CAST(f_int1 AS CHAR),
78258 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
78259 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
78260 ORDER BY f_int1;
78261 DROP TRIGGER trg_3;
78262         
78263 # check trigger-12 success:     1
78264 DELETE FROM t1
78265 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
78266 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
78267 AND f_charbig = '####updated per insert trigger####';
78268 ANALYZE  TABLE t1;
78269 Table   Op      Msg_type        Msg_text
78270 test.t1 analyze status  OK
78271 CHECK    TABLE t1 EXTENDED;
78272 Table   Op      Msg_type        Msg_text
78273 test.t1 check   status  OK
78274 CHECKSUM TABLE t1 EXTENDED;
78275 Table   Checksum
78276 test.t1 <some_value>
78277 OPTIMIZE TABLE t1;
78278 Table   Op      Msg_type        Msg_text
78279 test.t1 optimize        status  OK
78280 # check layout success:    1
78281 REPAIR   TABLE t1 EXTENDED;
78282 Table   Op      Msg_type        Msg_text
78283 test.t1 repair  status  OK
78284 # check layout success:    1
78285 TRUNCATE t1;
78286         
78287 # check TRUNCATE success:       1
78288 # check layout success:    1
78289 # End usability test (inc/partition_check.inc)
78290 DROP TABLE t1;
78291 #  5.3 ALTER ... REPAIR PARTITION part_1,part_2,part_5,part_6,part_10;
78292 DROP TABLE IF EXISTS t1;
78293 CREATE TABLE t1 (
78294 f_int1 INTEGER,
78295 f_int2 INTEGER,
78296 f_char1 CHAR(20),
78297 f_char2 CHAR(20),
78298 f_charbig VARCHAR(1000)
78301 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
78302 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
78303 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
78304 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
78305 ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10;
78306 Table   Op      Msg_type        Msg_text
78307 test.t1 repair  error   Error in list of partitions to test.t1
78308 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
78309 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
78310 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
78311 # Start usability test (inc/partition_check.inc)
78312 create_command
78313 SHOW CREATE TABLE t1;
78314 Table   Create Table
78315 t1      CREATE TABLE `t1` (
78316   `f_int1` int(11) DEFAULT NULL,
78317   `f_int2` int(11) DEFAULT NULL,
78318   `f_char1` char(20) DEFAULT NULL,
78319   `f_char2` char(20) DEFAULT NULL,
78320   `f_charbig` varchar(1000) DEFAULT NULL
78321 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
78322 /*!50100 PARTITION BY HASH (f_int1)
78323 (PARTITION part_1 ENGINE = MyISAM,
78324  PARTITION part_2 ENGINE = MyISAM) */
78326 unified filelist
78327 t1#P#part_1.MYD
78328 t1#P#part_1.MYI
78329 t1#P#part_2.MYD
78330 t1#P#part_2.MYI
78331 t1.frm
78332 t1.par
78334 # check prerequisites-1 success:    1
78335 # check COUNT(*) success:    1
78336 # check MIN/MAX(f_int1) success:    1
78337 # check MIN/MAX(f_int2) success:    1
78338 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
78339 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
78340 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
78341 WHERE f_int1 IN (2,3);
78342 # check prerequisites-3 success:    1
78343 DELETE FROM t1 WHERE f_charbig = 'delete me';
78344 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
78345 # check read via f_int1 success: 1
78346 # check read via f_int2 success: 1
78347         
78348 # check multiple-1 success:     1
78349 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
78350         
78351 # check multiple-2 success:     1
78352 INSERT INTO t1 SELECT * FROM t0_template
78353 WHERE MOD(f_int1,3) = 0;
78354         
78355 # check multiple-3 success:     1
78356 UPDATE t1 SET f_int1 = f_int1 + @max_row
78357 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
78358 AND @max_row_div2 + @max_row_div4;
78359         
78360 # check multiple-4 success:     1
78361 DELETE FROM t1
78362 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
78363 AND @max_row_div2 + @max_row_div4 + @max_row;
78364         
78365 # check multiple-5 success:     1
78366 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
78367 INSERT INTO t1
78368 SET f_int1 = @cur_value , f_int2 = @cur_value,
78369 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
78370 f_charbig = '#SINGLE#';
78371         
78372 # check single-1 success:       1
78373 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
78374 INSERT INTO t1
78375 SET f_int1 = @cur_value , f_int2 = @cur_value,
78376 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
78377 f_charbig = '#SINGLE#';
78378         
78379 # check single-2 success:       1
78380 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
78381 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
78382 UPDATE t1 SET f_int1 = @cur_value2
78383 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
78384         
78385 # check single-3 success:       1
78386 SET @cur_value1= -1;
78387 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
78388 UPDATE t1 SET f_int1 = @cur_value1
78389 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
78390         
78391 # check single-4 success:       1
78392 SELECT MAX(f_int1) INTO @cur_value FROM t1;
78393 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
78394         
78395 # check single-5 success:       1
78396 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
78397         
78398 # check single-6 success:       1
78399 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
78400         
78401 # check single-7 success:       1
78402 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
78403 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
78404 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
78405 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
78406 f_charbig = '#NULL#';
78407 INSERT INTO t1
78408 SET f_int1 = NULL , f_int2 = -@max_row,
78409 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
78410 f_charbig = '#NULL#';
78411 # check null success:    1
78412         
78413 # check null-1 success:         1
78414 UPDATE t1 SET f_int1 = -@max_row
78415 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
78416 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
78417         
78418 # check null-2 success:         1
78419 UPDATE t1 SET f_int1 = NULL
78420 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
78421 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
78422         
78423 # check null-3 success:         1
78424 DELETE FROM t1
78425 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
78426 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
78427         
78428 # check null-4 success:         1
78429 DELETE FROM t1
78430 WHERE f_int1 = 0 AND f_int2 = 0
78431 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
78432 AND f_charbig = '#NULL#';
78433 SET AUTOCOMMIT= 0;
78434 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
78435 SELECT f_int1, f_int1, '', '', 'was inserted'
78436 FROM t0_template source_tab
78437 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
78438         
78439 # check transactions-1 success:         1
78440 COMMIT WORK;
78441         
78442 # check transactions-2 success:         1
78443 ROLLBACK WORK;
78444         
78445 # check transactions-3 success:         1
78446 DELETE FROM t1 WHERE f_charbig = 'was inserted';
78447 COMMIT WORK;
78448 ROLLBACK WORK;
78449         
78450 # check transactions-4 success:         1
78451 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
78452 SELECT f_int1, f_int1, '', '', 'was inserted'
78453 FROM t0_template source_tab
78454 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
78455         
78456 # check transactions-5 success:         1
78457 ROLLBACK WORK;
78458 Warnings:
78459 Warning 1196    Some non-transactional changed tables couldn't be rolled back
78460         
78461 # check transactions-6 success:         1
78462 # INFO: Storage engine used for t1 seems to be not transactional.
78463 COMMIT;
78464         
78465 # check transactions-7 success:         1
78466 DELETE FROM t1 WHERE f_charbig = 'was inserted';
78467 COMMIT WORK;
78468 SET @@session.sql_mode = 'traditional';
78469 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
78470 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
78471 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
78472 '', '', 'was inserted' FROM t0_template
78473 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
78474 ERROR 22012: Division by 0
78475 COMMIT;
78476         
78477 # check transactions-8 success:         1
78478 # INFO: Storage engine used for t1 seems to be unable to revert
78479 #       changes made by the failing statement.
78480 SET @@session.sql_mode = '';
78481 SET AUTOCOMMIT= 1;
78482 DELETE FROM t1 WHERE f_charbig = 'was inserted';
78483 COMMIT WORK;
78484 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
78485         
78486 # check special-1 success:      1
78487 UPDATE t1 SET f_charbig = '';
78488         
78489 # check special-2 success:      1
78490 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
78491 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
78492 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
78493 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78494 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78495 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78496 'just inserted' FROM t0_template
78497 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78498 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
78499 BEGIN
78500 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78501 f_charbig = 'updated by trigger'
78502       WHERE f_int1 = new.f_int1;
78503 END|
78504 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78505 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
78506 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78507         
78508 # check trigger-1 success:      1
78509 DROP TRIGGER trg_1;
78510 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78511 f_int2 = CAST(f_char1 AS SIGNED INT),
78512 f_charbig = 'just inserted'
78513    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78514 DELETE FROM t0_aux
78515 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78516 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78517 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78518 'just inserted' FROM t0_template
78519 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78520 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
78521 BEGIN
78522 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78523 f_charbig = 'updated by trigger'
78524       WHERE f_int1 = new.f_int1;
78525 END|
78526 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78527 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
78528 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78529         
78530 # check trigger-2 success:      1
78531 DROP TRIGGER trg_1;
78532 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78533 f_int2 = CAST(f_char1 AS SIGNED INT),
78534 f_charbig = 'just inserted'
78535    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78536 DELETE FROM t0_aux
78537 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78538 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78539 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78540 'just inserted' FROM t0_template
78541 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78542 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
78543 BEGIN
78544 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78545 f_charbig = 'updated by trigger'
78546       WHERE f_int1 = new.f_int1;
78547 END|
78548 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
78549 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
78550         
78551 # check trigger-3 success:      1
78552 DROP TRIGGER trg_1;
78553 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78554 f_int2 = CAST(f_char1 AS SIGNED INT),
78555 f_charbig = 'just inserted'
78556    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78557 DELETE FROM t0_aux
78558 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78559 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78560 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78561 'just inserted' FROM t0_template
78562 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78563 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
78564 BEGIN
78565 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78566 f_charbig = 'updated by trigger'
78567       WHERE f_int1 = - old.f_int1;
78568 END|
78569 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
78570 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
78571         
78572 # check trigger-4 success:      1
78573 DROP TRIGGER trg_1;
78574 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78575 f_int2 = CAST(f_char1 AS SIGNED INT),
78576 f_charbig = 'just inserted'
78577    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78578 DELETE FROM t0_aux
78579 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78580 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78581 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78582 'just inserted' FROM t0_template
78583 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78584 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
78585 BEGIN
78586 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78587 f_charbig = 'updated by trigger'
78588       WHERE f_int1 = new.f_int1;
78589 END|
78590 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
78591 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
78592         
78593 # check trigger-5 success:      1
78594 DROP TRIGGER trg_1;
78595 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78596 f_int2 = CAST(f_char1 AS SIGNED INT),
78597 f_charbig = 'just inserted'
78598    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78599 DELETE FROM t0_aux
78600 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78601 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78602 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78603 'just inserted' FROM t0_template
78604 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78605 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
78606 BEGIN
78607 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78608 f_charbig = 'updated by trigger'
78609       WHERE f_int1 = - old.f_int1;
78610 END|
78611 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
78612 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
78613         
78614 # check trigger-6 success:      1
78615 DROP TRIGGER trg_1;
78616 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78617 f_int2 = CAST(f_char1 AS SIGNED INT),
78618 f_charbig = 'just inserted'
78619    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78620 DELETE FROM t0_aux
78621 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78622 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78623 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78624 'just inserted' FROM t0_template
78625 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78626 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
78627 BEGIN
78628 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78629 f_charbig = 'updated by trigger'
78630       WHERE f_int1 = - old.f_int1;
78631 END|
78632 DELETE FROM t0_aux
78633 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
78634         
78635 # check trigger-7 success:      1
78636 DROP TRIGGER trg_1;
78637 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78638 f_int2 = CAST(f_char1 AS SIGNED INT),
78639 f_charbig = 'just inserted'
78640    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78641 DELETE FROM t0_aux
78642 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78643 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78644 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78645 'just inserted' FROM t0_template
78646 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78647 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
78648 BEGIN
78649 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78650 f_charbig = 'updated by trigger'
78651       WHERE f_int1 = - old.f_int1;
78652 END|
78653 DELETE FROM t0_aux
78654 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
78655         
78656 # check trigger-8 success:      1
78657 DROP TRIGGER trg_1;
78658 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78659 f_int2 = CAST(f_char1 AS SIGNED INT),
78660 f_charbig = 'just inserted'
78661    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78662 DELETE FROM t0_aux
78663 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78664 DELETE FROM t1
78665 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78666 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
78667 BEGIN
78668 SET new.f_int1 = old.f_int1 + @max_row,
78669 new.f_int2 = old.f_int2 - @max_row,
78670 new.f_charbig = '####updated per update trigger####';
78671 END|
78672 UPDATE t1
78673 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
78674 f_charbig = '####updated per update statement itself####';
78675         
78676 # check trigger-9 success:      1
78677 DROP TRIGGER trg_2;
78678 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78679 f_int2 = CAST(f_char1 AS SIGNED INT),
78680 f_charbig = CONCAT('===',f_char1,'===');
78681 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
78682 BEGIN
78683 SET new.f_int1 = new.f_int1 + @max_row,
78684 new.f_int2 = new.f_int2 - @max_row,
78685 new.f_charbig = '####updated per update trigger####';
78686 END|
78687 UPDATE t1
78688 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
78689 f_charbig = '####updated per update statement itself####';
78690         
78691 # check trigger-10 success:     1
78692 DROP TRIGGER trg_2;
78693 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78694 f_int2 = CAST(f_char1 AS SIGNED INT),
78695 f_charbig = CONCAT('===',f_char1,'===');
78696 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
78697 BEGIN
78698 SET new.f_int1 = @my_max1 + @counter,
78699 new.f_int2 = @my_min2 - @counter,
78700 new.f_charbig = '####updated per insert trigger####';
78701 SET @counter = @counter + 1;
78702 END|
78703 SET @counter = 1;
78704 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
78705 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
78706 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
78707 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
78708 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
78709 ORDER BY f_int1;
78710 DROP TRIGGER trg_3;
78711         
78712 # check trigger-11 success:     1
78713 DELETE FROM t1
78714 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
78715 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
78716 AND f_charbig = '####updated per insert trigger####';
78717 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
78718 BEGIN
78719 SET new.f_int1 = @my_max1 + @counter,
78720 new.f_int2 = @my_min2 - @counter,
78721 new.f_charbig = '####updated per insert trigger####';
78722 SET @counter = @counter + 1;
78723 END|
78724 SET @counter = 1;
78725 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
78726 INSERT INTO t1 (f_char1, f_char2, f_charbig)
78727 SELECT CAST(f_int1 AS CHAR),
78728 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
78729 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
78730 ORDER BY f_int1;
78731 DROP TRIGGER trg_3;
78732         
78733 # check trigger-12 success:     1
78734 DELETE FROM t1
78735 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
78736 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
78737 AND f_charbig = '####updated per insert trigger####';
78738 ANALYZE  TABLE t1;
78739 Table   Op      Msg_type        Msg_text
78740 test.t1 analyze status  OK
78741 CHECK    TABLE t1 EXTENDED;
78742 Table   Op      Msg_type        Msg_text
78743 test.t1 check   status  OK
78744 CHECKSUM TABLE t1 EXTENDED;
78745 Table   Checksum
78746 test.t1 <some_value>
78747 OPTIMIZE TABLE t1;
78748 Table   Op      Msg_type        Msg_text
78749 test.t1 optimize        status  OK
78750 # check layout success:    1
78751 REPAIR   TABLE t1 EXTENDED;
78752 Table   Op      Msg_type        Msg_text
78753 test.t1 repair  status  OK
78754 # check layout success:    1
78755 TRUNCATE t1;
78756         
78757 # check TRUNCATE success:       1
78758 # check layout success:    1
78759 # End usability test (inc/partition_check.inc)
78760 DROP TABLE t1;
78761 CREATE TABLE t1 (
78762 f_int1 INTEGER,
78763 f_int2 INTEGER,
78764 f_char1 CHAR(20),
78765 f_char2 CHAR(20),
78766 f_charbig VARCHAR(1000)
78769 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
78770 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
78771 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
78772 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
78773 ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10;
78774 Table   Op      Msg_type        Msg_text
78775 test.t1 repair  error   Error in list of partitions to test.t1
78776 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
78777 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
78778 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
78779 # Start usability test (inc/partition_check.inc)
78780 create_command
78781 SHOW CREATE TABLE t1;
78782 Table   Create Table
78783 t1      CREATE TABLE `t1` (
78784   `f_int1` int(11) DEFAULT NULL,
78785   `f_int2` int(11) DEFAULT NULL,
78786   `f_char1` char(20) DEFAULT NULL,
78787   `f_char2` char(20) DEFAULT NULL,
78788   `f_charbig` varchar(1000) DEFAULT NULL
78789 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
78790 /*!50100 PARTITION BY KEY (f_int1)
78791 (PARTITION part_1 ENGINE = MyISAM,
78792  PARTITION part_2 ENGINE = MyISAM,
78793  PARTITION part_3 ENGINE = MyISAM,
78794  PARTITION part_4 ENGINE = MyISAM,
78795  PARTITION part_5 ENGINE = MyISAM) */
78797 unified filelist
78798 t1#P#part_1.MYD
78799 t1#P#part_1.MYI
78800 t1#P#part_2.MYD
78801 t1#P#part_2.MYI
78802 t1#P#part_3.MYD
78803 t1#P#part_3.MYI
78804 t1#P#part_4.MYD
78805 t1#P#part_4.MYI
78806 t1#P#part_5.MYD
78807 t1#P#part_5.MYI
78808 t1.frm
78809 t1.par
78811 # check prerequisites-1 success:    1
78812 # check COUNT(*) success:    1
78813 # check MIN/MAX(f_int1) success:    1
78814 # check MIN/MAX(f_int2) success:    1
78815 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
78816 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
78817 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
78818 WHERE f_int1 IN (2,3);
78819 # check prerequisites-3 success:    1
78820 DELETE FROM t1 WHERE f_charbig = 'delete me';
78821 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
78822 # check read via f_int1 success: 1
78823 # check read via f_int2 success: 1
78824         
78825 # check multiple-1 success:     1
78826 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
78827         
78828 # check multiple-2 success:     1
78829 INSERT INTO t1 SELECT * FROM t0_template
78830 WHERE MOD(f_int1,3) = 0;
78831         
78832 # check multiple-3 success:     1
78833 UPDATE t1 SET f_int1 = f_int1 + @max_row
78834 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
78835 AND @max_row_div2 + @max_row_div4;
78836         
78837 # check multiple-4 success:     1
78838 DELETE FROM t1
78839 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
78840 AND @max_row_div2 + @max_row_div4 + @max_row;
78841         
78842 # check multiple-5 success:     1
78843 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
78844 INSERT INTO t1
78845 SET f_int1 = @cur_value , f_int2 = @cur_value,
78846 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
78847 f_charbig = '#SINGLE#';
78848         
78849 # check single-1 success:       1
78850 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
78851 INSERT INTO t1
78852 SET f_int1 = @cur_value , f_int2 = @cur_value,
78853 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
78854 f_charbig = '#SINGLE#';
78855         
78856 # check single-2 success:       1
78857 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
78858 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
78859 UPDATE t1 SET f_int1 = @cur_value2
78860 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
78861         
78862 # check single-3 success:       1
78863 SET @cur_value1= -1;
78864 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
78865 UPDATE t1 SET f_int1 = @cur_value1
78866 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
78867         
78868 # check single-4 success:       1
78869 SELECT MAX(f_int1) INTO @cur_value FROM t1;
78870 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
78871         
78872 # check single-5 success:       1
78873 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
78874         
78875 # check single-6 success:       1
78876 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
78877         
78878 # check single-7 success:       1
78879 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
78880 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
78881 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
78882 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
78883 f_charbig = '#NULL#';
78884 INSERT INTO t1
78885 SET f_int1 = NULL , f_int2 = -@max_row,
78886 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
78887 f_charbig = '#NULL#';
78888 # check null success:    1
78889         
78890 # check null-1 success:         1
78891 UPDATE t1 SET f_int1 = -@max_row
78892 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
78893 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
78894         
78895 # check null-2 success:         1
78896 UPDATE t1 SET f_int1 = NULL
78897 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
78898 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
78899         
78900 # check null-3 success:         1
78901 DELETE FROM t1
78902 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
78903 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
78904         
78905 # check null-4 success:         1
78906 DELETE FROM t1
78907 WHERE f_int1 = 0 AND f_int2 = 0
78908 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
78909 AND f_charbig = '#NULL#';
78910 SET AUTOCOMMIT= 0;
78911 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
78912 SELECT f_int1, f_int1, '', '', 'was inserted'
78913 FROM t0_template source_tab
78914 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
78915         
78916 # check transactions-1 success:         1
78917 COMMIT WORK;
78918         
78919 # check transactions-2 success:         1
78920 ROLLBACK WORK;
78921         
78922 # check transactions-3 success:         1
78923 DELETE FROM t1 WHERE f_charbig = 'was inserted';
78924 COMMIT WORK;
78925 ROLLBACK WORK;
78926         
78927 # check transactions-4 success:         1
78928 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
78929 SELECT f_int1, f_int1, '', '', 'was inserted'
78930 FROM t0_template source_tab
78931 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
78932         
78933 # check transactions-5 success:         1
78934 ROLLBACK WORK;
78935 Warnings:
78936 Warning 1196    Some non-transactional changed tables couldn't be rolled back
78937         
78938 # check transactions-6 success:         1
78939 # INFO: Storage engine used for t1 seems to be not transactional.
78940 COMMIT;
78941         
78942 # check transactions-7 success:         1
78943 DELETE FROM t1 WHERE f_charbig = 'was inserted';
78944 COMMIT WORK;
78945 SET @@session.sql_mode = 'traditional';
78946 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
78947 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
78948 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
78949 '', '', 'was inserted' FROM t0_template
78950 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
78951 ERROR 22012: Division by 0
78952 COMMIT;
78953         
78954 # check transactions-8 success:         1
78955 # INFO: Storage engine used for t1 seems to be unable to revert
78956 #       changes made by the failing statement.
78957 SET @@session.sql_mode = '';
78958 SET AUTOCOMMIT= 1;
78959 DELETE FROM t1 WHERE f_charbig = 'was inserted';
78960 COMMIT WORK;
78961 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
78962         
78963 # check special-1 success:      1
78964 UPDATE t1 SET f_charbig = '';
78965         
78966 # check special-2 success:      1
78967 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
78968 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
78969 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
78970 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78971 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78972 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78973 'just inserted' FROM t0_template
78974 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78975 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
78976 BEGIN
78977 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
78978 f_charbig = 'updated by trigger'
78979       WHERE f_int1 = new.f_int1;
78980 END|
78981 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78982 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
78983 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78984         
78985 # check trigger-1 success:      1
78986 DROP TRIGGER trg_1;
78987 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
78988 f_int2 = CAST(f_char1 AS SIGNED INT),
78989 f_charbig = 'just inserted'
78990    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
78991 DELETE FROM t0_aux
78992 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78993 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
78994 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
78995 'just inserted' FROM t0_template
78996 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
78997 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
78998 BEGIN
78999 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79000 f_charbig = 'updated by trigger'
79001       WHERE f_int1 = new.f_int1;
79002 END|
79003 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79004 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
79005 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79006         
79007 # check trigger-2 success:      1
79008 DROP TRIGGER trg_1;
79009 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79010 f_int2 = CAST(f_char1 AS SIGNED INT),
79011 f_charbig = 'just inserted'
79012    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79013 DELETE FROM t0_aux
79014 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79015 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79016 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79017 'just inserted' FROM t0_template
79018 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79019 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
79020 BEGIN
79021 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79022 f_charbig = 'updated by trigger'
79023       WHERE f_int1 = new.f_int1;
79024 END|
79025 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
79026 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
79027         
79028 # check trigger-3 success:      1
79029 DROP TRIGGER trg_1;
79030 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79031 f_int2 = CAST(f_char1 AS SIGNED INT),
79032 f_charbig = 'just inserted'
79033    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79034 DELETE FROM t0_aux
79035 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79036 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79037 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79038 'just inserted' FROM t0_template
79039 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79040 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
79041 BEGIN
79042 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79043 f_charbig = 'updated by trigger'
79044       WHERE f_int1 = - old.f_int1;
79045 END|
79046 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
79047 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
79048         
79049 # check trigger-4 success:      1
79050 DROP TRIGGER trg_1;
79051 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79052 f_int2 = CAST(f_char1 AS SIGNED INT),
79053 f_charbig = 'just inserted'
79054    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79055 DELETE FROM t0_aux
79056 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79057 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79058 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79059 'just inserted' FROM t0_template
79060 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79061 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
79062 BEGIN
79063 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79064 f_charbig = 'updated by trigger'
79065       WHERE f_int1 = new.f_int1;
79066 END|
79067 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
79068 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
79069         
79070 # check trigger-5 success:      1
79071 DROP TRIGGER trg_1;
79072 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79073 f_int2 = CAST(f_char1 AS SIGNED INT),
79074 f_charbig = 'just inserted'
79075    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79076 DELETE FROM t0_aux
79077 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79078 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79079 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79080 'just inserted' FROM t0_template
79081 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79082 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
79083 BEGIN
79084 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79085 f_charbig = 'updated by trigger'
79086       WHERE f_int1 = - old.f_int1;
79087 END|
79088 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
79089 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
79090         
79091 # check trigger-6 success:      1
79092 DROP TRIGGER trg_1;
79093 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79094 f_int2 = CAST(f_char1 AS SIGNED INT),
79095 f_charbig = 'just inserted'
79096    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79097 DELETE FROM t0_aux
79098 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79099 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79100 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79101 'just inserted' FROM t0_template
79102 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79103 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
79104 BEGIN
79105 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79106 f_charbig = 'updated by trigger'
79107       WHERE f_int1 = - old.f_int1;
79108 END|
79109 DELETE FROM t0_aux
79110 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
79111         
79112 # check trigger-7 success:      1
79113 DROP TRIGGER trg_1;
79114 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79115 f_int2 = CAST(f_char1 AS SIGNED INT),
79116 f_charbig = 'just inserted'
79117    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79118 DELETE FROM t0_aux
79119 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79120 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79121 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79122 'just inserted' FROM t0_template
79123 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79124 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
79125 BEGIN
79126 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79127 f_charbig = 'updated by trigger'
79128       WHERE f_int1 = - old.f_int1;
79129 END|
79130 DELETE FROM t0_aux
79131 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
79132         
79133 # check trigger-8 success:      1
79134 DROP TRIGGER trg_1;
79135 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79136 f_int2 = CAST(f_char1 AS SIGNED INT),
79137 f_charbig = 'just inserted'
79138    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79139 DELETE FROM t0_aux
79140 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79141 DELETE FROM t1
79142 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79143 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
79144 BEGIN
79145 SET new.f_int1 = old.f_int1 + @max_row,
79146 new.f_int2 = old.f_int2 - @max_row,
79147 new.f_charbig = '####updated per update trigger####';
79148 END|
79149 UPDATE t1
79150 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
79151 f_charbig = '####updated per update statement itself####';
79152         
79153 # check trigger-9 success:      1
79154 DROP TRIGGER trg_2;
79155 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79156 f_int2 = CAST(f_char1 AS SIGNED INT),
79157 f_charbig = CONCAT('===',f_char1,'===');
79158 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
79159 BEGIN
79160 SET new.f_int1 = new.f_int1 + @max_row,
79161 new.f_int2 = new.f_int2 - @max_row,
79162 new.f_charbig = '####updated per update trigger####';
79163 END|
79164 UPDATE t1
79165 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
79166 f_charbig = '####updated per update statement itself####';
79167         
79168 # check trigger-10 success:     1
79169 DROP TRIGGER trg_2;
79170 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79171 f_int2 = CAST(f_char1 AS SIGNED INT),
79172 f_charbig = CONCAT('===',f_char1,'===');
79173 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
79174 BEGIN
79175 SET new.f_int1 = @my_max1 + @counter,
79176 new.f_int2 = @my_min2 - @counter,
79177 new.f_charbig = '####updated per insert trigger####';
79178 SET @counter = @counter + 1;
79179 END|
79180 SET @counter = 1;
79181 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
79182 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
79183 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
79184 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
79185 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
79186 ORDER BY f_int1;
79187 DROP TRIGGER trg_3;
79188         
79189 # check trigger-11 success:     1
79190 DELETE FROM t1
79191 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
79192 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
79193 AND f_charbig = '####updated per insert trigger####';
79194 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
79195 BEGIN
79196 SET new.f_int1 = @my_max1 + @counter,
79197 new.f_int2 = @my_min2 - @counter,
79198 new.f_charbig = '####updated per insert trigger####';
79199 SET @counter = @counter + 1;
79200 END|
79201 SET @counter = 1;
79202 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
79203 INSERT INTO t1 (f_char1, f_char2, f_charbig)
79204 SELECT CAST(f_int1 AS CHAR),
79205 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
79206 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
79207 ORDER BY f_int1;
79208 DROP TRIGGER trg_3;
79209         
79210 # check trigger-12 success:     1
79211 DELETE FROM t1
79212 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
79213 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
79214 AND f_charbig = '####updated per insert trigger####';
79215 ANALYZE  TABLE t1;
79216 Table   Op      Msg_type        Msg_text
79217 test.t1 analyze status  OK
79218 CHECK    TABLE t1 EXTENDED;
79219 Table   Op      Msg_type        Msg_text
79220 test.t1 check   status  OK
79221 CHECKSUM TABLE t1 EXTENDED;
79222 Table   Checksum
79223 test.t1 <some_value>
79224 OPTIMIZE TABLE t1;
79225 Table   Op      Msg_type        Msg_text
79226 test.t1 optimize        status  OK
79227 # check layout success:    1
79228 REPAIR   TABLE t1 EXTENDED;
79229 Table   Op      Msg_type        Msg_text
79230 test.t1 repair  status  OK
79231 # check layout success:    1
79232 TRUNCATE t1;
79233         
79234 # check TRUNCATE success:       1
79235 # check layout success:    1
79236 # End usability test (inc/partition_check.inc)
79237 DROP TABLE t1;
79238 CREATE TABLE t1 (
79239 f_int1 INTEGER,
79240 f_int2 INTEGER,
79241 f_char1 CHAR(20),
79242 f_char2 CHAR(20),
79243 f_charbig VARCHAR(1000)
79246 PARTITION BY LIST(MOD(f_int1,4))
79247 (PARTITION part_3 VALUES IN (-3),
79248 PARTITION part_2 VALUES IN (-2),
79249 PARTITION part_1 VALUES IN (-1),
79250 PARTITION part_N VALUES IN (NULL),
79251 PARTITION part0 VALUES IN (0),
79252 PARTITION part1 VALUES IN (1),
79253 PARTITION part2 VALUES IN (2),
79254 PARTITION part3 VALUES IN (3));
79255 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
79256 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
79257 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
79258 ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10;
79259 Table   Op      Msg_type        Msg_text
79260 test.t1 repair  error   Error in list of partitions to test.t1
79261 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
79262 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
79263 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
79264 # Start usability test (inc/partition_check.inc)
79265 create_command
79266 SHOW CREATE TABLE t1;
79267 Table   Create Table
79268 t1      CREATE TABLE `t1` (
79269   `f_int1` int(11) DEFAULT NULL,
79270   `f_int2` int(11) DEFAULT NULL,
79271   `f_char1` char(20) DEFAULT NULL,
79272   `f_char2` char(20) DEFAULT NULL,
79273   `f_charbig` varchar(1000) DEFAULT NULL
79274 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
79275 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
79276 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
79277  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
79278  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
79279  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
79280  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
79281  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
79282  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
79283  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
79285 unified filelist
79286 t1#P#part0.MYD
79287 t1#P#part0.MYI
79288 t1#P#part1.MYD
79289 t1#P#part1.MYI
79290 t1#P#part2.MYD
79291 t1#P#part2.MYI
79292 t1#P#part3.MYD
79293 t1#P#part3.MYI
79294 t1#P#part_1.MYD
79295 t1#P#part_1.MYI
79296 t1#P#part_2.MYD
79297 t1#P#part_2.MYI
79298 t1#P#part_3.MYD
79299 t1#P#part_3.MYI
79300 t1#P#part_N.MYD
79301 t1#P#part_N.MYI
79302 t1.frm
79303 t1.par
79305 # check prerequisites-1 success:    1
79306 # check COUNT(*) success:    1
79307 # check MIN/MAX(f_int1) success:    1
79308 # check MIN/MAX(f_int2) success:    1
79309 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
79310 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
79311 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
79312 WHERE f_int1 IN (2,3);
79313 # check prerequisites-3 success:    1
79314 DELETE FROM t1 WHERE f_charbig = 'delete me';
79315 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
79316 # check read via f_int1 success: 1
79317 # check read via f_int2 success: 1
79318         
79319 # check multiple-1 success:     1
79320 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
79321         
79322 # check multiple-2 success:     1
79323 INSERT INTO t1 SELECT * FROM t0_template
79324 WHERE MOD(f_int1,3) = 0;
79325         
79326 # check multiple-3 success:     1
79327 UPDATE t1 SET f_int1 = f_int1 + @max_row
79328 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
79329 AND @max_row_div2 + @max_row_div4;
79330         
79331 # check multiple-4 success:     1
79332 DELETE FROM t1
79333 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
79334 AND @max_row_div2 + @max_row_div4 + @max_row;
79335         
79336 # check multiple-5 success:     1
79337 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
79338 INSERT INTO t1
79339 SET f_int1 = @cur_value , f_int2 = @cur_value,
79340 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
79341 f_charbig = '#SINGLE#';
79342         
79343 # check single-1 success:       1
79344 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
79345 INSERT INTO t1
79346 SET f_int1 = @cur_value , f_int2 = @cur_value,
79347 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
79348 f_charbig = '#SINGLE#';
79349         
79350 # check single-2 success:       1
79351 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
79352 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
79353 UPDATE t1 SET f_int1 = @cur_value2
79354 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
79355         
79356 # check single-3 success:       1
79357 SET @cur_value1= -1;
79358 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
79359 UPDATE t1 SET f_int1 = @cur_value1
79360 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
79361         
79362 # check single-4 success:       1
79363 SELECT MAX(f_int1) INTO @cur_value FROM t1;
79364 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
79365         
79366 # check single-5 success:       1
79367 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
79368         
79369 # check single-6 success:       1
79370 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
79371         
79372 # check single-7 success:       1
79373 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
79374 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
79375 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
79376 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
79377 f_charbig = '#NULL#';
79378 INSERT INTO t1
79379 SET f_int1 = NULL , f_int2 = -@max_row,
79380 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
79381 f_charbig = '#NULL#';
79382 # check null success:    1
79383         
79384 # check null-1 success:         1
79385 UPDATE t1 SET f_int1 = -@max_row
79386 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
79387 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
79388         
79389 # check null-2 success:         1
79390 UPDATE t1 SET f_int1 = NULL
79391 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
79392 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
79393         
79394 # check null-3 success:         1
79395 DELETE FROM t1
79396 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
79397 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
79398         
79399 # check null-4 success:         1
79400 DELETE FROM t1
79401 WHERE f_int1 = 0 AND f_int2 = 0
79402 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
79403 AND f_charbig = '#NULL#';
79404 SET AUTOCOMMIT= 0;
79405 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
79406 SELECT f_int1, f_int1, '', '', 'was inserted'
79407 FROM t0_template source_tab
79408 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
79409         
79410 # check transactions-1 success:         1
79411 COMMIT WORK;
79412         
79413 # check transactions-2 success:         1
79414 ROLLBACK WORK;
79415         
79416 # check transactions-3 success:         1
79417 DELETE FROM t1 WHERE f_charbig = 'was inserted';
79418 COMMIT WORK;
79419 ROLLBACK WORK;
79420         
79421 # check transactions-4 success:         1
79422 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
79423 SELECT f_int1, f_int1, '', '', 'was inserted'
79424 FROM t0_template source_tab
79425 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
79426         
79427 # check transactions-5 success:         1
79428 ROLLBACK WORK;
79429 Warnings:
79430 Warning 1196    Some non-transactional changed tables couldn't be rolled back
79431         
79432 # check transactions-6 success:         1
79433 # INFO: Storage engine used for t1 seems to be not transactional.
79434 COMMIT;
79435         
79436 # check transactions-7 success:         1
79437 DELETE FROM t1 WHERE f_charbig = 'was inserted';
79438 COMMIT WORK;
79439 SET @@session.sql_mode = 'traditional';
79440 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
79441 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
79442 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
79443 '', '', 'was inserted' FROM t0_template
79444 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
79445 ERROR 22012: Division by 0
79446 COMMIT;
79447         
79448 # check transactions-8 success:         1
79449 # INFO: Storage engine used for t1 seems to be unable to revert
79450 #       changes made by the failing statement.
79451 SET @@session.sql_mode = '';
79452 SET AUTOCOMMIT= 1;
79453 DELETE FROM t1 WHERE f_charbig = 'was inserted';
79454 COMMIT WORK;
79455 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
79456         
79457 # check special-1 success:      1
79458 UPDATE t1 SET f_charbig = '';
79459         
79460 # check special-2 success:      1
79461 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
79462 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
79463 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
79464 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79465 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79466 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79467 'just inserted' FROM t0_template
79468 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79469 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
79470 BEGIN
79471 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79472 f_charbig = 'updated by trigger'
79473       WHERE f_int1 = new.f_int1;
79474 END|
79475 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79476 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
79477 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79478         
79479 # check trigger-1 success:      1
79480 DROP TRIGGER trg_1;
79481 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79482 f_int2 = CAST(f_char1 AS SIGNED INT),
79483 f_charbig = 'just inserted'
79484    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79485 DELETE FROM t0_aux
79486 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79487 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79488 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79489 'just inserted' FROM t0_template
79490 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79491 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
79492 BEGIN
79493 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79494 f_charbig = 'updated by trigger'
79495       WHERE f_int1 = new.f_int1;
79496 END|
79497 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79498 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
79499 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79500         
79501 # check trigger-2 success:      1
79502 DROP TRIGGER trg_1;
79503 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79504 f_int2 = CAST(f_char1 AS SIGNED INT),
79505 f_charbig = 'just inserted'
79506    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79507 DELETE FROM t0_aux
79508 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79509 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79510 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79511 'just inserted' FROM t0_template
79512 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79513 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
79514 BEGIN
79515 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79516 f_charbig = 'updated by trigger'
79517       WHERE f_int1 = new.f_int1;
79518 END|
79519 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
79520 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
79521         
79522 # check trigger-3 success:      1
79523 DROP TRIGGER trg_1;
79524 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79525 f_int2 = CAST(f_char1 AS SIGNED INT),
79526 f_charbig = 'just inserted'
79527    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79528 DELETE FROM t0_aux
79529 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79530 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79531 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79532 'just inserted' FROM t0_template
79533 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79534 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
79535 BEGIN
79536 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79537 f_charbig = 'updated by trigger'
79538       WHERE f_int1 = - old.f_int1;
79539 END|
79540 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
79541 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
79542         
79543 # check trigger-4 success:      1
79544 DROP TRIGGER trg_1;
79545 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79546 f_int2 = CAST(f_char1 AS SIGNED INT),
79547 f_charbig = 'just inserted'
79548    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79549 DELETE FROM t0_aux
79550 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79551 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79552 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79553 'just inserted' FROM t0_template
79554 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79555 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
79556 BEGIN
79557 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79558 f_charbig = 'updated by trigger'
79559       WHERE f_int1 = new.f_int1;
79560 END|
79561 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
79562 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
79563         
79564 # check trigger-5 success:      1
79565 DROP TRIGGER trg_1;
79566 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79567 f_int2 = CAST(f_char1 AS SIGNED INT),
79568 f_charbig = 'just inserted'
79569    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79570 DELETE FROM t0_aux
79571 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79572 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79573 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79574 'just inserted' FROM t0_template
79575 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79576 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
79577 BEGIN
79578 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79579 f_charbig = 'updated by trigger'
79580       WHERE f_int1 = - old.f_int1;
79581 END|
79582 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
79583 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
79584         
79585 # check trigger-6 success:      1
79586 DROP TRIGGER trg_1;
79587 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79588 f_int2 = CAST(f_char1 AS SIGNED INT),
79589 f_charbig = 'just inserted'
79590    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79591 DELETE FROM t0_aux
79592 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79593 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79594 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79595 'just inserted' FROM t0_template
79596 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79597 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
79598 BEGIN
79599 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79600 f_charbig = 'updated by trigger'
79601       WHERE f_int1 = - old.f_int1;
79602 END|
79603 DELETE FROM t0_aux
79604 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
79605         
79606 # check trigger-7 success:      1
79607 DROP TRIGGER trg_1;
79608 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79609 f_int2 = CAST(f_char1 AS SIGNED INT),
79610 f_charbig = 'just inserted'
79611    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79612 DELETE FROM t0_aux
79613 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79614 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79615 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79616 'just inserted' FROM t0_template
79617 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79618 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
79619 BEGIN
79620 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79621 f_charbig = 'updated by trigger'
79622       WHERE f_int1 = - old.f_int1;
79623 END|
79624 DELETE FROM t0_aux
79625 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
79626         
79627 # check trigger-8 success:      1
79628 DROP TRIGGER trg_1;
79629 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79630 f_int2 = CAST(f_char1 AS SIGNED INT),
79631 f_charbig = 'just inserted'
79632    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79633 DELETE FROM t0_aux
79634 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79635 DELETE FROM t1
79636 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79637 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
79638 BEGIN
79639 SET new.f_int1 = old.f_int1 + @max_row,
79640 new.f_int2 = old.f_int2 - @max_row,
79641 new.f_charbig = '####updated per update trigger####';
79642 END|
79643 UPDATE t1
79644 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
79645 f_charbig = '####updated per update statement itself####';
79646         
79647 # check trigger-9 success:      1
79648 DROP TRIGGER trg_2;
79649 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79650 f_int2 = CAST(f_char1 AS SIGNED INT),
79651 f_charbig = CONCAT('===',f_char1,'===');
79652 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
79653 BEGIN
79654 SET new.f_int1 = new.f_int1 + @max_row,
79655 new.f_int2 = new.f_int2 - @max_row,
79656 new.f_charbig = '####updated per update trigger####';
79657 END|
79658 UPDATE t1
79659 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
79660 f_charbig = '####updated per update statement itself####';
79661         
79662 # check trigger-10 success:     1
79663 DROP TRIGGER trg_2;
79664 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79665 f_int2 = CAST(f_char1 AS SIGNED INT),
79666 f_charbig = CONCAT('===',f_char1,'===');
79667 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
79668 BEGIN
79669 SET new.f_int1 = @my_max1 + @counter,
79670 new.f_int2 = @my_min2 - @counter,
79671 new.f_charbig = '####updated per insert trigger####';
79672 SET @counter = @counter + 1;
79673 END|
79674 SET @counter = 1;
79675 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
79676 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
79677 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
79678 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
79679 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
79680 ORDER BY f_int1;
79681 DROP TRIGGER trg_3;
79682         
79683 # check trigger-11 success:     1
79684 DELETE FROM t1
79685 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
79686 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
79687 AND f_charbig = '####updated per insert trigger####';
79688 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
79689 BEGIN
79690 SET new.f_int1 = @my_max1 + @counter,
79691 new.f_int2 = @my_min2 - @counter,
79692 new.f_charbig = '####updated per insert trigger####';
79693 SET @counter = @counter + 1;
79694 END|
79695 SET @counter = 1;
79696 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
79697 INSERT INTO t1 (f_char1, f_char2, f_charbig)
79698 SELECT CAST(f_int1 AS CHAR),
79699 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
79700 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
79701 ORDER BY f_int1;
79702 DROP TRIGGER trg_3;
79703         
79704 # check trigger-12 success:     1
79705 DELETE FROM t1
79706 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
79707 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
79708 AND f_charbig = '####updated per insert trigger####';
79709 ANALYZE  TABLE t1;
79710 Table   Op      Msg_type        Msg_text
79711 test.t1 analyze status  OK
79712 CHECK    TABLE t1 EXTENDED;
79713 Table   Op      Msg_type        Msg_text
79714 test.t1 check   status  OK
79715 CHECKSUM TABLE t1 EXTENDED;
79716 Table   Checksum
79717 test.t1 <some_value>
79718 OPTIMIZE TABLE t1;
79719 Table   Op      Msg_type        Msg_text
79720 test.t1 optimize        status  OK
79721 # check layout success:    1
79722 REPAIR   TABLE t1 EXTENDED;
79723 Table   Op      Msg_type        Msg_text
79724 test.t1 repair  status  OK
79725 # check layout success:    1
79726 TRUNCATE t1;
79727         
79728 # check TRUNCATE success:       1
79729 # check layout success:    1
79730 # End usability test (inc/partition_check.inc)
79731 DROP TABLE t1;
79732 CREATE TABLE t1 (
79733 f_int1 INTEGER,
79734 f_int2 INTEGER,
79735 f_char1 CHAR(20),
79736 f_char2 CHAR(20),
79737 f_charbig VARCHAR(1000)
79740 PARTITION BY RANGE(f_int1)
79741 (PARTITION parta VALUES LESS THAN (0),
79742 PARTITION part_1 VALUES LESS THAN (5),
79743 PARTITION part_2 VALUES LESS THAN (10),
79744 PARTITION part_3 VALUES LESS THAN (10 + 5),
79745 PARTITION part_4 VALUES LESS THAN (20),
79746 PARTITION part_5 VALUES LESS THAN (2147483646));
79747 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
79748 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
79749 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
79750 ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10;
79751 Table   Op      Msg_type        Msg_text
79752 test.t1 repair  error   Error in list of partitions to test.t1
79753 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
79754 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
79755 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
79756 # Start usability test (inc/partition_check.inc)
79757 create_command
79758 SHOW CREATE TABLE t1;
79759 Table   Create Table
79760 t1      CREATE TABLE `t1` (
79761   `f_int1` int(11) DEFAULT NULL,
79762   `f_int2` int(11) DEFAULT NULL,
79763   `f_char1` char(20) DEFAULT NULL,
79764   `f_char2` char(20) DEFAULT NULL,
79765   `f_charbig` varchar(1000) DEFAULT NULL
79766 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
79767 /*!50100 PARTITION BY RANGE (f_int1)
79768 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
79769  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
79770  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
79771  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
79772  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
79773  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
79775 unified filelist
79776 t1#P#part_1.MYD
79777 t1#P#part_1.MYI
79778 t1#P#part_2.MYD
79779 t1#P#part_2.MYI
79780 t1#P#part_3.MYD
79781 t1#P#part_3.MYI
79782 t1#P#part_4.MYD
79783 t1#P#part_4.MYI
79784 t1#P#part_5.MYD
79785 t1#P#part_5.MYI
79786 t1#P#parta.MYD
79787 t1#P#parta.MYI
79788 t1.frm
79789 t1.par
79791 # check prerequisites-1 success:    1
79792 # check COUNT(*) success:    1
79793 # check MIN/MAX(f_int1) success:    1
79794 # check MIN/MAX(f_int2) success:    1
79795 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
79796 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
79797 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
79798 WHERE f_int1 IN (2,3);
79799 # check prerequisites-3 success:    1
79800 DELETE FROM t1 WHERE f_charbig = 'delete me';
79801 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
79802 # check read via f_int1 success: 1
79803 # check read via f_int2 success: 1
79804         
79805 # check multiple-1 success:     1
79806 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
79807         
79808 # check multiple-2 success:     1
79809 INSERT INTO t1 SELECT * FROM t0_template
79810 WHERE MOD(f_int1,3) = 0;
79811         
79812 # check multiple-3 success:     1
79813 UPDATE t1 SET f_int1 = f_int1 + @max_row
79814 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
79815 AND @max_row_div2 + @max_row_div4;
79816         
79817 # check multiple-4 success:     1
79818 DELETE FROM t1
79819 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
79820 AND @max_row_div2 + @max_row_div4 + @max_row;
79821         
79822 # check multiple-5 success:     1
79823 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
79824 INSERT INTO t1
79825 SET f_int1 = @cur_value , f_int2 = @cur_value,
79826 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
79827 f_charbig = '#SINGLE#';
79828         
79829 # check single-1 success:       1
79830 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
79831 INSERT INTO t1
79832 SET f_int1 = @cur_value , f_int2 = @cur_value,
79833 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
79834 f_charbig = '#SINGLE#';
79835         
79836 # check single-2 success:       1
79837 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
79838 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
79839 UPDATE t1 SET f_int1 = @cur_value2
79840 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
79841         
79842 # check single-3 success:       1
79843 SET @cur_value1= -1;
79844 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
79845 UPDATE t1 SET f_int1 = @cur_value1
79846 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
79847         
79848 # check single-4 success:       1
79849 SELECT MAX(f_int1) INTO @cur_value FROM t1;
79850 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
79851         
79852 # check single-5 success:       1
79853 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
79854         
79855 # check single-6 success:       1
79856 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
79857 ERROR HY000: Table has no partition for value 2147483647
79858 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
79859 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
79860 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
79861 f_charbig = '#NULL#';
79862 INSERT INTO t1
79863 SET f_int1 = NULL , f_int2 = -@max_row,
79864 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
79865 f_charbig = '#NULL#';
79866 # check null success:    1
79867         
79868 # check null-1 success:         1
79869 UPDATE t1 SET f_int1 = -@max_row
79870 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
79871 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
79872         
79873 # check null-2 success:         1
79874 UPDATE t1 SET f_int1 = NULL
79875 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
79876 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
79877         
79878 # check null-3 success:         1
79879 DELETE FROM t1
79880 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
79881 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
79882         
79883 # check null-4 success:         1
79884 DELETE FROM t1
79885 WHERE f_int1 = 0 AND f_int2 = 0
79886 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
79887 AND f_charbig = '#NULL#';
79888 SET AUTOCOMMIT= 0;
79889 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
79890 SELECT f_int1, f_int1, '', '', 'was inserted'
79891 FROM t0_template source_tab
79892 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
79893         
79894 # check transactions-1 success:         1
79895 COMMIT WORK;
79896         
79897 # check transactions-2 success:         1
79898 ROLLBACK WORK;
79899         
79900 # check transactions-3 success:         1
79901 DELETE FROM t1 WHERE f_charbig = 'was inserted';
79902 COMMIT WORK;
79903 ROLLBACK WORK;
79904         
79905 # check transactions-4 success:         1
79906 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
79907 SELECT f_int1, f_int1, '', '', 'was inserted'
79908 FROM t0_template source_tab
79909 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
79910         
79911 # check transactions-5 success:         1
79912 ROLLBACK WORK;
79913 Warnings:
79914 Warning 1196    Some non-transactional changed tables couldn't be rolled back
79915         
79916 # check transactions-6 success:         1
79917 # INFO: Storage engine used for t1 seems to be not transactional.
79918 COMMIT;
79919         
79920 # check transactions-7 success:         1
79921 DELETE FROM t1 WHERE f_charbig = 'was inserted';
79922 COMMIT WORK;
79923 SET @@session.sql_mode = 'traditional';
79924 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
79925 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
79926 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
79927 '', '', 'was inserted' FROM t0_template
79928 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
79929 ERROR 22012: Division by 0
79930 COMMIT;
79931         
79932 # check transactions-8 success:         1
79933 # INFO: Storage engine used for t1 seems to be unable to revert
79934 #       changes made by the failing statement.
79935 SET @@session.sql_mode = '';
79936 SET AUTOCOMMIT= 1;
79937 DELETE FROM t1 WHERE f_charbig = 'was inserted';
79938 COMMIT WORK;
79939 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
79940         
79941 # check special-1 success:      1
79942 UPDATE t1 SET f_charbig = '';
79943         
79944 # check special-2 success:      1
79945 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
79946 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
79947 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
79948 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79949 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79950 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79951 'just inserted' FROM t0_template
79952 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79953 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
79954 BEGIN
79955 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79956 f_charbig = 'updated by trigger'
79957       WHERE f_int1 = new.f_int1;
79958 END|
79959 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79960 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
79961 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79962         
79963 # check trigger-1 success:      1
79964 DROP TRIGGER trg_1;
79965 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79966 f_int2 = CAST(f_char1 AS SIGNED INT),
79967 f_charbig = 'just inserted'
79968    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79969 DELETE FROM t0_aux
79970 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79971 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79972 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79973 'just inserted' FROM t0_template
79974 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79975 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
79976 BEGIN
79977 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
79978 f_charbig = 'updated by trigger'
79979       WHERE f_int1 = new.f_int1;
79980 END|
79981 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79982 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
79983 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79984         
79985 # check trigger-2 success:      1
79986 DROP TRIGGER trg_1;
79987 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
79988 f_int2 = CAST(f_char1 AS SIGNED INT),
79989 f_charbig = 'just inserted'
79990    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
79991 DELETE FROM t0_aux
79992 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79993 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
79994 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
79995 'just inserted' FROM t0_template
79996 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
79997 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
79998 BEGIN
79999 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80000 f_charbig = 'updated by trigger'
80001       WHERE f_int1 = new.f_int1;
80002 END|
80003 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
80004 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
80005         
80006 # check trigger-3 success:      1
80007 DROP TRIGGER trg_1;
80008 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80009 f_int2 = CAST(f_char1 AS SIGNED INT),
80010 f_charbig = 'just inserted'
80011    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80012 DELETE FROM t0_aux
80013 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80014 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80015 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80016 'just inserted' FROM t0_template
80017 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80018 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
80019 BEGIN
80020 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80021 f_charbig = 'updated by trigger'
80022       WHERE f_int1 = - old.f_int1;
80023 END|
80024 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
80025 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
80026         
80027 # check trigger-4 success:      1
80028 DROP TRIGGER trg_1;
80029 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80030 f_int2 = CAST(f_char1 AS SIGNED INT),
80031 f_charbig = 'just inserted'
80032    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80033 DELETE FROM t0_aux
80034 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80035 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80036 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80037 'just inserted' FROM t0_template
80038 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80039 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
80040 BEGIN
80041 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80042 f_charbig = 'updated by trigger'
80043       WHERE f_int1 = new.f_int1;
80044 END|
80045 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
80046 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
80047         
80048 # check trigger-5 success:      1
80049 DROP TRIGGER trg_1;
80050 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80051 f_int2 = CAST(f_char1 AS SIGNED INT),
80052 f_charbig = 'just inserted'
80053    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80054 DELETE FROM t0_aux
80055 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80056 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80057 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80058 'just inserted' FROM t0_template
80059 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80060 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
80061 BEGIN
80062 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80063 f_charbig = 'updated by trigger'
80064       WHERE f_int1 = - old.f_int1;
80065 END|
80066 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
80067 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
80068         
80069 # check trigger-6 success:      1
80070 DROP TRIGGER trg_1;
80071 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80072 f_int2 = CAST(f_char1 AS SIGNED INT),
80073 f_charbig = 'just inserted'
80074    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80075 DELETE FROM t0_aux
80076 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80077 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80078 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80079 'just inserted' FROM t0_template
80080 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80081 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
80082 BEGIN
80083 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80084 f_charbig = 'updated by trigger'
80085       WHERE f_int1 = - old.f_int1;
80086 END|
80087 DELETE FROM t0_aux
80088 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
80089         
80090 # check trigger-7 success:      1
80091 DROP TRIGGER trg_1;
80092 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80093 f_int2 = CAST(f_char1 AS SIGNED INT),
80094 f_charbig = 'just inserted'
80095    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80096 DELETE FROM t0_aux
80097 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80098 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80099 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80100 'just inserted' FROM t0_template
80101 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80102 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
80103 BEGIN
80104 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80105 f_charbig = 'updated by trigger'
80106       WHERE f_int1 = - old.f_int1;
80107 END|
80108 DELETE FROM t0_aux
80109 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
80110         
80111 # check trigger-8 success:      1
80112 DROP TRIGGER trg_1;
80113 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80114 f_int2 = CAST(f_char1 AS SIGNED INT),
80115 f_charbig = 'just inserted'
80116    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80117 DELETE FROM t0_aux
80118 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80119 DELETE FROM t1
80120 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80121 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
80122 BEGIN
80123 SET new.f_int1 = old.f_int1 + @max_row,
80124 new.f_int2 = old.f_int2 - @max_row,
80125 new.f_charbig = '####updated per update trigger####';
80126 END|
80127 UPDATE t1
80128 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
80129 f_charbig = '####updated per update statement itself####';
80130         
80131 # check trigger-9 success:      1
80132 DROP TRIGGER trg_2;
80133 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80134 f_int2 = CAST(f_char1 AS SIGNED INT),
80135 f_charbig = CONCAT('===',f_char1,'===');
80136 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
80137 BEGIN
80138 SET new.f_int1 = new.f_int1 + @max_row,
80139 new.f_int2 = new.f_int2 - @max_row,
80140 new.f_charbig = '####updated per update trigger####';
80141 END|
80142 UPDATE t1
80143 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
80144 f_charbig = '####updated per update statement itself####';
80145         
80146 # check trigger-10 success:     1
80147 DROP TRIGGER trg_2;
80148 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80149 f_int2 = CAST(f_char1 AS SIGNED INT),
80150 f_charbig = CONCAT('===',f_char1,'===');
80151 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
80152 BEGIN
80153 SET new.f_int1 = @my_max1 + @counter,
80154 new.f_int2 = @my_min2 - @counter,
80155 new.f_charbig = '####updated per insert trigger####';
80156 SET @counter = @counter + 1;
80157 END|
80158 SET @counter = 1;
80159 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
80160 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
80161 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
80162 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
80163 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
80164 ORDER BY f_int1;
80165 DROP TRIGGER trg_3;
80166         
80167 # check trigger-11 success:     1
80168 DELETE FROM t1
80169 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
80170 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
80171 AND f_charbig = '####updated per insert trigger####';
80172 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
80173 BEGIN
80174 SET new.f_int1 = @my_max1 + @counter,
80175 new.f_int2 = @my_min2 - @counter,
80176 new.f_charbig = '####updated per insert trigger####';
80177 SET @counter = @counter + 1;
80178 END|
80179 SET @counter = 1;
80180 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
80181 INSERT INTO t1 (f_char1, f_char2, f_charbig)
80182 SELECT CAST(f_int1 AS CHAR),
80183 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
80184 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
80185 ORDER BY f_int1;
80186 DROP TRIGGER trg_3;
80187         
80188 # check trigger-12 success:     1
80189 DELETE FROM t1
80190 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
80191 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
80192 AND f_charbig = '####updated per insert trigger####';
80193 ANALYZE  TABLE t1;
80194 Table   Op      Msg_type        Msg_text
80195 test.t1 analyze status  OK
80196 CHECK    TABLE t1 EXTENDED;
80197 Table   Op      Msg_type        Msg_text
80198 test.t1 check   status  OK
80199 CHECKSUM TABLE t1 EXTENDED;
80200 Table   Checksum
80201 test.t1 <some_value>
80202 OPTIMIZE TABLE t1;
80203 Table   Op      Msg_type        Msg_text
80204 test.t1 optimize        status  OK
80205 # check layout success:    1
80206 REPAIR   TABLE t1 EXTENDED;
80207 Table   Op      Msg_type        Msg_text
80208 test.t1 repair  status  OK
80209 # check layout success:    1
80210 TRUNCATE t1;
80211         
80212 # check TRUNCATE success:       1
80213 # check layout success:    1
80214 # End usability test (inc/partition_check.inc)
80215 DROP TABLE t1;
80216 CREATE TABLE t1 (
80217 f_int1 INTEGER,
80218 f_int2 INTEGER,
80219 f_char1 CHAR(20),
80220 f_char2 CHAR(20),
80221 f_charbig VARCHAR(1000)
80224 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
80225 (PARTITION part_1 VALUES LESS THAN (0),
80226 PARTITION part_2 VALUES LESS THAN (5),
80227 PARTITION part_3 VALUES LESS THAN (10),
80228 PARTITION part_4 VALUES LESS THAN (2147483646));
80229 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
80230 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
80231 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
80232 ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10;
80233 Table   Op      Msg_type        Msg_text
80234 test.t1 repair  error   Error in list of partitions to test.t1
80235 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
80236 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
80237 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
80238 # Start usability test (inc/partition_check.inc)
80239 create_command
80240 SHOW CREATE TABLE t1;
80241 Table   Create Table
80242 t1      CREATE TABLE `t1` (
80243   `f_int1` int(11) DEFAULT NULL,
80244   `f_int2` int(11) DEFAULT NULL,
80245   `f_char1` char(20) DEFAULT NULL,
80246   `f_char2` char(20) DEFAULT NULL,
80247   `f_charbig` varchar(1000) DEFAULT NULL
80248 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
80249 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
80250 SUBPARTITION BY HASH (f_int1)
80251 SUBPARTITIONS 2
80252 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
80253  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
80254  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
80255  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
80257 unified filelist
80258 t1#P#part_1#SP#part_1sp0.MYD
80259 t1#P#part_1#SP#part_1sp0.MYI
80260 t1#P#part_1#SP#part_1sp1.MYD
80261 t1#P#part_1#SP#part_1sp1.MYI
80262 t1#P#part_2#SP#part_2sp0.MYD
80263 t1#P#part_2#SP#part_2sp0.MYI
80264 t1#P#part_2#SP#part_2sp1.MYD
80265 t1#P#part_2#SP#part_2sp1.MYI
80266 t1#P#part_3#SP#part_3sp0.MYD
80267 t1#P#part_3#SP#part_3sp0.MYI
80268 t1#P#part_3#SP#part_3sp1.MYD
80269 t1#P#part_3#SP#part_3sp1.MYI
80270 t1#P#part_4#SP#part_4sp0.MYD
80271 t1#P#part_4#SP#part_4sp0.MYI
80272 t1#P#part_4#SP#part_4sp1.MYD
80273 t1#P#part_4#SP#part_4sp1.MYI
80274 t1.frm
80275 t1.par
80277 # check prerequisites-1 success:    1
80278 # check COUNT(*) success:    1
80279 # check MIN/MAX(f_int1) success:    1
80280 # check MIN/MAX(f_int2) success:    1
80281 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
80282 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
80283 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
80284 WHERE f_int1 IN (2,3);
80285 # check prerequisites-3 success:    1
80286 DELETE FROM t1 WHERE f_charbig = 'delete me';
80287 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
80288 # check read via f_int1 success: 1
80289 # check read via f_int2 success: 1
80290         
80291 # check multiple-1 success:     1
80292 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
80293         
80294 # check multiple-2 success:     1
80295 INSERT INTO t1 SELECT * FROM t0_template
80296 WHERE MOD(f_int1,3) = 0;
80297         
80298 # check multiple-3 success:     1
80299 UPDATE t1 SET f_int1 = f_int1 + @max_row
80300 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
80301 AND @max_row_div2 + @max_row_div4;
80302         
80303 # check multiple-4 success:     1
80304 DELETE FROM t1
80305 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
80306 AND @max_row_div2 + @max_row_div4 + @max_row;
80307         
80308 # check multiple-5 success:     1
80309 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
80310 INSERT INTO t1
80311 SET f_int1 = @cur_value , f_int2 = @cur_value,
80312 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
80313 f_charbig = '#SINGLE#';
80314         
80315 # check single-1 success:       1
80316 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
80317 INSERT INTO t1
80318 SET f_int1 = @cur_value , f_int2 = @cur_value,
80319 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
80320 f_charbig = '#SINGLE#';
80321         
80322 # check single-2 success:       1
80323 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
80324 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
80325 UPDATE t1 SET f_int1 = @cur_value2
80326 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
80327         
80328 # check single-3 success:       1
80329 SET @cur_value1= -1;
80330 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
80331 UPDATE t1 SET f_int1 = @cur_value1
80332 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
80333         
80334 # check single-4 success:       1
80335 SELECT MAX(f_int1) INTO @cur_value FROM t1;
80336 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
80337         
80338 # check single-5 success:       1
80339 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
80340         
80341 # check single-6 success:       1
80342 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
80343         
80344 # check single-7 success:       1
80345 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
80346 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
80347 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
80348 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
80349 f_charbig = '#NULL#';
80350 INSERT INTO t1
80351 SET f_int1 = NULL , f_int2 = -@max_row,
80352 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
80353 f_charbig = '#NULL#';
80354 # check null success:    1
80355         
80356 # check null-1 success:         1
80357 UPDATE t1 SET f_int1 = -@max_row
80358 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
80359 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
80360         
80361 # check null-2 success:         1
80362 UPDATE t1 SET f_int1 = NULL
80363 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
80364 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
80365         
80366 # check null-3 success:         1
80367 DELETE FROM t1
80368 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
80369 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
80370         
80371 # check null-4 success:         1
80372 DELETE FROM t1
80373 WHERE f_int1 = 0 AND f_int2 = 0
80374 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
80375 AND f_charbig = '#NULL#';
80376 SET AUTOCOMMIT= 0;
80377 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
80378 SELECT f_int1, f_int1, '', '', 'was inserted'
80379 FROM t0_template source_tab
80380 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
80381         
80382 # check transactions-1 success:         1
80383 COMMIT WORK;
80384         
80385 # check transactions-2 success:         1
80386 ROLLBACK WORK;
80387         
80388 # check transactions-3 success:         1
80389 DELETE FROM t1 WHERE f_charbig = 'was inserted';
80390 COMMIT WORK;
80391 ROLLBACK WORK;
80392         
80393 # check transactions-4 success:         1
80394 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
80395 SELECT f_int1, f_int1, '', '', 'was inserted'
80396 FROM t0_template source_tab
80397 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
80398         
80399 # check transactions-5 success:         1
80400 ROLLBACK WORK;
80401 Warnings:
80402 Warning 1196    Some non-transactional changed tables couldn't be rolled back
80403         
80404 # check transactions-6 success:         1
80405 # INFO: Storage engine used for t1 seems to be not transactional.
80406 COMMIT;
80407         
80408 # check transactions-7 success:         1
80409 DELETE FROM t1 WHERE f_charbig = 'was inserted';
80410 COMMIT WORK;
80411 SET @@session.sql_mode = 'traditional';
80412 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
80413 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
80414 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
80415 '', '', 'was inserted' FROM t0_template
80416 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
80417 ERROR 22012: Division by 0
80418 COMMIT;
80419         
80420 # check transactions-8 success:         1
80421 # INFO: Storage engine used for t1 seems to be unable to revert
80422 #       changes made by the failing statement.
80423 SET @@session.sql_mode = '';
80424 SET AUTOCOMMIT= 1;
80425 DELETE FROM t1 WHERE f_charbig = 'was inserted';
80426 COMMIT WORK;
80427 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
80428         
80429 # check special-1 success:      1
80430 UPDATE t1 SET f_charbig = '';
80431         
80432 # check special-2 success:      1
80433 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
80434 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
80435 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
80436 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80437 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80438 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80439 'just inserted' FROM t0_template
80440 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80441 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
80442 BEGIN
80443 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80444 f_charbig = 'updated by trigger'
80445       WHERE f_int1 = new.f_int1;
80446 END|
80447 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80448 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
80449 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80450         
80451 # check trigger-1 success:      1
80452 DROP TRIGGER trg_1;
80453 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80454 f_int2 = CAST(f_char1 AS SIGNED INT),
80455 f_charbig = 'just inserted'
80456    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80457 DELETE FROM t0_aux
80458 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80459 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80460 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80461 'just inserted' FROM t0_template
80462 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80463 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
80464 BEGIN
80465 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80466 f_charbig = 'updated by trigger'
80467       WHERE f_int1 = new.f_int1;
80468 END|
80469 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80470 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
80471 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80472         
80473 # check trigger-2 success:      1
80474 DROP TRIGGER trg_1;
80475 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80476 f_int2 = CAST(f_char1 AS SIGNED INT),
80477 f_charbig = 'just inserted'
80478    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80479 DELETE FROM t0_aux
80480 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80481 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80482 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80483 'just inserted' FROM t0_template
80484 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80485 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
80486 BEGIN
80487 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80488 f_charbig = 'updated by trigger'
80489       WHERE f_int1 = new.f_int1;
80490 END|
80491 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
80492 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
80493         
80494 # check trigger-3 success:      1
80495 DROP TRIGGER trg_1;
80496 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80497 f_int2 = CAST(f_char1 AS SIGNED INT),
80498 f_charbig = 'just inserted'
80499    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80500 DELETE FROM t0_aux
80501 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80502 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80503 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80504 'just inserted' FROM t0_template
80505 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80506 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
80507 BEGIN
80508 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80509 f_charbig = 'updated by trigger'
80510       WHERE f_int1 = - old.f_int1;
80511 END|
80512 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
80513 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
80514         
80515 # check trigger-4 success:      1
80516 DROP TRIGGER trg_1;
80517 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80518 f_int2 = CAST(f_char1 AS SIGNED INT),
80519 f_charbig = 'just inserted'
80520    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80521 DELETE FROM t0_aux
80522 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80523 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80524 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80525 'just inserted' FROM t0_template
80526 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80527 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
80528 BEGIN
80529 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80530 f_charbig = 'updated by trigger'
80531       WHERE f_int1 = new.f_int1;
80532 END|
80533 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
80534 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
80535         
80536 # check trigger-5 success:      1
80537 DROP TRIGGER trg_1;
80538 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80539 f_int2 = CAST(f_char1 AS SIGNED INT),
80540 f_charbig = 'just inserted'
80541    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80542 DELETE FROM t0_aux
80543 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80544 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80545 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80546 'just inserted' FROM t0_template
80547 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80548 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
80549 BEGIN
80550 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80551 f_charbig = 'updated by trigger'
80552       WHERE f_int1 = - old.f_int1;
80553 END|
80554 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
80555 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
80556         
80557 # check trigger-6 success:      1
80558 DROP TRIGGER trg_1;
80559 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80560 f_int2 = CAST(f_char1 AS SIGNED INT),
80561 f_charbig = 'just inserted'
80562    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80563 DELETE FROM t0_aux
80564 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80565 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80566 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80567 'just inserted' FROM t0_template
80568 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80569 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
80570 BEGIN
80571 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80572 f_charbig = 'updated by trigger'
80573       WHERE f_int1 = - old.f_int1;
80574 END|
80575 DELETE FROM t0_aux
80576 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
80577         
80578 # check trigger-7 success:      1
80579 DROP TRIGGER trg_1;
80580 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80581 f_int2 = CAST(f_char1 AS SIGNED INT),
80582 f_charbig = 'just inserted'
80583    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80584 DELETE FROM t0_aux
80585 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80586 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80587 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80588 'just inserted' FROM t0_template
80589 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80590 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
80591 BEGIN
80592 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80593 f_charbig = 'updated by trigger'
80594       WHERE f_int1 = - old.f_int1;
80595 END|
80596 DELETE FROM t0_aux
80597 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
80598         
80599 # check trigger-8 success:      1
80600 DROP TRIGGER trg_1;
80601 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80602 f_int2 = CAST(f_char1 AS SIGNED INT),
80603 f_charbig = 'just inserted'
80604    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80605 DELETE FROM t0_aux
80606 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80607 DELETE FROM t1
80608 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80609 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
80610 BEGIN
80611 SET new.f_int1 = old.f_int1 + @max_row,
80612 new.f_int2 = old.f_int2 - @max_row,
80613 new.f_charbig = '####updated per update trigger####';
80614 END|
80615 UPDATE t1
80616 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
80617 f_charbig = '####updated per update statement itself####';
80618         
80619 # check trigger-9 success:      1
80620 DROP TRIGGER trg_2;
80621 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80622 f_int2 = CAST(f_char1 AS SIGNED INT),
80623 f_charbig = CONCAT('===',f_char1,'===');
80624 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
80625 BEGIN
80626 SET new.f_int1 = new.f_int1 + @max_row,
80627 new.f_int2 = new.f_int2 - @max_row,
80628 new.f_charbig = '####updated per update trigger####';
80629 END|
80630 UPDATE t1
80631 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
80632 f_charbig = '####updated per update statement itself####';
80633         
80634 # check trigger-10 success:     1
80635 DROP TRIGGER trg_2;
80636 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80637 f_int2 = CAST(f_char1 AS SIGNED INT),
80638 f_charbig = CONCAT('===',f_char1,'===');
80639 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
80640 BEGIN
80641 SET new.f_int1 = @my_max1 + @counter,
80642 new.f_int2 = @my_min2 - @counter,
80643 new.f_charbig = '####updated per insert trigger####';
80644 SET @counter = @counter + 1;
80645 END|
80646 SET @counter = 1;
80647 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
80648 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
80649 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
80650 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
80651 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
80652 ORDER BY f_int1;
80653 DROP TRIGGER trg_3;
80654         
80655 # check trigger-11 success:     1
80656 DELETE FROM t1
80657 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
80658 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
80659 AND f_charbig = '####updated per insert trigger####';
80660 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
80661 BEGIN
80662 SET new.f_int1 = @my_max1 + @counter,
80663 new.f_int2 = @my_min2 - @counter,
80664 new.f_charbig = '####updated per insert trigger####';
80665 SET @counter = @counter + 1;
80666 END|
80667 SET @counter = 1;
80668 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
80669 INSERT INTO t1 (f_char1, f_char2, f_charbig)
80670 SELECT CAST(f_int1 AS CHAR),
80671 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
80672 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
80673 ORDER BY f_int1;
80674 DROP TRIGGER trg_3;
80675         
80676 # check trigger-12 success:     1
80677 DELETE FROM t1
80678 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
80679 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
80680 AND f_charbig = '####updated per insert trigger####';
80681 ANALYZE  TABLE t1;
80682 Table   Op      Msg_type        Msg_text
80683 test.t1 analyze status  OK
80684 CHECK    TABLE t1 EXTENDED;
80685 Table   Op      Msg_type        Msg_text
80686 test.t1 check   status  OK
80687 CHECKSUM TABLE t1 EXTENDED;
80688 Table   Checksum
80689 test.t1 <some_value>
80690 OPTIMIZE TABLE t1;
80691 Table   Op      Msg_type        Msg_text
80692 test.t1 optimize        status  OK
80693 # check layout success:    1
80694 REPAIR   TABLE t1 EXTENDED;
80695 Table   Op      Msg_type        Msg_text
80696 test.t1 repair  status  OK
80697 # check layout success:    1
80698 TRUNCATE t1;
80699         
80700 # check TRUNCATE success:       1
80701 # check layout success:    1
80702 # End usability test (inc/partition_check.inc)
80703 DROP TABLE t1;
80704 CREATE TABLE t1 (
80705 f_int1 INTEGER,
80706 f_int2 INTEGER,
80707 f_char1 CHAR(20),
80708 f_char2 CHAR(20),
80709 f_charbig VARCHAR(1000)
80712 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
80713 (PARTITION part_1 VALUES LESS THAN (0)
80714 (SUBPARTITION subpart11, SUBPARTITION subpart12),
80715 PARTITION part_2 VALUES LESS THAN (5)
80716 (SUBPARTITION subpart21, SUBPARTITION subpart22),
80717 PARTITION part_3 VALUES LESS THAN (10)
80718 (SUBPARTITION subpart31, SUBPARTITION subpart32),
80719 PARTITION part_4 VALUES LESS THAN (2147483646)
80720 (SUBPARTITION subpart41, SUBPARTITION subpart42));
80721 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
80722 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
80723 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
80724 ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10;
80725 Table   Op      Msg_type        Msg_text
80726 test.t1 repair  error   Error in list of partitions to test.t1
80727 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
80728 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
80729 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
80730 # Start usability test (inc/partition_check.inc)
80731 create_command
80732 SHOW CREATE TABLE t1;
80733 Table   Create Table
80734 t1      CREATE TABLE `t1` (
80735   `f_int1` int(11) DEFAULT NULL,
80736   `f_int2` int(11) DEFAULT NULL,
80737   `f_char1` char(20) DEFAULT NULL,
80738   `f_char2` char(20) DEFAULT NULL,
80739   `f_charbig` varchar(1000) DEFAULT NULL
80740 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
80741 /*!50100 PARTITION BY RANGE (f_int1)
80742 SUBPARTITION BY KEY (f_int1)
80743 (PARTITION part_1 VALUES LESS THAN (0)
80744  (SUBPARTITION subpart11 ENGINE = MyISAM,
80745   SUBPARTITION subpart12 ENGINE = MyISAM),
80746  PARTITION part_2 VALUES LESS THAN (5)
80747  (SUBPARTITION subpart21 ENGINE = MyISAM,
80748   SUBPARTITION subpart22 ENGINE = MyISAM),
80749  PARTITION part_3 VALUES LESS THAN (10)
80750  (SUBPARTITION subpart31 ENGINE = MyISAM,
80751   SUBPARTITION subpart32 ENGINE = MyISAM),
80752  PARTITION part_4 VALUES LESS THAN (2147483646)
80753  (SUBPARTITION subpart41 ENGINE = MyISAM,
80754   SUBPARTITION subpart42 ENGINE = MyISAM)) */
80756 unified filelist
80757 t1#P#part_1#SP#subpart11.MYD
80758 t1#P#part_1#SP#subpart11.MYI
80759 t1#P#part_1#SP#subpart12.MYD
80760 t1#P#part_1#SP#subpart12.MYI
80761 t1#P#part_2#SP#subpart21.MYD
80762 t1#P#part_2#SP#subpart21.MYI
80763 t1#P#part_2#SP#subpart22.MYD
80764 t1#P#part_2#SP#subpart22.MYI
80765 t1#P#part_3#SP#subpart31.MYD
80766 t1#P#part_3#SP#subpart31.MYI
80767 t1#P#part_3#SP#subpart32.MYD
80768 t1#P#part_3#SP#subpart32.MYI
80769 t1#P#part_4#SP#subpart41.MYD
80770 t1#P#part_4#SP#subpart41.MYI
80771 t1#P#part_4#SP#subpart42.MYD
80772 t1#P#part_4#SP#subpart42.MYI
80773 t1.frm
80774 t1.par
80776 # check prerequisites-1 success:    1
80777 # check COUNT(*) success:    1
80778 # check MIN/MAX(f_int1) success:    1
80779 # check MIN/MAX(f_int2) success:    1
80780 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
80781 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
80782 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
80783 WHERE f_int1 IN (2,3);
80784 # check prerequisites-3 success:    1
80785 DELETE FROM t1 WHERE f_charbig = 'delete me';
80786 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
80787 # check read via f_int1 success: 1
80788 # check read via f_int2 success: 1
80789         
80790 # check multiple-1 success:     1
80791 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
80792         
80793 # check multiple-2 success:     1
80794 INSERT INTO t1 SELECT * FROM t0_template
80795 WHERE MOD(f_int1,3) = 0;
80796         
80797 # check multiple-3 success:     1
80798 UPDATE t1 SET f_int1 = f_int1 + @max_row
80799 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
80800 AND @max_row_div2 + @max_row_div4;
80801         
80802 # check multiple-4 success:     1
80803 DELETE FROM t1
80804 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
80805 AND @max_row_div2 + @max_row_div4 + @max_row;
80806         
80807 # check multiple-5 success:     1
80808 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
80809 INSERT INTO t1
80810 SET f_int1 = @cur_value , f_int2 = @cur_value,
80811 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
80812 f_charbig = '#SINGLE#';
80813         
80814 # check single-1 success:       1
80815 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
80816 INSERT INTO t1
80817 SET f_int1 = @cur_value , f_int2 = @cur_value,
80818 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
80819 f_charbig = '#SINGLE#';
80820         
80821 # check single-2 success:       1
80822 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
80823 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
80824 UPDATE t1 SET f_int1 = @cur_value2
80825 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
80826         
80827 # check single-3 success:       1
80828 SET @cur_value1= -1;
80829 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
80830 UPDATE t1 SET f_int1 = @cur_value1
80831 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
80832         
80833 # check single-4 success:       1
80834 SELECT MAX(f_int1) INTO @cur_value FROM t1;
80835 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
80836         
80837 # check single-5 success:       1
80838 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
80839         
80840 # check single-6 success:       1
80841 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
80842 ERROR HY000: Table has no partition for value 2147483647
80843 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
80844 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
80845 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
80846 f_charbig = '#NULL#';
80847 INSERT INTO t1
80848 SET f_int1 = NULL , f_int2 = -@max_row,
80849 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
80850 f_charbig = '#NULL#';
80851 # check null success:    1
80852         
80853 # check null-1 success:         1
80854 UPDATE t1 SET f_int1 = -@max_row
80855 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
80856 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
80857         
80858 # check null-2 success:         1
80859 UPDATE t1 SET f_int1 = NULL
80860 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
80861 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
80862         
80863 # check null-3 success:         1
80864 DELETE FROM t1
80865 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
80866 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
80867         
80868 # check null-4 success:         1
80869 DELETE FROM t1
80870 WHERE f_int1 = 0 AND f_int2 = 0
80871 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
80872 AND f_charbig = '#NULL#';
80873 SET AUTOCOMMIT= 0;
80874 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
80875 SELECT f_int1, f_int1, '', '', 'was inserted'
80876 FROM t0_template source_tab
80877 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
80878         
80879 # check transactions-1 success:         1
80880 COMMIT WORK;
80881         
80882 # check transactions-2 success:         1
80883 ROLLBACK WORK;
80884         
80885 # check transactions-3 success:         1
80886 DELETE FROM t1 WHERE f_charbig = 'was inserted';
80887 COMMIT WORK;
80888 ROLLBACK WORK;
80889         
80890 # check transactions-4 success:         1
80891 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
80892 SELECT f_int1, f_int1, '', '', 'was inserted'
80893 FROM t0_template source_tab
80894 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
80895         
80896 # check transactions-5 success:         1
80897 ROLLBACK WORK;
80898 Warnings:
80899 Warning 1196    Some non-transactional changed tables couldn't be rolled back
80900         
80901 # check transactions-6 success:         1
80902 # INFO: Storage engine used for t1 seems to be not transactional.
80903 COMMIT;
80904         
80905 # check transactions-7 success:         1
80906 DELETE FROM t1 WHERE f_charbig = 'was inserted';
80907 COMMIT WORK;
80908 SET @@session.sql_mode = 'traditional';
80909 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
80910 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
80911 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
80912 '', '', 'was inserted' FROM t0_template
80913 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
80914 ERROR 22012: Division by 0
80915 COMMIT;
80916         
80917 # check transactions-8 success:         1
80918 # INFO: Storage engine used for t1 seems to be unable to revert
80919 #       changes made by the failing statement.
80920 SET @@session.sql_mode = '';
80921 SET AUTOCOMMIT= 1;
80922 DELETE FROM t1 WHERE f_charbig = 'was inserted';
80923 COMMIT WORK;
80924 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
80925         
80926 # check special-1 success:      1
80927 UPDATE t1 SET f_charbig = '';
80928         
80929 # check special-2 success:      1
80930 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
80931 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
80932 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
80933 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80934 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80935 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80936 'just inserted' FROM t0_template
80937 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80938 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
80939 BEGIN
80940 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80941 f_charbig = 'updated by trigger'
80942       WHERE f_int1 = new.f_int1;
80943 END|
80944 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80945 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
80946 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80947         
80948 # check trigger-1 success:      1
80949 DROP TRIGGER trg_1;
80950 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80951 f_int2 = CAST(f_char1 AS SIGNED INT),
80952 f_charbig = 'just inserted'
80953    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80954 DELETE FROM t0_aux
80955 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80956 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80957 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80958 'just inserted' FROM t0_template
80959 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80960 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
80961 BEGIN
80962 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80963 f_charbig = 'updated by trigger'
80964       WHERE f_int1 = new.f_int1;
80965 END|
80966 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80967 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
80968 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80969         
80970 # check trigger-2 success:      1
80971 DROP TRIGGER trg_1;
80972 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80973 f_int2 = CAST(f_char1 AS SIGNED INT),
80974 f_charbig = 'just inserted'
80975    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80976 DELETE FROM t0_aux
80977 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80978 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
80979 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
80980 'just inserted' FROM t0_template
80981 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80982 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
80983 BEGIN
80984 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
80985 f_charbig = 'updated by trigger'
80986       WHERE f_int1 = new.f_int1;
80987 END|
80988 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
80989 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
80990         
80991 # check trigger-3 success:      1
80992 DROP TRIGGER trg_1;
80993 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
80994 f_int2 = CAST(f_char1 AS SIGNED INT),
80995 f_charbig = 'just inserted'
80996    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
80997 DELETE FROM t0_aux
80998 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
80999 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81000 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81001 'just inserted' FROM t0_template
81002 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81003 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
81004 BEGIN
81005 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81006 f_charbig = 'updated by trigger'
81007       WHERE f_int1 = - old.f_int1;
81008 END|
81009 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
81010 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
81011         
81012 # check trigger-4 success:      1
81013 DROP TRIGGER trg_1;
81014 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81015 f_int2 = CAST(f_char1 AS SIGNED INT),
81016 f_charbig = 'just inserted'
81017    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81018 DELETE FROM t0_aux
81019 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81020 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81021 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81022 'just inserted' FROM t0_template
81023 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81024 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
81025 BEGIN
81026 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81027 f_charbig = 'updated by trigger'
81028       WHERE f_int1 = new.f_int1;
81029 END|
81030 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
81031 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
81032         
81033 # check trigger-5 success:      1
81034 DROP TRIGGER trg_1;
81035 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81036 f_int2 = CAST(f_char1 AS SIGNED INT),
81037 f_charbig = 'just inserted'
81038    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81039 DELETE FROM t0_aux
81040 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81041 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81042 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81043 'just inserted' FROM t0_template
81044 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81045 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
81046 BEGIN
81047 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81048 f_charbig = 'updated by trigger'
81049       WHERE f_int1 = - old.f_int1;
81050 END|
81051 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
81052 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
81053         
81054 # check trigger-6 success:      1
81055 DROP TRIGGER trg_1;
81056 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81057 f_int2 = CAST(f_char1 AS SIGNED INT),
81058 f_charbig = 'just inserted'
81059    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81060 DELETE FROM t0_aux
81061 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81062 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81063 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81064 'just inserted' FROM t0_template
81065 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81066 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
81067 BEGIN
81068 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81069 f_charbig = 'updated by trigger'
81070       WHERE f_int1 = - old.f_int1;
81071 END|
81072 DELETE FROM t0_aux
81073 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
81074         
81075 # check trigger-7 success:      1
81076 DROP TRIGGER trg_1;
81077 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81078 f_int2 = CAST(f_char1 AS SIGNED INT),
81079 f_charbig = 'just inserted'
81080    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81081 DELETE FROM t0_aux
81082 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81083 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81084 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81085 'just inserted' FROM t0_template
81086 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81087 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
81088 BEGIN
81089 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81090 f_charbig = 'updated by trigger'
81091       WHERE f_int1 = - old.f_int1;
81092 END|
81093 DELETE FROM t0_aux
81094 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
81095         
81096 # check trigger-8 success:      1
81097 DROP TRIGGER trg_1;
81098 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81099 f_int2 = CAST(f_char1 AS SIGNED INT),
81100 f_charbig = 'just inserted'
81101    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81102 DELETE FROM t0_aux
81103 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81104 DELETE FROM t1
81105 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81106 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
81107 BEGIN
81108 SET new.f_int1 = old.f_int1 + @max_row,
81109 new.f_int2 = old.f_int2 - @max_row,
81110 new.f_charbig = '####updated per update trigger####';
81111 END|
81112 UPDATE t1
81113 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
81114 f_charbig = '####updated per update statement itself####';
81115         
81116 # check trigger-9 success:      1
81117 DROP TRIGGER trg_2;
81118 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81119 f_int2 = CAST(f_char1 AS SIGNED INT),
81120 f_charbig = CONCAT('===',f_char1,'===');
81121 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
81122 BEGIN
81123 SET new.f_int1 = new.f_int1 + @max_row,
81124 new.f_int2 = new.f_int2 - @max_row,
81125 new.f_charbig = '####updated per update trigger####';
81126 END|
81127 UPDATE t1
81128 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
81129 f_charbig = '####updated per update statement itself####';
81130         
81131 # check trigger-10 success:     1
81132 DROP TRIGGER trg_2;
81133 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81134 f_int2 = CAST(f_char1 AS SIGNED INT),
81135 f_charbig = CONCAT('===',f_char1,'===');
81136 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
81137 BEGIN
81138 SET new.f_int1 = @my_max1 + @counter,
81139 new.f_int2 = @my_min2 - @counter,
81140 new.f_charbig = '####updated per insert trigger####';
81141 SET @counter = @counter + 1;
81142 END|
81143 SET @counter = 1;
81144 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
81145 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
81146 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
81147 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
81148 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
81149 ORDER BY f_int1;
81150 DROP TRIGGER trg_3;
81151         
81152 # check trigger-11 success:     1
81153 DELETE FROM t1
81154 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
81155 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
81156 AND f_charbig = '####updated per insert trigger####';
81157 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
81158 BEGIN
81159 SET new.f_int1 = @my_max1 + @counter,
81160 new.f_int2 = @my_min2 - @counter,
81161 new.f_charbig = '####updated per insert trigger####';
81162 SET @counter = @counter + 1;
81163 END|
81164 SET @counter = 1;
81165 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
81166 INSERT INTO t1 (f_char1, f_char2, f_charbig)
81167 SELECT CAST(f_int1 AS CHAR),
81168 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
81169 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
81170 ORDER BY f_int1;
81171 DROP TRIGGER trg_3;
81172         
81173 # check trigger-12 success:     1
81174 DELETE FROM t1
81175 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
81176 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
81177 AND f_charbig = '####updated per insert trigger####';
81178 ANALYZE  TABLE t1;
81179 Table   Op      Msg_type        Msg_text
81180 test.t1 analyze status  OK
81181 CHECK    TABLE t1 EXTENDED;
81182 Table   Op      Msg_type        Msg_text
81183 test.t1 check   status  OK
81184 CHECKSUM TABLE t1 EXTENDED;
81185 Table   Checksum
81186 test.t1 <some_value>
81187 OPTIMIZE TABLE t1;
81188 Table   Op      Msg_type        Msg_text
81189 test.t1 optimize        status  OK
81190 # check layout success:    1
81191 REPAIR   TABLE t1 EXTENDED;
81192 Table   Op      Msg_type        Msg_text
81193 test.t1 repair  status  OK
81194 # check layout success:    1
81195 TRUNCATE t1;
81196         
81197 # check TRUNCATE success:       1
81198 # check layout success:    1
81199 # End usability test (inc/partition_check.inc)
81200 DROP TABLE t1;
81201 CREATE TABLE t1 (
81202 f_int1 INTEGER,
81203 f_int2 INTEGER,
81204 f_char1 CHAR(20),
81205 f_char2 CHAR(20),
81206 f_charbig VARCHAR(1000)
81209 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
81210 (PARTITION part_1 VALUES IN (0)
81211 (SUBPARTITION sp11, SUBPARTITION sp12),
81212 PARTITION part_2 VALUES IN (1)
81213 (SUBPARTITION sp21, SUBPARTITION sp22),
81214 PARTITION part_3 VALUES IN (2)
81215 (SUBPARTITION sp31, SUBPARTITION sp32),
81216 PARTITION part_4 VALUES IN (NULL)
81217 (SUBPARTITION sp41, SUBPARTITION sp42));
81218 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
81219 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
81220 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
81221 ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10;
81222 Table   Op      Msg_type        Msg_text
81223 test.t1 repair  error   Error in list of partitions to test.t1
81224 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
81225 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
81226 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
81227 # Start usability test (inc/partition_check.inc)
81228 create_command
81229 SHOW CREATE TABLE t1;
81230 Table   Create Table
81231 t1      CREATE TABLE `t1` (
81232   `f_int1` int(11) DEFAULT NULL,
81233   `f_int2` int(11) DEFAULT NULL,
81234   `f_char1` char(20) DEFAULT NULL,
81235   `f_char2` char(20) DEFAULT NULL,
81236   `f_charbig` varchar(1000) DEFAULT NULL
81237 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
81238 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
81239 SUBPARTITION BY HASH (f_int1 + 1)
81240 (PARTITION part_1 VALUES IN (0)
81241  (SUBPARTITION sp11 ENGINE = MyISAM,
81242   SUBPARTITION sp12 ENGINE = MyISAM),
81243  PARTITION part_2 VALUES IN (1)
81244  (SUBPARTITION sp21 ENGINE = MyISAM,
81245   SUBPARTITION sp22 ENGINE = MyISAM),
81246  PARTITION part_3 VALUES IN (2)
81247  (SUBPARTITION sp31 ENGINE = MyISAM,
81248   SUBPARTITION sp32 ENGINE = MyISAM),
81249  PARTITION part_4 VALUES IN (NULL)
81250  (SUBPARTITION sp41 ENGINE = MyISAM,
81251   SUBPARTITION sp42 ENGINE = MyISAM)) */
81253 unified filelist
81254 t1#P#part_1#SP#sp11.MYD
81255 t1#P#part_1#SP#sp11.MYI
81256 t1#P#part_1#SP#sp12.MYD
81257 t1#P#part_1#SP#sp12.MYI
81258 t1#P#part_2#SP#sp21.MYD
81259 t1#P#part_2#SP#sp21.MYI
81260 t1#P#part_2#SP#sp22.MYD
81261 t1#P#part_2#SP#sp22.MYI
81262 t1#P#part_3#SP#sp31.MYD
81263 t1#P#part_3#SP#sp31.MYI
81264 t1#P#part_3#SP#sp32.MYD
81265 t1#P#part_3#SP#sp32.MYI
81266 t1#P#part_4#SP#sp41.MYD
81267 t1#P#part_4#SP#sp41.MYI
81268 t1#P#part_4#SP#sp42.MYD
81269 t1#P#part_4#SP#sp42.MYI
81270 t1.frm
81271 t1.par
81273 # check prerequisites-1 success:    1
81274 # check COUNT(*) success:    1
81275 # check MIN/MAX(f_int1) success:    1
81276 # check MIN/MAX(f_int2) success:    1
81277 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
81278 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
81279 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
81280 WHERE f_int1 IN (2,3);
81281 # check prerequisites-3 success:    1
81282 DELETE FROM t1 WHERE f_charbig = 'delete me';
81283 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
81284 # check read via f_int1 success: 1
81285 # check read via f_int2 success: 1
81286         
81287 # check multiple-1 success:     1
81288 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
81289         
81290 # check multiple-2 success:     1
81291 INSERT INTO t1 SELECT * FROM t0_template
81292 WHERE MOD(f_int1,3) = 0;
81293         
81294 # check multiple-3 success:     1
81295 UPDATE t1 SET f_int1 = f_int1 + @max_row
81296 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
81297 AND @max_row_div2 + @max_row_div4;
81298         
81299 # check multiple-4 success:     1
81300 DELETE FROM t1
81301 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
81302 AND @max_row_div2 + @max_row_div4 + @max_row;
81303         
81304 # check multiple-5 success:     1
81305 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
81306 INSERT INTO t1
81307 SET f_int1 = @cur_value , f_int2 = @cur_value,
81308 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
81309 f_charbig = '#SINGLE#';
81310         
81311 # check single-1 success:       1
81312 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
81313 INSERT INTO t1
81314 SET f_int1 = @cur_value , f_int2 = @cur_value,
81315 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
81316 f_charbig = '#SINGLE#';
81317         
81318 # check single-2 success:       1
81319 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
81320 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
81321 UPDATE t1 SET f_int1 = @cur_value2
81322 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
81323         
81324 # check single-3 success:       1
81325 SET @cur_value1= -1;
81326 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
81327 UPDATE t1 SET f_int1 = @cur_value1
81328 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
81329         
81330 # check single-4 success:       1
81331 SELECT MAX(f_int1) INTO @cur_value FROM t1;
81332 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
81333         
81334 # check single-5 success:       1
81335 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
81336         
81337 # check single-6 success:       1
81338 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
81339         
81340 # check single-7 success:       1
81341 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
81342 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
81343 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
81344 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
81345 f_charbig = '#NULL#';
81346 INSERT INTO t1
81347 SET f_int1 = NULL , f_int2 = -@max_row,
81348 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
81349 f_charbig = '#NULL#';
81350 # check null success:    1
81351         
81352 # check null-1 success:         1
81353 UPDATE t1 SET f_int1 = -@max_row
81354 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
81355 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
81356         
81357 # check null-2 success:         1
81358 UPDATE t1 SET f_int1 = NULL
81359 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
81360 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
81361         
81362 # check null-3 success:         1
81363 DELETE FROM t1
81364 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
81365 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
81366         
81367 # check null-4 success:         1
81368 DELETE FROM t1
81369 WHERE f_int1 = 0 AND f_int2 = 0
81370 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
81371 AND f_charbig = '#NULL#';
81372 SET AUTOCOMMIT= 0;
81373 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
81374 SELECT f_int1, f_int1, '', '', 'was inserted'
81375 FROM t0_template source_tab
81376 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
81377         
81378 # check transactions-1 success:         1
81379 COMMIT WORK;
81380         
81381 # check transactions-2 success:         1
81382 ROLLBACK WORK;
81383         
81384 # check transactions-3 success:         1
81385 DELETE FROM t1 WHERE f_charbig = 'was inserted';
81386 COMMIT WORK;
81387 ROLLBACK WORK;
81388         
81389 # check transactions-4 success:         1
81390 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
81391 SELECT f_int1, f_int1, '', '', 'was inserted'
81392 FROM t0_template source_tab
81393 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
81394         
81395 # check transactions-5 success:         1
81396 ROLLBACK WORK;
81397 Warnings:
81398 Warning 1196    Some non-transactional changed tables couldn't be rolled back
81399         
81400 # check transactions-6 success:         1
81401 # INFO: Storage engine used for t1 seems to be not transactional.
81402 COMMIT;
81403         
81404 # check transactions-7 success:         1
81405 DELETE FROM t1 WHERE f_charbig = 'was inserted';
81406 COMMIT WORK;
81407 SET @@session.sql_mode = 'traditional';
81408 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
81409 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
81410 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
81411 '', '', 'was inserted' FROM t0_template
81412 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
81413 ERROR 22012: Division by 0
81414 COMMIT;
81415         
81416 # check transactions-8 success:         1
81417 # INFO: Storage engine used for t1 seems to be unable to revert
81418 #       changes made by the failing statement.
81419 SET @@session.sql_mode = '';
81420 SET AUTOCOMMIT= 1;
81421 DELETE FROM t1 WHERE f_charbig = 'was inserted';
81422 COMMIT WORK;
81423 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
81424         
81425 # check special-1 success:      1
81426 UPDATE t1 SET f_charbig = '';
81427         
81428 # check special-2 success:      1
81429 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
81430 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
81431 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
81432 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81433 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81434 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81435 'just inserted' FROM t0_template
81436 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81437 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
81438 BEGIN
81439 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81440 f_charbig = 'updated by trigger'
81441       WHERE f_int1 = new.f_int1;
81442 END|
81443 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81444 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
81445 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81446         
81447 # check trigger-1 success:      1
81448 DROP TRIGGER trg_1;
81449 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81450 f_int2 = CAST(f_char1 AS SIGNED INT),
81451 f_charbig = 'just inserted'
81452    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81453 DELETE FROM t0_aux
81454 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81455 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81456 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81457 'just inserted' FROM t0_template
81458 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81459 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
81460 BEGIN
81461 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81462 f_charbig = 'updated by trigger'
81463       WHERE f_int1 = new.f_int1;
81464 END|
81465 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81466 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
81467 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81468         
81469 # check trigger-2 success:      1
81470 DROP TRIGGER trg_1;
81471 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81472 f_int2 = CAST(f_char1 AS SIGNED INT),
81473 f_charbig = 'just inserted'
81474    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81475 DELETE FROM t0_aux
81476 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81477 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81478 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81479 'just inserted' FROM t0_template
81480 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81481 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
81482 BEGIN
81483 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81484 f_charbig = 'updated by trigger'
81485       WHERE f_int1 = new.f_int1;
81486 END|
81487 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
81488 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
81489         
81490 # check trigger-3 success:      1
81491 DROP TRIGGER trg_1;
81492 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81493 f_int2 = CAST(f_char1 AS SIGNED INT),
81494 f_charbig = 'just inserted'
81495    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81496 DELETE FROM t0_aux
81497 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81498 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81499 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81500 'just inserted' FROM t0_template
81501 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81502 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
81503 BEGIN
81504 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81505 f_charbig = 'updated by trigger'
81506       WHERE f_int1 = - old.f_int1;
81507 END|
81508 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
81509 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
81510         
81511 # check trigger-4 success:      1
81512 DROP TRIGGER trg_1;
81513 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81514 f_int2 = CAST(f_char1 AS SIGNED INT),
81515 f_charbig = 'just inserted'
81516    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81517 DELETE FROM t0_aux
81518 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81519 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81520 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81521 'just inserted' FROM t0_template
81522 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81523 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
81524 BEGIN
81525 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81526 f_charbig = 'updated by trigger'
81527       WHERE f_int1 = new.f_int1;
81528 END|
81529 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
81530 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
81531         
81532 # check trigger-5 success:      1
81533 DROP TRIGGER trg_1;
81534 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81535 f_int2 = CAST(f_char1 AS SIGNED INT),
81536 f_charbig = 'just inserted'
81537    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81538 DELETE FROM t0_aux
81539 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81540 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81541 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81542 'just inserted' FROM t0_template
81543 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81544 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
81545 BEGIN
81546 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81547 f_charbig = 'updated by trigger'
81548       WHERE f_int1 = - old.f_int1;
81549 END|
81550 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
81551 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
81552         
81553 # check trigger-6 success:      1
81554 DROP TRIGGER trg_1;
81555 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81556 f_int2 = CAST(f_char1 AS SIGNED INT),
81557 f_charbig = 'just inserted'
81558    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81559 DELETE FROM t0_aux
81560 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81561 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81562 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81563 'just inserted' FROM t0_template
81564 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81565 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
81566 BEGIN
81567 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81568 f_charbig = 'updated by trigger'
81569       WHERE f_int1 = - old.f_int1;
81570 END|
81571 DELETE FROM t0_aux
81572 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
81573         
81574 # check trigger-7 success:      1
81575 DROP TRIGGER trg_1;
81576 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81577 f_int2 = CAST(f_char1 AS SIGNED INT),
81578 f_charbig = 'just inserted'
81579    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81580 DELETE FROM t0_aux
81581 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81582 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81583 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81584 'just inserted' FROM t0_template
81585 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81586 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
81587 BEGIN
81588 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81589 f_charbig = 'updated by trigger'
81590       WHERE f_int1 = - old.f_int1;
81591 END|
81592 DELETE FROM t0_aux
81593 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
81594         
81595 # check trigger-8 success:      1
81596 DROP TRIGGER trg_1;
81597 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81598 f_int2 = CAST(f_char1 AS SIGNED INT),
81599 f_charbig = 'just inserted'
81600    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81601 DELETE FROM t0_aux
81602 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81603 DELETE FROM t1
81604 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81605 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
81606 BEGIN
81607 SET new.f_int1 = old.f_int1 + @max_row,
81608 new.f_int2 = old.f_int2 - @max_row,
81609 new.f_charbig = '####updated per update trigger####';
81610 END|
81611 UPDATE t1
81612 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
81613 f_charbig = '####updated per update statement itself####';
81614         
81615 # check trigger-9 success:      1
81616 DROP TRIGGER trg_2;
81617 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81618 f_int2 = CAST(f_char1 AS SIGNED INT),
81619 f_charbig = CONCAT('===',f_char1,'===');
81620 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
81621 BEGIN
81622 SET new.f_int1 = new.f_int1 + @max_row,
81623 new.f_int2 = new.f_int2 - @max_row,
81624 new.f_charbig = '####updated per update trigger####';
81625 END|
81626 UPDATE t1
81627 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
81628 f_charbig = '####updated per update statement itself####';
81629         
81630 # check trigger-10 success:     1
81631 DROP TRIGGER trg_2;
81632 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81633 f_int2 = CAST(f_char1 AS SIGNED INT),
81634 f_charbig = CONCAT('===',f_char1,'===');
81635 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
81636 BEGIN
81637 SET new.f_int1 = @my_max1 + @counter,
81638 new.f_int2 = @my_min2 - @counter,
81639 new.f_charbig = '####updated per insert trigger####';
81640 SET @counter = @counter + 1;
81641 END|
81642 SET @counter = 1;
81643 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
81644 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
81645 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
81646 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
81647 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
81648 ORDER BY f_int1;
81649 DROP TRIGGER trg_3;
81650         
81651 # check trigger-11 success:     1
81652 DELETE FROM t1
81653 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
81654 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
81655 AND f_charbig = '####updated per insert trigger####';
81656 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
81657 BEGIN
81658 SET new.f_int1 = @my_max1 + @counter,
81659 new.f_int2 = @my_min2 - @counter,
81660 new.f_charbig = '####updated per insert trigger####';
81661 SET @counter = @counter + 1;
81662 END|
81663 SET @counter = 1;
81664 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
81665 INSERT INTO t1 (f_char1, f_char2, f_charbig)
81666 SELECT CAST(f_int1 AS CHAR),
81667 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
81668 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
81669 ORDER BY f_int1;
81670 DROP TRIGGER trg_3;
81671         
81672 # check trigger-12 success:     1
81673 DELETE FROM t1
81674 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
81675 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
81676 AND f_charbig = '####updated per insert trigger####';
81677 ANALYZE  TABLE t1;
81678 Table   Op      Msg_type        Msg_text
81679 test.t1 analyze status  OK
81680 CHECK    TABLE t1 EXTENDED;
81681 Table   Op      Msg_type        Msg_text
81682 test.t1 check   status  OK
81683 CHECKSUM TABLE t1 EXTENDED;
81684 Table   Checksum
81685 test.t1 <some_value>
81686 OPTIMIZE TABLE t1;
81687 Table   Op      Msg_type        Msg_text
81688 test.t1 optimize        status  OK
81689 # check layout success:    1
81690 REPAIR   TABLE t1 EXTENDED;
81691 Table   Op      Msg_type        Msg_text
81692 test.t1 repair  status  OK
81693 # check layout success:    1
81694 TRUNCATE t1;
81695         
81696 # check TRUNCATE success:       1
81697 # check layout success:    1
81698 # End usability test (inc/partition_check.inc)
81699 DROP TABLE t1;
81700 CREATE TABLE t1 (
81701 f_int1 INTEGER,
81702 f_int2 INTEGER,
81703 f_char1 CHAR(20),
81704 f_char2 CHAR(20),
81705 f_charbig VARCHAR(1000)
81708 PARTITION BY LIST(ABS(MOD(f_int1,2)))
81709 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
81710 (PARTITION part_1 VALUES IN (0),
81711  PARTITION part_2 VALUES IN (1),
81712  PARTITION part_3 VALUES IN (NULL));
81713 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
81714 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
81715 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
81716 ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10;
81717 Table   Op      Msg_type        Msg_text
81718 test.t1 repair  error   Error in list of partitions to test.t1
81719 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
81720 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
81721 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
81722 # Start usability test (inc/partition_check.inc)
81723 create_command
81724 SHOW CREATE TABLE t1;
81725 Table   Create Table
81726 t1      CREATE TABLE `t1` (
81727   `f_int1` int(11) DEFAULT NULL,
81728   `f_int2` int(11) DEFAULT NULL,
81729   `f_char1` char(20) DEFAULT NULL,
81730   `f_char2` char(20) DEFAULT NULL,
81731   `f_charbig` varchar(1000) DEFAULT NULL
81732 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
81733 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
81734 SUBPARTITION BY KEY (f_int1)
81735 SUBPARTITIONS 3
81736 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
81737  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
81738  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
81740 unified filelist
81741 t1#P#part_1#SP#part_1sp0.MYD
81742 t1#P#part_1#SP#part_1sp0.MYI
81743 t1#P#part_1#SP#part_1sp1.MYD
81744 t1#P#part_1#SP#part_1sp1.MYI
81745 t1#P#part_1#SP#part_1sp2.MYD
81746 t1#P#part_1#SP#part_1sp2.MYI
81747 t1#P#part_2#SP#part_2sp0.MYD
81748 t1#P#part_2#SP#part_2sp0.MYI
81749 t1#P#part_2#SP#part_2sp1.MYD
81750 t1#P#part_2#SP#part_2sp1.MYI
81751 t1#P#part_2#SP#part_2sp2.MYD
81752 t1#P#part_2#SP#part_2sp2.MYI
81753 t1#P#part_3#SP#part_3sp0.MYD
81754 t1#P#part_3#SP#part_3sp0.MYI
81755 t1#P#part_3#SP#part_3sp1.MYD
81756 t1#P#part_3#SP#part_3sp1.MYI
81757 t1#P#part_3#SP#part_3sp2.MYD
81758 t1#P#part_3#SP#part_3sp2.MYI
81759 t1.frm
81760 t1.par
81762 # check prerequisites-1 success:    1
81763 # check COUNT(*) success:    1
81764 # check MIN/MAX(f_int1) success:    1
81765 # check MIN/MAX(f_int2) success:    1
81766 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
81767 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
81768 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
81769 WHERE f_int1 IN (2,3);
81770 # check prerequisites-3 success:    1
81771 DELETE FROM t1 WHERE f_charbig = 'delete me';
81772 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
81773 # check read via f_int1 success: 1
81774 # check read via f_int2 success: 1
81775         
81776 # check multiple-1 success:     1
81777 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
81778         
81779 # check multiple-2 success:     1
81780 INSERT INTO t1 SELECT * FROM t0_template
81781 WHERE MOD(f_int1,3) = 0;
81782         
81783 # check multiple-3 success:     1
81784 UPDATE t1 SET f_int1 = f_int1 + @max_row
81785 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
81786 AND @max_row_div2 + @max_row_div4;
81787         
81788 # check multiple-4 success:     1
81789 DELETE FROM t1
81790 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
81791 AND @max_row_div2 + @max_row_div4 + @max_row;
81792         
81793 # check multiple-5 success:     1
81794 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
81795 INSERT INTO t1
81796 SET f_int1 = @cur_value , f_int2 = @cur_value,
81797 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
81798 f_charbig = '#SINGLE#';
81799         
81800 # check single-1 success:       1
81801 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
81802 INSERT INTO t1
81803 SET f_int1 = @cur_value , f_int2 = @cur_value,
81804 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
81805 f_charbig = '#SINGLE#';
81806         
81807 # check single-2 success:       1
81808 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
81809 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
81810 UPDATE t1 SET f_int1 = @cur_value2
81811 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
81812         
81813 # check single-3 success:       1
81814 SET @cur_value1= -1;
81815 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
81816 UPDATE t1 SET f_int1 = @cur_value1
81817 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
81818         
81819 # check single-4 success:       1
81820 SELECT MAX(f_int1) INTO @cur_value FROM t1;
81821 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
81822         
81823 # check single-5 success:       1
81824 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
81825         
81826 # check single-6 success:       1
81827 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
81828         
81829 # check single-7 success:       1
81830 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
81831 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
81832 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
81833 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
81834 f_charbig = '#NULL#';
81835 INSERT INTO t1
81836 SET f_int1 = NULL , f_int2 = -@max_row,
81837 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
81838 f_charbig = '#NULL#';
81839 # check null success:    1
81840         
81841 # check null-1 success:         1
81842 UPDATE t1 SET f_int1 = -@max_row
81843 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
81844 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
81845         
81846 # check null-2 success:         1
81847 UPDATE t1 SET f_int1 = NULL
81848 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
81849 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
81850         
81851 # check null-3 success:         1
81852 DELETE FROM t1
81853 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
81854 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
81855         
81856 # check null-4 success:         1
81857 DELETE FROM t1
81858 WHERE f_int1 = 0 AND f_int2 = 0
81859 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
81860 AND f_charbig = '#NULL#';
81861 SET AUTOCOMMIT= 0;
81862 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
81863 SELECT f_int1, f_int1, '', '', 'was inserted'
81864 FROM t0_template source_tab
81865 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
81866         
81867 # check transactions-1 success:         1
81868 COMMIT WORK;
81869         
81870 # check transactions-2 success:         1
81871 ROLLBACK WORK;
81872         
81873 # check transactions-3 success:         1
81874 DELETE FROM t1 WHERE f_charbig = 'was inserted';
81875 COMMIT WORK;
81876 ROLLBACK WORK;
81877         
81878 # check transactions-4 success:         1
81879 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
81880 SELECT f_int1, f_int1, '', '', 'was inserted'
81881 FROM t0_template source_tab
81882 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
81883         
81884 # check transactions-5 success:         1
81885 ROLLBACK WORK;
81886 Warnings:
81887 Warning 1196    Some non-transactional changed tables couldn't be rolled back
81888         
81889 # check transactions-6 success:         1
81890 # INFO: Storage engine used for t1 seems to be not transactional.
81891 COMMIT;
81892         
81893 # check transactions-7 success:         1
81894 DELETE FROM t1 WHERE f_charbig = 'was inserted';
81895 COMMIT WORK;
81896 SET @@session.sql_mode = 'traditional';
81897 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
81898 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
81899 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
81900 '', '', 'was inserted' FROM t0_template
81901 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
81902 ERROR 22012: Division by 0
81903 COMMIT;
81904         
81905 # check transactions-8 success:         1
81906 # INFO: Storage engine used for t1 seems to be unable to revert
81907 #       changes made by the failing statement.
81908 SET @@session.sql_mode = '';
81909 SET AUTOCOMMIT= 1;
81910 DELETE FROM t1 WHERE f_charbig = 'was inserted';
81911 COMMIT WORK;
81912 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
81913         
81914 # check special-1 success:      1
81915 UPDATE t1 SET f_charbig = '';
81916         
81917 # check special-2 success:      1
81918 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
81919 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
81920 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
81921 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81922 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81923 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81924 'just inserted' FROM t0_template
81925 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81926 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
81927 BEGIN
81928 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81929 f_charbig = 'updated by trigger'
81930       WHERE f_int1 = new.f_int1;
81931 END|
81932 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81933 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
81934 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81935         
81936 # check trigger-1 success:      1
81937 DROP TRIGGER trg_1;
81938 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81939 f_int2 = CAST(f_char1 AS SIGNED INT),
81940 f_charbig = 'just inserted'
81941    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81942 DELETE FROM t0_aux
81943 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81944 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81945 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81946 'just inserted' FROM t0_template
81947 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81948 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
81949 BEGIN
81950 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81951 f_charbig = 'updated by trigger'
81952       WHERE f_int1 = new.f_int1;
81953 END|
81954 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81955 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
81956 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81957         
81958 # check trigger-2 success:      1
81959 DROP TRIGGER trg_1;
81960 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81961 f_int2 = CAST(f_char1 AS SIGNED INT),
81962 f_charbig = 'just inserted'
81963    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81964 DELETE FROM t0_aux
81965 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81966 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81967 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81968 'just inserted' FROM t0_template
81969 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81970 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
81971 BEGIN
81972 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81973 f_charbig = 'updated by trigger'
81974       WHERE f_int1 = new.f_int1;
81975 END|
81976 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
81977 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
81978         
81979 # check trigger-3 success:      1
81980 DROP TRIGGER trg_1;
81981 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
81982 f_int2 = CAST(f_char1 AS SIGNED INT),
81983 f_charbig = 'just inserted'
81984    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
81985 DELETE FROM t0_aux
81986 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81987 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
81988 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
81989 'just inserted' FROM t0_template
81990 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
81991 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
81992 BEGIN
81993 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
81994 f_charbig = 'updated by trigger'
81995       WHERE f_int1 = - old.f_int1;
81996 END|
81997 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
81998 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
81999         
82000 # check trigger-4 success:      1
82001 DROP TRIGGER trg_1;
82002 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82003 f_int2 = CAST(f_char1 AS SIGNED INT),
82004 f_charbig = 'just inserted'
82005    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82006 DELETE FROM t0_aux
82007 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82008 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82009 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82010 'just inserted' FROM t0_template
82011 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82012 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
82013 BEGIN
82014 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82015 f_charbig = 'updated by trigger'
82016       WHERE f_int1 = new.f_int1;
82017 END|
82018 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
82019 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
82020         
82021 # check trigger-5 success:      1
82022 DROP TRIGGER trg_1;
82023 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82024 f_int2 = CAST(f_char1 AS SIGNED INT),
82025 f_charbig = 'just inserted'
82026    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82027 DELETE FROM t0_aux
82028 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82029 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82030 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82031 'just inserted' FROM t0_template
82032 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82033 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
82034 BEGIN
82035 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82036 f_charbig = 'updated by trigger'
82037       WHERE f_int1 = - old.f_int1;
82038 END|
82039 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
82040 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
82041         
82042 # check trigger-6 success:      1
82043 DROP TRIGGER trg_1;
82044 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82045 f_int2 = CAST(f_char1 AS SIGNED INT),
82046 f_charbig = 'just inserted'
82047    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82048 DELETE FROM t0_aux
82049 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82050 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82051 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82052 'just inserted' FROM t0_template
82053 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82054 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
82055 BEGIN
82056 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82057 f_charbig = 'updated by trigger'
82058       WHERE f_int1 = - old.f_int1;
82059 END|
82060 DELETE FROM t0_aux
82061 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
82062         
82063 # check trigger-7 success:      1
82064 DROP TRIGGER trg_1;
82065 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82066 f_int2 = CAST(f_char1 AS SIGNED INT),
82067 f_charbig = 'just inserted'
82068    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82069 DELETE FROM t0_aux
82070 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82071 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82072 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82073 'just inserted' FROM t0_template
82074 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82075 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
82076 BEGIN
82077 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82078 f_charbig = 'updated by trigger'
82079       WHERE f_int1 = - old.f_int1;
82080 END|
82081 DELETE FROM t0_aux
82082 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
82083         
82084 # check trigger-8 success:      1
82085 DROP TRIGGER trg_1;
82086 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82087 f_int2 = CAST(f_char1 AS SIGNED INT),
82088 f_charbig = 'just inserted'
82089    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82090 DELETE FROM t0_aux
82091 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82092 DELETE FROM t1
82093 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82094 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
82095 BEGIN
82096 SET new.f_int1 = old.f_int1 + @max_row,
82097 new.f_int2 = old.f_int2 - @max_row,
82098 new.f_charbig = '####updated per update trigger####';
82099 END|
82100 UPDATE t1
82101 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
82102 f_charbig = '####updated per update statement itself####';
82103         
82104 # check trigger-9 success:      1
82105 DROP TRIGGER trg_2;
82106 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82107 f_int2 = CAST(f_char1 AS SIGNED INT),
82108 f_charbig = CONCAT('===',f_char1,'===');
82109 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
82110 BEGIN
82111 SET new.f_int1 = new.f_int1 + @max_row,
82112 new.f_int2 = new.f_int2 - @max_row,
82113 new.f_charbig = '####updated per update trigger####';
82114 END|
82115 UPDATE t1
82116 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
82117 f_charbig = '####updated per update statement itself####';
82118         
82119 # check trigger-10 success:     1
82120 DROP TRIGGER trg_2;
82121 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82122 f_int2 = CAST(f_char1 AS SIGNED INT),
82123 f_charbig = CONCAT('===',f_char1,'===');
82124 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
82125 BEGIN
82126 SET new.f_int1 = @my_max1 + @counter,
82127 new.f_int2 = @my_min2 - @counter,
82128 new.f_charbig = '####updated per insert trigger####';
82129 SET @counter = @counter + 1;
82130 END|
82131 SET @counter = 1;
82132 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
82133 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
82134 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
82135 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
82136 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
82137 ORDER BY f_int1;
82138 DROP TRIGGER trg_3;
82139         
82140 # check trigger-11 success:     1
82141 DELETE FROM t1
82142 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
82143 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
82144 AND f_charbig = '####updated per insert trigger####';
82145 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
82146 BEGIN
82147 SET new.f_int1 = @my_max1 + @counter,
82148 new.f_int2 = @my_min2 - @counter,
82149 new.f_charbig = '####updated per insert trigger####';
82150 SET @counter = @counter + 1;
82151 END|
82152 SET @counter = 1;
82153 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
82154 INSERT INTO t1 (f_char1, f_char2, f_charbig)
82155 SELECT CAST(f_int1 AS CHAR),
82156 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
82157 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
82158 ORDER BY f_int1;
82159 DROP TRIGGER trg_3;
82160         
82161 # check trigger-12 success:     1
82162 DELETE FROM t1
82163 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
82164 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
82165 AND f_charbig = '####updated per insert trigger####';
82166 ANALYZE  TABLE t1;
82167 Table   Op      Msg_type        Msg_text
82168 test.t1 analyze status  OK
82169 CHECK    TABLE t1 EXTENDED;
82170 Table   Op      Msg_type        Msg_text
82171 test.t1 check   status  OK
82172 CHECKSUM TABLE t1 EXTENDED;
82173 Table   Checksum
82174 test.t1 <some_value>
82175 OPTIMIZE TABLE t1;
82176 Table   Op      Msg_type        Msg_text
82177 test.t1 optimize        status  OK
82178 # check layout success:    1
82179 REPAIR   TABLE t1 EXTENDED;
82180 Table   Op      Msg_type        Msg_text
82181 test.t1 repair  status  OK
82182 # check layout success:    1
82183 TRUNCATE t1;
82184         
82185 # check TRUNCATE success:       1
82186 # check layout success:    1
82187 # End usability test (inc/partition_check.inc)
82188 DROP TABLE t1;
82189 #  5.4 ALTER ... REPAIR PARTITION part_1,part_1,part_1;
82190 DROP TABLE IF EXISTS t1;
82191 CREATE TABLE t1 (
82192 f_int1 INTEGER,
82193 f_int2 INTEGER,
82194 f_char1 CHAR(20),
82195 f_char2 CHAR(20),
82196 f_charbig VARCHAR(1000)
82199 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
82200 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
82201 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
82202 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
82203 ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1;
82204 Table   Op      Msg_type        Msg_text
82205 test.t1 repair  error   Error in list of partitions to test.t1
82206 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
82207 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
82208 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
82209 # Start usability test (inc/partition_check.inc)
82210 create_command
82211 SHOW CREATE TABLE t1;
82212 Table   Create Table
82213 t1      CREATE TABLE `t1` (
82214   `f_int1` int(11) DEFAULT NULL,
82215   `f_int2` int(11) DEFAULT NULL,
82216   `f_char1` char(20) DEFAULT NULL,
82217   `f_char2` char(20) DEFAULT NULL,
82218   `f_charbig` varchar(1000) DEFAULT NULL
82219 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
82220 /*!50100 PARTITION BY HASH (f_int1)
82221 (PARTITION part_1 ENGINE = MyISAM,
82222  PARTITION part_2 ENGINE = MyISAM) */
82224 unified filelist
82225 t1#P#part_1.MYD
82226 t1#P#part_1.MYI
82227 t1#P#part_2.MYD
82228 t1#P#part_2.MYI
82229 t1.frm
82230 t1.par
82232 # check prerequisites-1 success:    1
82233 # check COUNT(*) success:    1
82234 # check MIN/MAX(f_int1) success:    1
82235 # check MIN/MAX(f_int2) success:    1
82236 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
82237 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
82238 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
82239 WHERE f_int1 IN (2,3);
82240 # check prerequisites-3 success:    1
82241 DELETE FROM t1 WHERE f_charbig = 'delete me';
82242 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
82243 # check read via f_int1 success: 1
82244 # check read via f_int2 success: 1
82245         
82246 # check multiple-1 success:     1
82247 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
82248         
82249 # check multiple-2 success:     1
82250 INSERT INTO t1 SELECT * FROM t0_template
82251 WHERE MOD(f_int1,3) = 0;
82252         
82253 # check multiple-3 success:     1
82254 UPDATE t1 SET f_int1 = f_int1 + @max_row
82255 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
82256 AND @max_row_div2 + @max_row_div4;
82257         
82258 # check multiple-4 success:     1
82259 DELETE FROM t1
82260 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
82261 AND @max_row_div2 + @max_row_div4 + @max_row;
82262         
82263 # check multiple-5 success:     1
82264 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
82265 INSERT INTO t1
82266 SET f_int1 = @cur_value , f_int2 = @cur_value,
82267 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
82268 f_charbig = '#SINGLE#';
82269         
82270 # check single-1 success:       1
82271 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
82272 INSERT INTO t1
82273 SET f_int1 = @cur_value , f_int2 = @cur_value,
82274 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
82275 f_charbig = '#SINGLE#';
82276         
82277 # check single-2 success:       1
82278 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
82279 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
82280 UPDATE t1 SET f_int1 = @cur_value2
82281 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
82282         
82283 # check single-3 success:       1
82284 SET @cur_value1= -1;
82285 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
82286 UPDATE t1 SET f_int1 = @cur_value1
82287 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
82288         
82289 # check single-4 success:       1
82290 SELECT MAX(f_int1) INTO @cur_value FROM t1;
82291 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
82292         
82293 # check single-5 success:       1
82294 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
82295         
82296 # check single-6 success:       1
82297 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
82298         
82299 # check single-7 success:       1
82300 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
82301 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
82302 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
82303 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
82304 f_charbig = '#NULL#';
82305 INSERT INTO t1
82306 SET f_int1 = NULL , f_int2 = -@max_row,
82307 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
82308 f_charbig = '#NULL#';
82309 # check null success:    1
82310         
82311 # check null-1 success:         1
82312 UPDATE t1 SET f_int1 = -@max_row
82313 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
82314 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
82315         
82316 # check null-2 success:         1
82317 UPDATE t1 SET f_int1 = NULL
82318 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
82319 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
82320         
82321 # check null-3 success:         1
82322 DELETE FROM t1
82323 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
82324 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
82325         
82326 # check null-4 success:         1
82327 DELETE FROM t1
82328 WHERE f_int1 = 0 AND f_int2 = 0
82329 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
82330 AND f_charbig = '#NULL#';
82331 SET AUTOCOMMIT= 0;
82332 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
82333 SELECT f_int1, f_int1, '', '', 'was inserted'
82334 FROM t0_template source_tab
82335 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
82336         
82337 # check transactions-1 success:         1
82338 COMMIT WORK;
82339         
82340 # check transactions-2 success:         1
82341 ROLLBACK WORK;
82342         
82343 # check transactions-3 success:         1
82344 DELETE FROM t1 WHERE f_charbig = 'was inserted';
82345 COMMIT WORK;
82346 ROLLBACK WORK;
82347         
82348 # check transactions-4 success:         1
82349 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
82350 SELECT f_int1, f_int1, '', '', 'was inserted'
82351 FROM t0_template source_tab
82352 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
82353         
82354 # check transactions-5 success:         1
82355 ROLLBACK WORK;
82356 Warnings:
82357 Warning 1196    Some non-transactional changed tables couldn't be rolled back
82358         
82359 # check transactions-6 success:         1
82360 # INFO: Storage engine used for t1 seems to be not transactional.
82361 COMMIT;
82362         
82363 # check transactions-7 success:         1
82364 DELETE FROM t1 WHERE f_charbig = 'was inserted';
82365 COMMIT WORK;
82366 SET @@session.sql_mode = 'traditional';
82367 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
82368 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
82369 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
82370 '', '', 'was inserted' FROM t0_template
82371 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
82372 ERROR 22012: Division by 0
82373 COMMIT;
82374         
82375 # check transactions-8 success:         1
82376 # INFO: Storage engine used for t1 seems to be unable to revert
82377 #       changes made by the failing statement.
82378 SET @@session.sql_mode = '';
82379 SET AUTOCOMMIT= 1;
82380 DELETE FROM t1 WHERE f_charbig = 'was inserted';
82381 COMMIT WORK;
82382 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
82383         
82384 # check special-1 success:      1
82385 UPDATE t1 SET f_charbig = '';
82386         
82387 # check special-2 success:      1
82388 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
82389 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
82390 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
82391 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82392 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82393 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82394 'just inserted' FROM t0_template
82395 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82396 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
82397 BEGIN
82398 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82399 f_charbig = 'updated by trigger'
82400       WHERE f_int1 = new.f_int1;
82401 END|
82402 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82403 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
82404 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82405         
82406 # check trigger-1 success:      1
82407 DROP TRIGGER trg_1;
82408 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82409 f_int2 = CAST(f_char1 AS SIGNED INT),
82410 f_charbig = 'just inserted'
82411    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82412 DELETE FROM t0_aux
82413 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82414 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82415 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82416 'just inserted' FROM t0_template
82417 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82418 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
82419 BEGIN
82420 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82421 f_charbig = 'updated by trigger'
82422       WHERE f_int1 = new.f_int1;
82423 END|
82424 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82425 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
82426 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82427         
82428 # check trigger-2 success:      1
82429 DROP TRIGGER trg_1;
82430 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82431 f_int2 = CAST(f_char1 AS SIGNED INT),
82432 f_charbig = 'just inserted'
82433    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82434 DELETE FROM t0_aux
82435 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82436 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82437 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82438 'just inserted' FROM t0_template
82439 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82440 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
82441 BEGIN
82442 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82443 f_charbig = 'updated by trigger'
82444       WHERE f_int1 = new.f_int1;
82445 END|
82446 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
82447 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
82448         
82449 # check trigger-3 success:      1
82450 DROP TRIGGER trg_1;
82451 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82452 f_int2 = CAST(f_char1 AS SIGNED INT),
82453 f_charbig = 'just inserted'
82454    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82455 DELETE FROM t0_aux
82456 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82457 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82458 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82459 'just inserted' FROM t0_template
82460 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82461 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
82462 BEGIN
82463 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82464 f_charbig = 'updated by trigger'
82465       WHERE f_int1 = - old.f_int1;
82466 END|
82467 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
82468 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
82469         
82470 # check trigger-4 success:      1
82471 DROP TRIGGER trg_1;
82472 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82473 f_int2 = CAST(f_char1 AS SIGNED INT),
82474 f_charbig = 'just inserted'
82475    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82476 DELETE FROM t0_aux
82477 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82478 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82479 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82480 'just inserted' FROM t0_template
82481 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82482 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
82483 BEGIN
82484 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82485 f_charbig = 'updated by trigger'
82486       WHERE f_int1 = new.f_int1;
82487 END|
82488 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
82489 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
82490         
82491 # check trigger-5 success:      1
82492 DROP TRIGGER trg_1;
82493 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82494 f_int2 = CAST(f_char1 AS SIGNED INT),
82495 f_charbig = 'just inserted'
82496    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82497 DELETE FROM t0_aux
82498 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82499 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82500 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82501 'just inserted' FROM t0_template
82502 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82503 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
82504 BEGIN
82505 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82506 f_charbig = 'updated by trigger'
82507       WHERE f_int1 = - old.f_int1;
82508 END|
82509 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
82510 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
82511         
82512 # check trigger-6 success:      1
82513 DROP TRIGGER trg_1;
82514 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82515 f_int2 = CAST(f_char1 AS SIGNED INT),
82516 f_charbig = 'just inserted'
82517    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82518 DELETE FROM t0_aux
82519 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82520 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82521 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82522 'just inserted' FROM t0_template
82523 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82524 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
82525 BEGIN
82526 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82527 f_charbig = 'updated by trigger'
82528       WHERE f_int1 = - old.f_int1;
82529 END|
82530 DELETE FROM t0_aux
82531 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
82532         
82533 # check trigger-7 success:      1
82534 DROP TRIGGER trg_1;
82535 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82536 f_int2 = CAST(f_char1 AS SIGNED INT),
82537 f_charbig = 'just inserted'
82538    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82539 DELETE FROM t0_aux
82540 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82541 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82542 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82543 'just inserted' FROM t0_template
82544 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82545 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
82546 BEGIN
82547 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82548 f_charbig = 'updated by trigger'
82549       WHERE f_int1 = - old.f_int1;
82550 END|
82551 DELETE FROM t0_aux
82552 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
82553         
82554 # check trigger-8 success:      1
82555 DROP TRIGGER trg_1;
82556 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82557 f_int2 = CAST(f_char1 AS SIGNED INT),
82558 f_charbig = 'just inserted'
82559    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82560 DELETE FROM t0_aux
82561 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82562 DELETE FROM t1
82563 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82564 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
82565 BEGIN
82566 SET new.f_int1 = old.f_int1 + @max_row,
82567 new.f_int2 = old.f_int2 - @max_row,
82568 new.f_charbig = '####updated per update trigger####';
82569 END|
82570 UPDATE t1
82571 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
82572 f_charbig = '####updated per update statement itself####';
82573         
82574 # check trigger-9 success:      1
82575 DROP TRIGGER trg_2;
82576 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82577 f_int2 = CAST(f_char1 AS SIGNED INT),
82578 f_charbig = CONCAT('===',f_char1,'===');
82579 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
82580 BEGIN
82581 SET new.f_int1 = new.f_int1 + @max_row,
82582 new.f_int2 = new.f_int2 - @max_row,
82583 new.f_charbig = '####updated per update trigger####';
82584 END|
82585 UPDATE t1
82586 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
82587 f_charbig = '####updated per update statement itself####';
82588         
82589 # check trigger-10 success:     1
82590 DROP TRIGGER trg_2;
82591 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82592 f_int2 = CAST(f_char1 AS SIGNED INT),
82593 f_charbig = CONCAT('===',f_char1,'===');
82594 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
82595 BEGIN
82596 SET new.f_int1 = @my_max1 + @counter,
82597 new.f_int2 = @my_min2 - @counter,
82598 new.f_charbig = '####updated per insert trigger####';
82599 SET @counter = @counter + 1;
82600 END|
82601 SET @counter = 1;
82602 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
82603 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
82604 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
82605 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
82606 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
82607 ORDER BY f_int1;
82608 DROP TRIGGER trg_3;
82609         
82610 # check trigger-11 success:     1
82611 DELETE FROM t1
82612 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
82613 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
82614 AND f_charbig = '####updated per insert trigger####';
82615 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
82616 BEGIN
82617 SET new.f_int1 = @my_max1 + @counter,
82618 new.f_int2 = @my_min2 - @counter,
82619 new.f_charbig = '####updated per insert trigger####';
82620 SET @counter = @counter + 1;
82621 END|
82622 SET @counter = 1;
82623 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
82624 INSERT INTO t1 (f_char1, f_char2, f_charbig)
82625 SELECT CAST(f_int1 AS CHAR),
82626 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
82627 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
82628 ORDER BY f_int1;
82629 DROP TRIGGER trg_3;
82630         
82631 # check trigger-12 success:     1
82632 DELETE FROM t1
82633 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
82634 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
82635 AND f_charbig = '####updated per insert trigger####';
82636 ANALYZE  TABLE t1;
82637 Table   Op      Msg_type        Msg_text
82638 test.t1 analyze status  OK
82639 CHECK    TABLE t1 EXTENDED;
82640 Table   Op      Msg_type        Msg_text
82641 test.t1 check   status  OK
82642 CHECKSUM TABLE t1 EXTENDED;
82643 Table   Checksum
82644 test.t1 <some_value>
82645 OPTIMIZE TABLE t1;
82646 Table   Op      Msg_type        Msg_text
82647 test.t1 optimize        status  OK
82648 # check layout success:    1
82649 REPAIR   TABLE t1 EXTENDED;
82650 Table   Op      Msg_type        Msg_text
82651 test.t1 repair  status  OK
82652 # check layout success:    1
82653 TRUNCATE t1;
82654         
82655 # check TRUNCATE success:       1
82656 # check layout success:    1
82657 # End usability test (inc/partition_check.inc)
82658 DROP TABLE t1;
82659 CREATE TABLE t1 (
82660 f_int1 INTEGER,
82661 f_int2 INTEGER,
82662 f_char1 CHAR(20),
82663 f_char2 CHAR(20),
82664 f_charbig VARCHAR(1000)
82667 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
82668 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
82669 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
82670 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
82671 ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1;
82672 Table   Op      Msg_type        Msg_text
82673 test.t1 repair  error   Error in list of partitions to test.t1
82674 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
82675 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
82676 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
82677 # Start usability test (inc/partition_check.inc)
82678 create_command
82679 SHOW CREATE TABLE t1;
82680 Table   Create Table
82681 t1      CREATE TABLE `t1` (
82682   `f_int1` int(11) DEFAULT NULL,
82683   `f_int2` int(11) DEFAULT NULL,
82684   `f_char1` char(20) DEFAULT NULL,
82685   `f_char2` char(20) DEFAULT NULL,
82686   `f_charbig` varchar(1000) DEFAULT NULL
82687 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
82688 /*!50100 PARTITION BY KEY (f_int1)
82689 (PARTITION part_1 ENGINE = MyISAM,
82690  PARTITION part_2 ENGINE = MyISAM,
82691  PARTITION part_3 ENGINE = MyISAM,
82692  PARTITION part_4 ENGINE = MyISAM,
82693  PARTITION part_5 ENGINE = MyISAM) */
82695 unified filelist
82696 t1#P#part_1.MYD
82697 t1#P#part_1.MYI
82698 t1#P#part_2.MYD
82699 t1#P#part_2.MYI
82700 t1#P#part_3.MYD
82701 t1#P#part_3.MYI
82702 t1#P#part_4.MYD
82703 t1#P#part_4.MYI
82704 t1#P#part_5.MYD
82705 t1#P#part_5.MYI
82706 t1.frm
82707 t1.par
82709 # check prerequisites-1 success:    1
82710 # check COUNT(*) success:    1
82711 # check MIN/MAX(f_int1) success:    1
82712 # check MIN/MAX(f_int2) success:    1
82713 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
82714 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
82715 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
82716 WHERE f_int1 IN (2,3);
82717 # check prerequisites-3 success:    1
82718 DELETE FROM t1 WHERE f_charbig = 'delete me';
82719 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
82720 # check read via f_int1 success: 1
82721 # check read via f_int2 success: 1
82722         
82723 # check multiple-1 success:     1
82724 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
82725         
82726 # check multiple-2 success:     1
82727 INSERT INTO t1 SELECT * FROM t0_template
82728 WHERE MOD(f_int1,3) = 0;
82729         
82730 # check multiple-3 success:     1
82731 UPDATE t1 SET f_int1 = f_int1 + @max_row
82732 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
82733 AND @max_row_div2 + @max_row_div4;
82734         
82735 # check multiple-4 success:     1
82736 DELETE FROM t1
82737 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
82738 AND @max_row_div2 + @max_row_div4 + @max_row;
82739         
82740 # check multiple-5 success:     1
82741 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
82742 INSERT INTO t1
82743 SET f_int1 = @cur_value , f_int2 = @cur_value,
82744 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
82745 f_charbig = '#SINGLE#';
82746         
82747 # check single-1 success:       1
82748 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
82749 INSERT INTO t1
82750 SET f_int1 = @cur_value , f_int2 = @cur_value,
82751 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
82752 f_charbig = '#SINGLE#';
82753         
82754 # check single-2 success:       1
82755 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
82756 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
82757 UPDATE t1 SET f_int1 = @cur_value2
82758 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
82759         
82760 # check single-3 success:       1
82761 SET @cur_value1= -1;
82762 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
82763 UPDATE t1 SET f_int1 = @cur_value1
82764 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
82765         
82766 # check single-4 success:       1
82767 SELECT MAX(f_int1) INTO @cur_value FROM t1;
82768 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
82769         
82770 # check single-5 success:       1
82771 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
82772         
82773 # check single-6 success:       1
82774 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
82775         
82776 # check single-7 success:       1
82777 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
82778 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
82779 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
82780 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
82781 f_charbig = '#NULL#';
82782 INSERT INTO t1
82783 SET f_int1 = NULL , f_int2 = -@max_row,
82784 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
82785 f_charbig = '#NULL#';
82786 # check null success:    1
82787         
82788 # check null-1 success:         1
82789 UPDATE t1 SET f_int1 = -@max_row
82790 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
82791 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
82792         
82793 # check null-2 success:         1
82794 UPDATE t1 SET f_int1 = NULL
82795 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
82796 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
82797         
82798 # check null-3 success:         1
82799 DELETE FROM t1
82800 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
82801 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
82802         
82803 # check null-4 success:         1
82804 DELETE FROM t1
82805 WHERE f_int1 = 0 AND f_int2 = 0
82806 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
82807 AND f_charbig = '#NULL#';
82808 SET AUTOCOMMIT= 0;
82809 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
82810 SELECT f_int1, f_int1, '', '', 'was inserted'
82811 FROM t0_template source_tab
82812 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
82813         
82814 # check transactions-1 success:         1
82815 COMMIT WORK;
82816         
82817 # check transactions-2 success:         1
82818 ROLLBACK WORK;
82819         
82820 # check transactions-3 success:         1
82821 DELETE FROM t1 WHERE f_charbig = 'was inserted';
82822 COMMIT WORK;
82823 ROLLBACK WORK;
82824         
82825 # check transactions-4 success:         1
82826 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
82827 SELECT f_int1, f_int1, '', '', 'was inserted'
82828 FROM t0_template source_tab
82829 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
82830         
82831 # check transactions-5 success:         1
82832 ROLLBACK WORK;
82833 Warnings:
82834 Warning 1196    Some non-transactional changed tables couldn't be rolled back
82835         
82836 # check transactions-6 success:         1
82837 # INFO: Storage engine used for t1 seems to be not transactional.
82838 COMMIT;
82839         
82840 # check transactions-7 success:         1
82841 DELETE FROM t1 WHERE f_charbig = 'was inserted';
82842 COMMIT WORK;
82843 SET @@session.sql_mode = 'traditional';
82844 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
82845 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
82846 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
82847 '', '', 'was inserted' FROM t0_template
82848 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
82849 ERROR 22012: Division by 0
82850 COMMIT;
82851         
82852 # check transactions-8 success:         1
82853 # INFO: Storage engine used for t1 seems to be unable to revert
82854 #       changes made by the failing statement.
82855 SET @@session.sql_mode = '';
82856 SET AUTOCOMMIT= 1;
82857 DELETE FROM t1 WHERE f_charbig = 'was inserted';
82858 COMMIT WORK;
82859 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
82860         
82861 # check special-1 success:      1
82862 UPDATE t1 SET f_charbig = '';
82863         
82864 # check special-2 success:      1
82865 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
82866 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
82867 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
82868 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82869 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82870 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82871 'just inserted' FROM t0_template
82872 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82873 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
82874 BEGIN
82875 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82876 f_charbig = 'updated by trigger'
82877       WHERE f_int1 = new.f_int1;
82878 END|
82879 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82880 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
82881 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82882         
82883 # check trigger-1 success:      1
82884 DROP TRIGGER trg_1;
82885 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82886 f_int2 = CAST(f_char1 AS SIGNED INT),
82887 f_charbig = 'just inserted'
82888    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82889 DELETE FROM t0_aux
82890 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82891 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82892 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82893 'just inserted' FROM t0_template
82894 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82895 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
82896 BEGIN
82897 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82898 f_charbig = 'updated by trigger'
82899       WHERE f_int1 = new.f_int1;
82900 END|
82901 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82902 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
82903 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82904         
82905 # check trigger-2 success:      1
82906 DROP TRIGGER trg_1;
82907 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82908 f_int2 = CAST(f_char1 AS SIGNED INT),
82909 f_charbig = 'just inserted'
82910    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82911 DELETE FROM t0_aux
82912 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82913 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82914 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82915 'just inserted' FROM t0_template
82916 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82917 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
82918 BEGIN
82919 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82920 f_charbig = 'updated by trigger'
82921       WHERE f_int1 = new.f_int1;
82922 END|
82923 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
82924 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
82925         
82926 # check trigger-3 success:      1
82927 DROP TRIGGER trg_1;
82928 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82929 f_int2 = CAST(f_char1 AS SIGNED INT),
82930 f_charbig = 'just inserted'
82931    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82932 DELETE FROM t0_aux
82933 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82934 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82935 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82936 'just inserted' FROM t0_template
82937 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82938 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
82939 BEGIN
82940 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82941 f_charbig = 'updated by trigger'
82942       WHERE f_int1 = - old.f_int1;
82943 END|
82944 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
82945 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
82946         
82947 # check trigger-4 success:      1
82948 DROP TRIGGER trg_1;
82949 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82950 f_int2 = CAST(f_char1 AS SIGNED INT),
82951 f_charbig = 'just inserted'
82952    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82953 DELETE FROM t0_aux
82954 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82955 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82956 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82957 'just inserted' FROM t0_template
82958 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82959 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
82960 BEGIN
82961 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82962 f_charbig = 'updated by trigger'
82963       WHERE f_int1 = new.f_int1;
82964 END|
82965 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
82966 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
82967         
82968 # check trigger-5 success:      1
82969 DROP TRIGGER trg_1;
82970 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82971 f_int2 = CAST(f_char1 AS SIGNED INT),
82972 f_charbig = 'just inserted'
82973    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82974 DELETE FROM t0_aux
82975 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82976 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82977 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82978 'just inserted' FROM t0_template
82979 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82980 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
82981 BEGIN
82982 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
82983 f_charbig = 'updated by trigger'
82984       WHERE f_int1 = - old.f_int1;
82985 END|
82986 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
82987 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
82988         
82989 # check trigger-6 success:      1
82990 DROP TRIGGER trg_1;
82991 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
82992 f_int2 = CAST(f_char1 AS SIGNED INT),
82993 f_charbig = 'just inserted'
82994    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
82995 DELETE FROM t0_aux
82996 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
82997 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
82998 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
82999 'just inserted' FROM t0_template
83000 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83001 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
83002 BEGIN
83003 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83004 f_charbig = 'updated by trigger'
83005       WHERE f_int1 = - old.f_int1;
83006 END|
83007 DELETE FROM t0_aux
83008 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
83009         
83010 # check trigger-7 success:      1
83011 DROP TRIGGER trg_1;
83012 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83013 f_int2 = CAST(f_char1 AS SIGNED INT),
83014 f_charbig = 'just inserted'
83015    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83016 DELETE FROM t0_aux
83017 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83018 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83019 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83020 'just inserted' FROM t0_template
83021 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83022 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
83023 BEGIN
83024 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83025 f_charbig = 'updated by trigger'
83026       WHERE f_int1 = - old.f_int1;
83027 END|
83028 DELETE FROM t0_aux
83029 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
83030         
83031 # check trigger-8 success:      1
83032 DROP TRIGGER trg_1;
83033 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83034 f_int2 = CAST(f_char1 AS SIGNED INT),
83035 f_charbig = 'just inserted'
83036    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83037 DELETE FROM t0_aux
83038 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83039 DELETE FROM t1
83040 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83041 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
83042 BEGIN
83043 SET new.f_int1 = old.f_int1 + @max_row,
83044 new.f_int2 = old.f_int2 - @max_row,
83045 new.f_charbig = '####updated per update trigger####';
83046 END|
83047 UPDATE t1
83048 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
83049 f_charbig = '####updated per update statement itself####';
83050         
83051 # check trigger-9 success:      1
83052 DROP TRIGGER trg_2;
83053 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83054 f_int2 = CAST(f_char1 AS SIGNED INT),
83055 f_charbig = CONCAT('===',f_char1,'===');
83056 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
83057 BEGIN
83058 SET new.f_int1 = new.f_int1 + @max_row,
83059 new.f_int2 = new.f_int2 - @max_row,
83060 new.f_charbig = '####updated per update trigger####';
83061 END|
83062 UPDATE t1
83063 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
83064 f_charbig = '####updated per update statement itself####';
83065         
83066 # check trigger-10 success:     1
83067 DROP TRIGGER trg_2;
83068 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83069 f_int2 = CAST(f_char1 AS SIGNED INT),
83070 f_charbig = CONCAT('===',f_char1,'===');
83071 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
83072 BEGIN
83073 SET new.f_int1 = @my_max1 + @counter,
83074 new.f_int2 = @my_min2 - @counter,
83075 new.f_charbig = '####updated per insert trigger####';
83076 SET @counter = @counter + 1;
83077 END|
83078 SET @counter = 1;
83079 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
83080 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
83081 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
83082 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
83083 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
83084 ORDER BY f_int1;
83085 DROP TRIGGER trg_3;
83086         
83087 # check trigger-11 success:     1
83088 DELETE FROM t1
83089 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
83090 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
83091 AND f_charbig = '####updated per insert trigger####';
83092 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
83093 BEGIN
83094 SET new.f_int1 = @my_max1 + @counter,
83095 new.f_int2 = @my_min2 - @counter,
83096 new.f_charbig = '####updated per insert trigger####';
83097 SET @counter = @counter + 1;
83098 END|
83099 SET @counter = 1;
83100 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
83101 INSERT INTO t1 (f_char1, f_char2, f_charbig)
83102 SELECT CAST(f_int1 AS CHAR),
83103 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
83104 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
83105 ORDER BY f_int1;
83106 DROP TRIGGER trg_3;
83107         
83108 # check trigger-12 success:     1
83109 DELETE FROM t1
83110 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
83111 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
83112 AND f_charbig = '####updated per insert trigger####';
83113 ANALYZE  TABLE t1;
83114 Table   Op      Msg_type        Msg_text
83115 test.t1 analyze status  OK
83116 CHECK    TABLE t1 EXTENDED;
83117 Table   Op      Msg_type        Msg_text
83118 test.t1 check   status  OK
83119 CHECKSUM TABLE t1 EXTENDED;
83120 Table   Checksum
83121 test.t1 <some_value>
83122 OPTIMIZE TABLE t1;
83123 Table   Op      Msg_type        Msg_text
83124 test.t1 optimize        status  OK
83125 # check layout success:    1
83126 REPAIR   TABLE t1 EXTENDED;
83127 Table   Op      Msg_type        Msg_text
83128 test.t1 repair  status  OK
83129 # check layout success:    1
83130 TRUNCATE t1;
83131         
83132 # check TRUNCATE success:       1
83133 # check layout success:    1
83134 # End usability test (inc/partition_check.inc)
83135 DROP TABLE t1;
83136 CREATE TABLE t1 (
83137 f_int1 INTEGER,
83138 f_int2 INTEGER,
83139 f_char1 CHAR(20),
83140 f_char2 CHAR(20),
83141 f_charbig VARCHAR(1000)
83144 PARTITION BY LIST(MOD(f_int1,4))
83145 (PARTITION part_3 VALUES IN (-3),
83146 PARTITION part_2 VALUES IN (-2),
83147 PARTITION part_1 VALUES IN (-1),
83148 PARTITION part_N VALUES IN (NULL),
83149 PARTITION part0 VALUES IN (0),
83150 PARTITION part1 VALUES IN (1),
83151 PARTITION part2 VALUES IN (2),
83152 PARTITION part3 VALUES IN (3));
83153 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
83154 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
83155 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
83156 ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1;
83157 Table   Op      Msg_type        Msg_text
83158 test.t1 repair  error   Error in list of partitions to test.t1
83159 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
83160 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
83161 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
83162 # Start usability test (inc/partition_check.inc)
83163 create_command
83164 SHOW CREATE TABLE t1;
83165 Table   Create Table
83166 t1      CREATE TABLE `t1` (
83167   `f_int1` int(11) DEFAULT NULL,
83168   `f_int2` int(11) DEFAULT NULL,
83169   `f_char1` char(20) DEFAULT NULL,
83170   `f_char2` char(20) DEFAULT NULL,
83171   `f_charbig` varchar(1000) DEFAULT NULL
83172 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
83173 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
83174 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
83175  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
83176  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
83177  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
83178  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
83179  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
83180  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
83181  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
83183 unified filelist
83184 t1#P#part0.MYD
83185 t1#P#part0.MYI
83186 t1#P#part1.MYD
83187 t1#P#part1.MYI
83188 t1#P#part2.MYD
83189 t1#P#part2.MYI
83190 t1#P#part3.MYD
83191 t1#P#part3.MYI
83192 t1#P#part_1.MYD
83193 t1#P#part_1.MYI
83194 t1#P#part_2.MYD
83195 t1#P#part_2.MYI
83196 t1#P#part_3.MYD
83197 t1#P#part_3.MYI
83198 t1#P#part_N.MYD
83199 t1#P#part_N.MYI
83200 t1.frm
83201 t1.par
83203 # check prerequisites-1 success:    1
83204 # check COUNT(*) success:    1
83205 # check MIN/MAX(f_int1) success:    1
83206 # check MIN/MAX(f_int2) success:    1
83207 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
83208 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
83209 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
83210 WHERE f_int1 IN (2,3);
83211 # check prerequisites-3 success:    1
83212 DELETE FROM t1 WHERE f_charbig = 'delete me';
83213 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
83214 # check read via f_int1 success: 1
83215 # check read via f_int2 success: 1
83216         
83217 # check multiple-1 success:     1
83218 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
83219         
83220 # check multiple-2 success:     1
83221 INSERT INTO t1 SELECT * FROM t0_template
83222 WHERE MOD(f_int1,3) = 0;
83223         
83224 # check multiple-3 success:     1
83225 UPDATE t1 SET f_int1 = f_int1 + @max_row
83226 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
83227 AND @max_row_div2 + @max_row_div4;
83228         
83229 # check multiple-4 success:     1
83230 DELETE FROM t1
83231 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
83232 AND @max_row_div2 + @max_row_div4 + @max_row;
83233         
83234 # check multiple-5 success:     1
83235 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
83236 INSERT INTO t1
83237 SET f_int1 = @cur_value , f_int2 = @cur_value,
83238 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
83239 f_charbig = '#SINGLE#';
83240         
83241 # check single-1 success:       1
83242 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
83243 INSERT INTO t1
83244 SET f_int1 = @cur_value , f_int2 = @cur_value,
83245 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
83246 f_charbig = '#SINGLE#';
83247         
83248 # check single-2 success:       1
83249 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
83250 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
83251 UPDATE t1 SET f_int1 = @cur_value2
83252 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
83253         
83254 # check single-3 success:       1
83255 SET @cur_value1= -1;
83256 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
83257 UPDATE t1 SET f_int1 = @cur_value1
83258 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
83259         
83260 # check single-4 success:       1
83261 SELECT MAX(f_int1) INTO @cur_value FROM t1;
83262 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
83263         
83264 # check single-5 success:       1
83265 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
83266         
83267 # check single-6 success:       1
83268 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
83269         
83270 # check single-7 success:       1
83271 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
83272 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
83273 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
83274 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
83275 f_charbig = '#NULL#';
83276 INSERT INTO t1
83277 SET f_int1 = NULL , f_int2 = -@max_row,
83278 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
83279 f_charbig = '#NULL#';
83280 # check null success:    1
83281         
83282 # check null-1 success:         1
83283 UPDATE t1 SET f_int1 = -@max_row
83284 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
83285 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
83286         
83287 # check null-2 success:         1
83288 UPDATE t1 SET f_int1 = NULL
83289 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
83290 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
83291         
83292 # check null-3 success:         1
83293 DELETE FROM t1
83294 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
83295 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
83296         
83297 # check null-4 success:         1
83298 DELETE FROM t1
83299 WHERE f_int1 = 0 AND f_int2 = 0
83300 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
83301 AND f_charbig = '#NULL#';
83302 SET AUTOCOMMIT= 0;
83303 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
83304 SELECT f_int1, f_int1, '', '', 'was inserted'
83305 FROM t0_template source_tab
83306 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
83307         
83308 # check transactions-1 success:         1
83309 COMMIT WORK;
83310         
83311 # check transactions-2 success:         1
83312 ROLLBACK WORK;
83313         
83314 # check transactions-3 success:         1
83315 DELETE FROM t1 WHERE f_charbig = 'was inserted';
83316 COMMIT WORK;
83317 ROLLBACK WORK;
83318         
83319 # check transactions-4 success:         1
83320 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
83321 SELECT f_int1, f_int1, '', '', 'was inserted'
83322 FROM t0_template source_tab
83323 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
83324         
83325 # check transactions-5 success:         1
83326 ROLLBACK WORK;
83327 Warnings:
83328 Warning 1196    Some non-transactional changed tables couldn't be rolled back
83329         
83330 # check transactions-6 success:         1
83331 # INFO: Storage engine used for t1 seems to be not transactional.
83332 COMMIT;
83333         
83334 # check transactions-7 success:         1
83335 DELETE FROM t1 WHERE f_charbig = 'was inserted';
83336 COMMIT WORK;
83337 SET @@session.sql_mode = 'traditional';
83338 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
83339 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
83340 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
83341 '', '', 'was inserted' FROM t0_template
83342 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
83343 ERROR 22012: Division by 0
83344 COMMIT;
83345         
83346 # check transactions-8 success:         1
83347 # INFO: Storage engine used for t1 seems to be unable to revert
83348 #       changes made by the failing statement.
83349 SET @@session.sql_mode = '';
83350 SET AUTOCOMMIT= 1;
83351 DELETE FROM t1 WHERE f_charbig = 'was inserted';
83352 COMMIT WORK;
83353 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
83354         
83355 # check special-1 success:      1
83356 UPDATE t1 SET f_charbig = '';
83357         
83358 # check special-2 success:      1
83359 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
83360 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
83361 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
83362 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83363 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83364 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83365 'just inserted' FROM t0_template
83366 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83367 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
83368 BEGIN
83369 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83370 f_charbig = 'updated by trigger'
83371       WHERE f_int1 = new.f_int1;
83372 END|
83373 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83374 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
83375 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83376         
83377 # check trigger-1 success:      1
83378 DROP TRIGGER trg_1;
83379 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83380 f_int2 = CAST(f_char1 AS SIGNED INT),
83381 f_charbig = 'just inserted'
83382    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83383 DELETE FROM t0_aux
83384 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83385 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83386 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83387 'just inserted' FROM t0_template
83388 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83389 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
83390 BEGIN
83391 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83392 f_charbig = 'updated by trigger'
83393       WHERE f_int1 = new.f_int1;
83394 END|
83395 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83396 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
83397 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83398         
83399 # check trigger-2 success:      1
83400 DROP TRIGGER trg_1;
83401 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83402 f_int2 = CAST(f_char1 AS SIGNED INT),
83403 f_charbig = 'just inserted'
83404    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83405 DELETE FROM t0_aux
83406 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83407 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83408 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83409 'just inserted' FROM t0_template
83410 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83411 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
83412 BEGIN
83413 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83414 f_charbig = 'updated by trigger'
83415       WHERE f_int1 = new.f_int1;
83416 END|
83417 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
83418 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
83419         
83420 # check trigger-3 success:      1
83421 DROP TRIGGER trg_1;
83422 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83423 f_int2 = CAST(f_char1 AS SIGNED INT),
83424 f_charbig = 'just inserted'
83425    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83426 DELETE FROM t0_aux
83427 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83428 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83429 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83430 'just inserted' FROM t0_template
83431 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83432 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
83433 BEGIN
83434 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83435 f_charbig = 'updated by trigger'
83436       WHERE f_int1 = - old.f_int1;
83437 END|
83438 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
83439 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
83440         
83441 # check trigger-4 success:      1
83442 DROP TRIGGER trg_1;
83443 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83444 f_int2 = CAST(f_char1 AS SIGNED INT),
83445 f_charbig = 'just inserted'
83446    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83447 DELETE FROM t0_aux
83448 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83449 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83450 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83451 'just inserted' FROM t0_template
83452 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83453 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
83454 BEGIN
83455 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83456 f_charbig = 'updated by trigger'
83457       WHERE f_int1 = new.f_int1;
83458 END|
83459 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
83460 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
83461         
83462 # check trigger-5 success:      1
83463 DROP TRIGGER trg_1;
83464 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83465 f_int2 = CAST(f_char1 AS SIGNED INT),
83466 f_charbig = 'just inserted'
83467    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83468 DELETE FROM t0_aux
83469 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83470 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83471 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83472 'just inserted' FROM t0_template
83473 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83474 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
83475 BEGIN
83476 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83477 f_charbig = 'updated by trigger'
83478       WHERE f_int1 = - old.f_int1;
83479 END|
83480 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
83481 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
83482         
83483 # check trigger-6 success:      1
83484 DROP TRIGGER trg_1;
83485 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83486 f_int2 = CAST(f_char1 AS SIGNED INT),
83487 f_charbig = 'just inserted'
83488    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83489 DELETE FROM t0_aux
83490 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83491 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83492 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83493 'just inserted' FROM t0_template
83494 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83495 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
83496 BEGIN
83497 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83498 f_charbig = 'updated by trigger'
83499       WHERE f_int1 = - old.f_int1;
83500 END|
83501 DELETE FROM t0_aux
83502 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
83503         
83504 # check trigger-7 success:      1
83505 DROP TRIGGER trg_1;
83506 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83507 f_int2 = CAST(f_char1 AS SIGNED INT),
83508 f_charbig = 'just inserted'
83509    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83510 DELETE FROM t0_aux
83511 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83512 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83513 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83514 'just inserted' FROM t0_template
83515 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83516 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
83517 BEGIN
83518 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83519 f_charbig = 'updated by trigger'
83520       WHERE f_int1 = - old.f_int1;
83521 END|
83522 DELETE FROM t0_aux
83523 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
83524         
83525 # check trigger-8 success:      1
83526 DROP TRIGGER trg_1;
83527 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83528 f_int2 = CAST(f_char1 AS SIGNED INT),
83529 f_charbig = 'just inserted'
83530    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83531 DELETE FROM t0_aux
83532 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83533 DELETE FROM t1
83534 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83535 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
83536 BEGIN
83537 SET new.f_int1 = old.f_int1 + @max_row,
83538 new.f_int2 = old.f_int2 - @max_row,
83539 new.f_charbig = '####updated per update trigger####';
83540 END|
83541 UPDATE t1
83542 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
83543 f_charbig = '####updated per update statement itself####';
83544         
83545 # check trigger-9 success:      1
83546 DROP TRIGGER trg_2;
83547 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83548 f_int2 = CAST(f_char1 AS SIGNED INT),
83549 f_charbig = CONCAT('===',f_char1,'===');
83550 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
83551 BEGIN
83552 SET new.f_int1 = new.f_int1 + @max_row,
83553 new.f_int2 = new.f_int2 - @max_row,
83554 new.f_charbig = '####updated per update trigger####';
83555 END|
83556 UPDATE t1
83557 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
83558 f_charbig = '####updated per update statement itself####';
83559         
83560 # check trigger-10 success:     1
83561 DROP TRIGGER trg_2;
83562 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83563 f_int2 = CAST(f_char1 AS SIGNED INT),
83564 f_charbig = CONCAT('===',f_char1,'===');
83565 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
83566 BEGIN
83567 SET new.f_int1 = @my_max1 + @counter,
83568 new.f_int2 = @my_min2 - @counter,
83569 new.f_charbig = '####updated per insert trigger####';
83570 SET @counter = @counter + 1;
83571 END|
83572 SET @counter = 1;
83573 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
83574 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
83575 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
83576 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
83577 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
83578 ORDER BY f_int1;
83579 DROP TRIGGER trg_3;
83580         
83581 # check trigger-11 success:     1
83582 DELETE FROM t1
83583 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
83584 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
83585 AND f_charbig = '####updated per insert trigger####';
83586 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
83587 BEGIN
83588 SET new.f_int1 = @my_max1 + @counter,
83589 new.f_int2 = @my_min2 - @counter,
83590 new.f_charbig = '####updated per insert trigger####';
83591 SET @counter = @counter + 1;
83592 END|
83593 SET @counter = 1;
83594 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
83595 INSERT INTO t1 (f_char1, f_char2, f_charbig)
83596 SELECT CAST(f_int1 AS CHAR),
83597 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
83598 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
83599 ORDER BY f_int1;
83600 DROP TRIGGER trg_3;
83601         
83602 # check trigger-12 success:     1
83603 DELETE FROM t1
83604 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
83605 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
83606 AND f_charbig = '####updated per insert trigger####';
83607 ANALYZE  TABLE t1;
83608 Table   Op      Msg_type        Msg_text
83609 test.t1 analyze status  OK
83610 CHECK    TABLE t1 EXTENDED;
83611 Table   Op      Msg_type        Msg_text
83612 test.t1 check   status  OK
83613 CHECKSUM TABLE t1 EXTENDED;
83614 Table   Checksum
83615 test.t1 <some_value>
83616 OPTIMIZE TABLE t1;
83617 Table   Op      Msg_type        Msg_text
83618 test.t1 optimize        status  OK
83619 # check layout success:    1
83620 REPAIR   TABLE t1 EXTENDED;
83621 Table   Op      Msg_type        Msg_text
83622 test.t1 repair  status  OK
83623 # check layout success:    1
83624 TRUNCATE t1;
83625         
83626 # check TRUNCATE success:       1
83627 # check layout success:    1
83628 # End usability test (inc/partition_check.inc)
83629 DROP TABLE t1;
83630 CREATE TABLE t1 (
83631 f_int1 INTEGER,
83632 f_int2 INTEGER,
83633 f_char1 CHAR(20),
83634 f_char2 CHAR(20),
83635 f_charbig VARCHAR(1000)
83638 PARTITION BY RANGE(f_int1)
83639 (PARTITION parta VALUES LESS THAN (0),
83640 PARTITION part_1 VALUES LESS THAN (5),
83641 PARTITION part_2 VALUES LESS THAN (10),
83642 PARTITION part_3 VALUES LESS THAN (10 + 5),
83643 PARTITION part_4 VALUES LESS THAN (20),
83644 PARTITION part_5 VALUES LESS THAN (2147483646));
83645 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
83646 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
83647 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
83648 ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1;
83649 Table   Op      Msg_type        Msg_text
83650 test.t1 repair  error   Error in list of partitions to test.t1
83651 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
83652 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
83653 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
83654 # Start usability test (inc/partition_check.inc)
83655 create_command
83656 SHOW CREATE TABLE t1;
83657 Table   Create Table
83658 t1      CREATE TABLE `t1` (
83659   `f_int1` int(11) DEFAULT NULL,
83660   `f_int2` int(11) DEFAULT NULL,
83661   `f_char1` char(20) DEFAULT NULL,
83662   `f_char2` char(20) DEFAULT NULL,
83663   `f_charbig` varchar(1000) DEFAULT NULL
83664 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
83665 /*!50100 PARTITION BY RANGE (f_int1)
83666 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
83667  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
83668  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
83669  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
83670  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
83671  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
83673 unified filelist
83674 t1#P#part_1.MYD
83675 t1#P#part_1.MYI
83676 t1#P#part_2.MYD
83677 t1#P#part_2.MYI
83678 t1#P#part_3.MYD
83679 t1#P#part_3.MYI
83680 t1#P#part_4.MYD
83681 t1#P#part_4.MYI
83682 t1#P#part_5.MYD
83683 t1#P#part_5.MYI
83684 t1#P#parta.MYD
83685 t1#P#parta.MYI
83686 t1.frm
83687 t1.par
83689 # check prerequisites-1 success:    1
83690 # check COUNT(*) success:    1
83691 # check MIN/MAX(f_int1) success:    1
83692 # check MIN/MAX(f_int2) success:    1
83693 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
83694 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
83695 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
83696 WHERE f_int1 IN (2,3);
83697 # check prerequisites-3 success:    1
83698 DELETE FROM t1 WHERE f_charbig = 'delete me';
83699 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
83700 # check read via f_int1 success: 1
83701 # check read via f_int2 success: 1
83702         
83703 # check multiple-1 success:     1
83704 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
83705         
83706 # check multiple-2 success:     1
83707 INSERT INTO t1 SELECT * FROM t0_template
83708 WHERE MOD(f_int1,3) = 0;
83709         
83710 # check multiple-3 success:     1
83711 UPDATE t1 SET f_int1 = f_int1 + @max_row
83712 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
83713 AND @max_row_div2 + @max_row_div4;
83714         
83715 # check multiple-4 success:     1
83716 DELETE FROM t1
83717 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
83718 AND @max_row_div2 + @max_row_div4 + @max_row;
83719         
83720 # check multiple-5 success:     1
83721 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
83722 INSERT INTO t1
83723 SET f_int1 = @cur_value , f_int2 = @cur_value,
83724 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
83725 f_charbig = '#SINGLE#';
83726         
83727 # check single-1 success:       1
83728 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
83729 INSERT INTO t1
83730 SET f_int1 = @cur_value , f_int2 = @cur_value,
83731 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
83732 f_charbig = '#SINGLE#';
83733         
83734 # check single-2 success:       1
83735 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
83736 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
83737 UPDATE t1 SET f_int1 = @cur_value2
83738 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
83739         
83740 # check single-3 success:       1
83741 SET @cur_value1= -1;
83742 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
83743 UPDATE t1 SET f_int1 = @cur_value1
83744 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
83745         
83746 # check single-4 success:       1
83747 SELECT MAX(f_int1) INTO @cur_value FROM t1;
83748 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
83749         
83750 # check single-5 success:       1
83751 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
83752         
83753 # check single-6 success:       1
83754 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
83755 ERROR HY000: Table has no partition for value 2147483647
83756 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
83757 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
83758 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
83759 f_charbig = '#NULL#';
83760 INSERT INTO t1
83761 SET f_int1 = NULL , f_int2 = -@max_row,
83762 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
83763 f_charbig = '#NULL#';
83764 # check null success:    1
83765         
83766 # check null-1 success:         1
83767 UPDATE t1 SET f_int1 = -@max_row
83768 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
83769 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
83770         
83771 # check null-2 success:         1
83772 UPDATE t1 SET f_int1 = NULL
83773 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
83774 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
83775         
83776 # check null-3 success:         1
83777 DELETE FROM t1
83778 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
83779 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
83780         
83781 # check null-4 success:         1
83782 DELETE FROM t1
83783 WHERE f_int1 = 0 AND f_int2 = 0
83784 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
83785 AND f_charbig = '#NULL#';
83786 SET AUTOCOMMIT= 0;
83787 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
83788 SELECT f_int1, f_int1, '', '', 'was inserted'
83789 FROM t0_template source_tab
83790 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
83791         
83792 # check transactions-1 success:         1
83793 COMMIT WORK;
83794         
83795 # check transactions-2 success:         1
83796 ROLLBACK WORK;
83797         
83798 # check transactions-3 success:         1
83799 DELETE FROM t1 WHERE f_charbig = 'was inserted';
83800 COMMIT WORK;
83801 ROLLBACK WORK;
83802         
83803 # check transactions-4 success:         1
83804 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
83805 SELECT f_int1, f_int1, '', '', 'was inserted'
83806 FROM t0_template source_tab
83807 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
83808         
83809 # check transactions-5 success:         1
83810 ROLLBACK WORK;
83811 Warnings:
83812 Warning 1196    Some non-transactional changed tables couldn't be rolled back
83813         
83814 # check transactions-6 success:         1
83815 # INFO: Storage engine used for t1 seems to be not transactional.
83816 COMMIT;
83817         
83818 # check transactions-7 success:         1
83819 DELETE FROM t1 WHERE f_charbig = 'was inserted';
83820 COMMIT WORK;
83821 SET @@session.sql_mode = 'traditional';
83822 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
83823 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
83824 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
83825 '', '', 'was inserted' FROM t0_template
83826 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
83827 ERROR 22012: Division by 0
83828 COMMIT;
83829         
83830 # check transactions-8 success:         1
83831 # INFO: Storage engine used for t1 seems to be unable to revert
83832 #       changes made by the failing statement.
83833 SET @@session.sql_mode = '';
83834 SET AUTOCOMMIT= 1;
83835 DELETE FROM t1 WHERE f_charbig = 'was inserted';
83836 COMMIT WORK;
83837 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
83838         
83839 # check special-1 success:      1
83840 UPDATE t1 SET f_charbig = '';
83841         
83842 # check special-2 success:      1
83843 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
83844 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
83845 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
83846 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83847 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83848 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83849 'just inserted' FROM t0_template
83850 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83851 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
83852 BEGIN
83853 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83854 f_charbig = 'updated by trigger'
83855       WHERE f_int1 = new.f_int1;
83856 END|
83857 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83858 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
83859 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83860         
83861 # check trigger-1 success:      1
83862 DROP TRIGGER trg_1;
83863 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83864 f_int2 = CAST(f_char1 AS SIGNED INT),
83865 f_charbig = 'just inserted'
83866    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83867 DELETE FROM t0_aux
83868 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83869 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83870 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83871 'just inserted' FROM t0_template
83872 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83873 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
83874 BEGIN
83875 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83876 f_charbig = 'updated by trigger'
83877       WHERE f_int1 = new.f_int1;
83878 END|
83879 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83880 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
83881 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83882         
83883 # check trigger-2 success:      1
83884 DROP TRIGGER trg_1;
83885 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83886 f_int2 = CAST(f_char1 AS SIGNED INT),
83887 f_charbig = 'just inserted'
83888    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83889 DELETE FROM t0_aux
83890 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83891 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83892 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83893 'just inserted' FROM t0_template
83894 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83895 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
83896 BEGIN
83897 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83898 f_charbig = 'updated by trigger'
83899       WHERE f_int1 = new.f_int1;
83900 END|
83901 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
83902 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
83903         
83904 # check trigger-3 success:      1
83905 DROP TRIGGER trg_1;
83906 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83907 f_int2 = CAST(f_char1 AS SIGNED INT),
83908 f_charbig = 'just inserted'
83909    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83910 DELETE FROM t0_aux
83911 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83912 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83913 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83914 'just inserted' FROM t0_template
83915 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83916 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
83917 BEGIN
83918 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83919 f_charbig = 'updated by trigger'
83920       WHERE f_int1 = - old.f_int1;
83921 END|
83922 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
83923 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
83924         
83925 # check trigger-4 success:      1
83926 DROP TRIGGER trg_1;
83927 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83928 f_int2 = CAST(f_char1 AS SIGNED INT),
83929 f_charbig = 'just inserted'
83930    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83931 DELETE FROM t0_aux
83932 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83933 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83934 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83935 'just inserted' FROM t0_template
83936 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83937 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
83938 BEGIN
83939 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83940 f_charbig = 'updated by trigger'
83941       WHERE f_int1 = new.f_int1;
83942 END|
83943 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
83944 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
83945         
83946 # check trigger-5 success:      1
83947 DROP TRIGGER trg_1;
83948 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83949 f_int2 = CAST(f_char1 AS SIGNED INT),
83950 f_charbig = 'just inserted'
83951    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83952 DELETE FROM t0_aux
83953 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83954 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83955 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83956 'just inserted' FROM t0_template
83957 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83958 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
83959 BEGIN
83960 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83961 f_charbig = 'updated by trigger'
83962       WHERE f_int1 = - old.f_int1;
83963 END|
83964 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
83965 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
83966         
83967 # check trigger-6 success:      1
83968 DROP TRIGGER trg_1;
83969 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83970 f_int2 = CAST(f_char1 AS SIGNED INT),
83971 f_charbig = 'just inserted'
83972    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83973 DELETE FROM t0_aux
83974 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83975 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83976 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83977 'just inserted' FROM t0_template
83978 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83979 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
83980 BEGIN
83981 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
83982 f_charbig = 'updated by trigger'
83983       WHERE f_int1 = - old.f_int1;
83984 END|
83985 DELETE FROM t0_aux
83986 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
83987         
83988 # check trigger-7 success:      1
83989 DROP TRIGGER trg_1;
83990 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
83991 f_int2 = CAST(f_char1 AS SIGNED INT),
83992 f_charbig = 'just inserted'
83993    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
83994 DELETE FROM t0_aux
83995 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
83996 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
83997 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
83998 'just inserted' FROM t0_template
83999 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84000 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
84001 BEGIN
84002 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84003 f_charbig = 'updated by trigger'
84004       WHERE f_int1 = - old.f_int1;
84005 END|
84006 DELETE FROM t0_aux
84007 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
84008         
84009 # check trigger-8 success:      1
84010 DROP TRIGGER trg_1;
84011 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84012 f_int2 = CAST(f_char1 AS SIGNED INT),
84013 f_charbig = 'just inserted'
84014    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84015 DELETE FROM t0_aux
84016 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84017 DELETE FROM t1
84018 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84019 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
84020 BEGIN
84021 SET new.f_int1 = old.f_int1 + @max_row,
84022 new.f_int2 = old.f_int2 - @max_row,
84023 new.f_charbig = '####updated per update trigger####';
84024 END|
84025 UPDATE t1
84026 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
84027 f_charbig = '####updated per update statement itself####';
84028         
84029 # check trigger-9 success:      1
84030 DROP TRIGGER trg_2;
84031 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84032 f_int2 = CAST(f_char1 AS SIGNED INT),
84033 f_charbig = CONCAT('===',f_char1,'===');
84034 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
84035 BEGIN
84036 SET new.f_int1 = new.f_int1 + @max_row,
84037 new.f_int2 = new.f_int2 - @max_row,
84038 new.f_charbig = '####updated per update trigger####';
84039 END|
84040 UPDATE t1
84041 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
84042 f_charbig = '####updated per update statement itself####';
84043         
84044 # check trigger-10 success:     1
84045 DROP TRIGGER trg_2;
84046 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84047 f_int2 = CAST(f_char1 AS SIGNED INT),
84048 f_charbig = CONCAT('===',f_char1,'===');
84049 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
84050 BEGIN
84051 SET new.f_int1 = @my_max1 + @counter,
84052 new.f_int2 = @my_min2 - @counter,
84053 new.f_charbig = '####updated per insert trigger####';
84054 SET @counter = @counter + 1;
84055 END|
84056 SET @counter = 1;
84057 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
84058 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
84059 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
84060 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
84061 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
84062 ORDER BY f_int1;
84063 DROP TRIGGER trg_3;
84064         
84065 # check trigger-11 success:     1
84066 DELETE FROM t1
84067 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
84068 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
84069 AND f_charbig = '####updated per insert trigger####';
84070 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
84071 BEGIN
84072 SET new.f_int1 = @my_max1 + @counter,
84073 new.f_int2 = @my_min2 - @counter,
84074 new.f_charbig = '####updated per insert trigger####';
84075 SET @counter = @counter + 1;
84076 END|
84077 SET @counter = 1;
84078 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
84079 INSERT INTO t1 (f_char1, f_char2, f_charbig)
84080 SELECT CAST(f_int1 AS CHAR),
84081 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
84082 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
84083 ORDER BY f_int1;
84084 DROP TRIGGER trg_3;
84085         
84086 # check trigger-12 success:     1
84087 DELETE FROM t1
84088 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
84089 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
84090 AND f_charbig = '####updated per insert trigger####';
84091 ANALYZE  TABLE t1;
84092 Table   Op      Msg_type        Msg_text
84093 test.t1 analyze status  OK
84094 CHECK    TABLE t1 EXTENDED;
84095 Table   Op      Msg_type        Msg_text
84096 test.t1 check   status  OK
84097 CHECKSUM TABLE t1 EXTENDED;
84098 Table   Checksum
84099 test.t1 <some_value>
84100 OPTIMIZE TABLE t1;
84101 Table   Op      Msg_type        Msg_text
84102 test.t1 optimize        status  OK
84103 # check layout success:    1
84104 REPAIR   TABLE t1 EXTENDED;
84105 Table   Op      Msg_type        Msg_text
84106 test.t1 repair  status  OK
84107 # check layout success:    1
84108 TRUNCATE t1;
84109         
84110 # check TRUNCATE success:       1
84111 # check layout success:    1
84112 # End usability test (inc/partition_check.inc)
84113 DROP TABLE t1;
84114 CREATE TABLE t1 (
84115 f_int1 INTEGER,
84116 f_int2 INTEGER,
84117 f_char1 CHAR(20),
84118 f_char2 CHAR(20),
84119 f_charbig VARCHAR(1000)
84122 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
84123 (PARTITION part_1 VALUES LESS THAN (0),
84124 PARTITION part_2 VALUES LESS THAN (5),
84125 PARTITION part_3 VALUES LESS THAN (10),
84126 PARTITION part_4 VALUES LESS THAN (2147483646));
84127 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
84128 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
84129 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
84130 ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1;
84131 Table   Op      Msg_type        Msg_text
84132 test.t1 repair  error   Error in list of partitions to test.t1
84133 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
84134 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
84135 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
84136 # Start usability test (inc/partition_check.inc)
84137 create_command
84138 SHOW CREATE TABLE t1;
84139 Table   Create Table
84140 t1      CREATE TABLE `t1` (
84141   `f_int1` int(11) DEFAULT NULL,
84142   `f_int2` int(11) DEFAULT NULL,
84143   `f_char1` char(20) DEFAULT NULL,
84144   `f_char2` char(20) DEFAULT NULL,
84145   `f_charbig` varchar(1000) DEFAULT NULL
84146 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
84147 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
84148 SUBPARTITION BY HASH (f_int1)
84149 SUBPARTITIONS 2
84150 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
84151  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
84152  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
84153  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
84155 unified filelist
84156 t1#P#part_1#SP#part_1sp0.MYD
84157 t1#P#part_1#SP#part_1sp0.MYI
84158 t1#P#part_1#SP#part_1sp1.MYD
84159 t1#P#part_1#SP#part_1sp1.MYI
84160 t1#P#part_2#SP#part_2sp0.MYD
84161 t1#P#part_2#SP#part_2sp0.MYI
84162 t1#P#part_2#SP#part_2sp1.MYD
84163 t1#P#part_2#SP#part_2sp1.MYI
84164 t1#P#part_3#SP#part_3sp0.MYD
84165 t1#P#part_3#SP#part_3sp0.MYI
84166 t1#P#part_3#SP#part_3sp1.MYD
84167 t1#P#part_3#SP#part_3sp1.MYI
84168 t1#P#part_4#SP#part_4sp0.MYD
84169 t1#P#part_4#SP#part_4sp0.MYI
84170 t1#P#part_4#SP#part_4sp1.MYD
84171 t1#P#part_4#SP#part_4sp1.MYI
84172 t1.frm
84173 t1.par
84175 # check prerequisites-1 success:    1
84176 # check COUNT(*) success:    1
84177 # check MIN/MAX(f_int1) success:    1
84178 # check MIN/MAX(f_int2) success:    1
84179 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
84180 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
84181 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
84182 WHERE f_int1 IN (2,3);
84183 # check prerequisites-3 success:    1
84184 DELETE FROM t1 WHERE f_charbig = 'delete me';
84185 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
84186 # check read via f_int1 success: 1
84187 # check read via f_int2 success: 1
84188         
84189 # check multiple-1 success:     1
84190 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
84191         
84192 # check multiple-2 success:     1
84193 INSERT INTO t1 SELECT * FROM t0_template
84194 WHERE MOD(f_int1,3) = 0;
84195         
84196 # check multiple-3 success:     1
84197 UPDATE t1 SET f_int1 = f_int1 + @max_row
84198 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
84199 AND @max_row_div2 + @max_row_div4;
84200         
84201 # check multiple-4 success:     1
84202 DELETE FROM t1
84203 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
84204 AND @max_row_div2 + @max_row_div4 + @max_row;
84205         
84206 # check multiple-5 success:     1
84207 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
84208 INSERT INTO t1
84209 SET f_int1 = @cur_value , f_int2 = @cur_value,
84210 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
84211 f_charbig = '#SINGLE#';
84212         
84213 # check single-1 success:       1
84214 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
84215 INSERT INTO t1
84216 SET f_int1 = @cur_value , f_int2 = @cur_value,
84217 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
84218 f_charbig = '#SINGLE#';
84219         
84220 # check single-2 success:       1
84221 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
84222 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
84223 UPDATE t1 SET f_int1 = @cur_value2
84224 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
84225         
84226 # check single-3 success:       1
84227 SET @cur_value1= -1;
84228 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
84229 UPDATE t1 SET f_int1 = @cur_value1
84230 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
84231         
84232 # check single-4 success:       1
84233 SELECT MAX(f_int1) INTO @cur_value FROM t1;
84234 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
84235         
84236 # check single-5 success:       1
84237 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
84238         
84239 # check single-6 success:       1
84240 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
84241         
84242 # check single-7 success:       1
84243 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
84244 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
84245 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
84246 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
84247 f_charbig = '#NULL#';
84248 INSERT INTO t1
84249 SET f_int1 = NULL , f_int2 = -@max_row,
84250 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
84251 f_charbig = '#NULL#';
84252 # check null success:    1
84253         
84254 # check null-1 success:         1
84255 UPDATE t1 SET f_int1 = -@max_row
84256 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
84257 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
84258         
84259 # check null-2 success:         1
84260 UPDATE t1 SET f_int1 = NULL
84261 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
84262 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
84263         
84264 # check null-3 success:         1
84265 DELETE FROM t1
84266 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
84267 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
84268         
84269 # check null-4 success:         1
84270 DELETE FROM t1
84271 WHERE f_int1 = 0 AND f_int2 = 0
84272 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
84273 AND f_charbig = '#NULL#';
84274 SET AUTOCOMMIT= 0;
84275 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
84276 SELECT f_int1, f_int1, '', '', 'was inserted'
84277 FROM t0_template source_tab
84278 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
84279         
84280 # check transactions-1 success:         1
84281 COMMIT WORK;
84282         
84283 # check transactions-2 success:         1
84284 ROLLBACK WORK;
84285         
84286 # check transactions-3 success:         1
84287 DELETE FROM t1 WHERE f_charbig = 'was inserted';
84288 COMMIT WORK;
84289 ROLLBACK WORK;
84290         
84291 # check transactions-4 success:         1
84292 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
84293 SELECT f_int1, f_int1, '', '', 'was inserted'
84294 FROM t0_template source_tab
84295 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
84296         
84297 # check transactions-5 success:         1
84298 ROLLBACK WORK;
84299 Warnings:
84300 Warning 1196    Some non-transactional changed tables couldn't be rolled back
84301         
84302 # check transactions-6 success:         1
84303 # INFO: Storage engine used for t1 seems to be not transactional.
84304 COMMIT;
84305         
84306 # check transactions-7 success:         1
84307 DELETE FROM t1 WHERE f_charbig = 'was inserted';
84308 COMMIT WORK;
84309 SET @@session.sql_mode = 'traditional';
84310 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
84311 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
84312 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
84313 '', '', 'was inserted' FROM t0_template
84314 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
84315 ERROR 22012: Division by 0
84316 COMMIT;
84317         
84318 # check transactions-8 success:         1
84319 # INFO: Storage engine used for t1 seems to be unable to revert
84320 #       changes made by the failing statement.
84321 SET @@session.sql_mode = '';
84322 SET AUTOCOMMIT= 1;
84323 DELETE FROM t1 WHERE f_charbig = 'was inserted';
84324 COMMIT WORK;
84325 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
84326         
84327 # check special-1 success:      1
84328 UPDATE t1 SET f_charbig = '';
84329         
84330 # check special-2 success:      1
84331 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
84332 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
84333 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
84334 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84335 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84336 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84337 'just inserted' FROM t0_template
84338 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84339 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
84340 BEGIN
84341 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84342 f_charbig = 'updated by trigger'
84343       WHERE f_int1 = new.f_int1;
84344 END|
84345 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84346 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
84347 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84348         
84349 # check trigger-1 success:      1
84350 DROP TRIGGER trg_1;
84351 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84352 f_int2 = CAST(f_char1 AS SIGNED INT),
84353 f_charbig = 'just inserted'
84354    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84355 DELETE FROM t0_aux
84356 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84357 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84358 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84359 'just inserted' FROM t0_template
84360 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84361 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
84362 BEGIN
84363 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84364 f_charbig = 'updated by trigger'
84365       WHERE f_int1 = new.f_int1;
84366 END|
84367 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84368 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
84369 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84370         
84371 # check trigger-2 success:      1
84372 DROP TRIGGER trg_1;
84373 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84374 f_int2 = CAST(f_char1 AS SIGNED INT),
84375 f_charbig = 'just inserted'
84376    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84377 DELETE FROM t0_aux
84378 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84379 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84380 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84381 'just inserted' FROM t0_template
84382 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84383 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
84384 BEGIN
84385 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84386 f_charbig = 'updated by trigger'
84387       WHERE f_int1 = new.f_int1;
84388 END|
84389 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
84390 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
84391         
84392 # check trigger-3 success:      1
84393 DROP TRIGGER trg_1;
84394 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84395 f_int2 = CAST(f_char1 AS SIGNED INT),
84396 f_charbig = 'just inserted'
84397    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84398 DELETE FROM t0_aux
84399 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84400 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84401 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84402 'just inserted' FROM t0_template
84403 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84404 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
84405 BEGIN
84406 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84407 f_charbig = 'updated by trigger'
84408       WHERE f_int1 = - old.f_int1;
84409 END|
84410 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
84411 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
84412         
84413 # check trigger-4 success:      1
84414 DROP TRIGGER trg_1;
84415 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84416 f_int2 = CAST(f_char1 AS SIGNED INT),
84417 f_charbig = 'just inserted'
84418    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84419 DELETE FROM t0_aux
84420 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84421 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84422 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84423 'just inserted' FROM t0_template
84424 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84425 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
84426 BEGIN
84427 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84428 f_charbig = 'updated by trigger'
84429       WHERE f_int1 = new.f_int1;
84430 END|
84431 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
84432 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
84433         
84434 # check trigger-5 success:      1
84435 DROP TRIGGER trg_1;
84436 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84437 f_int2 = CAST(f_char1 AS SIGNED INT),
84438 f_charbig = 'just inserted'
84439    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84440 DELETE FROM t0_aux
84441 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84442 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84443 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84444 'just inserted' FROM t0_template
84445 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84446 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
84447 BEGIN
84448 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84449 f_charbig = 'updated by trigger'
84450       WHERE f_int1 = - old.f_int1;
84451 END|
84452 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
84453 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
84454         
84455 # check trigger-6 success:      1
84456 DROP TRIGGER trg_1;
84457 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84458 f_int2 = CAST(f_char1 AS SIGNED INT),
84459 f_charbig = 'just inserted'
84460    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84461 DELETE FROM t0_aux
84462 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84463 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84464 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84465 'just inserted' FROM t0_template
84466 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84467 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
84468 BEGIN
84469 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84470 f_charbig = 'updated by trigger'
84471       WHERE f_int1 = - old.f_int1;
84472 END|
84473 DELETE FROM t0_aux
84474 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
84475         
84476 # check trigger-7 success:      1
84477 DROP TRIGGER trg_1;
84478 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84479 f_int2 = CAST(f_char1 AS SIGNED INT),
84480 f_charbig = 'just inserted'
84481    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84482 DELETE FROM t0_aux
84483 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84484 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84485 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84486 'just inserted' FROM t0_template
84487 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84488 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
84489 BEGIN
84490 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84491 f_charbig = 'updated by trigger'
84492       WHERE f_int1 = - old.f_int1;
84493 END|
84494 DELETE FROM t0_aux
84495 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
84496         
84497 # check trigger-8 success:      1
84498 DROP TRIGGER trg_1;
84499 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84500 f_int2 = CAST(f_char1 AS SIGNED INT),
84501 f_charbig = 'just inserted'
84502    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84503 DELETE FROM t0_aux
84504 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84505 DELETE FROM t1
84506 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84507 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
84508 BEGIN
84509 SET new.f_int1 = old.f_int1 + @max_row,
84510 new.f_int2 = old.f_int2 - @max_row,
84511 new.f_charbig = '####updated per update trigger####';
84512 END|
84513 UPDATE t1
84514 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
84515 f_charbig = '####updated per update statement itself####';
84516         
84517 # check trigger-9 success:      1
84518 DROP TRIGGER trg_2;
84519 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84520 f_int2 = CAST(f_char1 AS SIGNED INT),
84521 f_charbig = CONCAT('===',f_char1,'===');
84522 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
84523 BEGIN
84524 SET new.f_int1 = new.f_int1 + @max_row,
84525 new.f_int2 = new.f_int2 - @max_row,
84526 new.f_charbig = '####updated per update trigger####';
84527 END|
84528 UPDATE t1
84529 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
84530 f_charbig = '####updated per update statement itself####';
84531         
84532 # check trigger-10 success:     1
84533 DROP TRIGGER trg_2;
84534 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84535 f_int2 = CAST(f_char1 AS SIGNED INT),
84536 f_charbig = CONCAT('===',f_char1,'===');
84537 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
84538 BEGIN
84539 SET new.f_int1 = @my_max1 + @counter,
84540 new.f_int2 = @my_min2 - @counter,
84541 new.f_charbig = '####updated per insert trigger####';
84542 SET @counter = @counter + 1;
84543 END|
84544 SET @counter = 1;
84545 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
84546 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
84547 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
84548 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
84549 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
84550 ORDER BY f_int1;
84551 DROP TRIGGER trg_3;
84552         
84553 # check trigger-11 success:     1
84554 DELETE FROM t1
84555 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
84556 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
84557 AND f_charbig = '####updated per insert trigger####';
84558 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
84559 BEGIN
84560 SET new.f_int1 = @my_max1 + @counter,
84561 new.f_int2 = @my_min2 - @counter,
84562 new.f_charbig = '####updated per insert trigger####';
84563 SET @counter = @counter + 1;
84564 END|
84565 SET @counter = 1;
84566 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
84567 INSERT INTO t1 (f_char1, f_char2, f_charbig)
84568 SELECT CAST(f_int1 AS CHAR),
84569 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
84570 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
84571 ORDER BY f_int1;
84572 DROP TRIGGER trg_3;
84573         
84574 # check trigger-12 success:     1
84575 DELETE FROM t1
84576 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
84577 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
84578 AND f_charbig = '####updated per insert trigger####';
84579 ANALYZE  TABLE t1;
84580 Table   Op      Msg_type        Msg_text
84581 test.t1 analyze status  OK
84582 CHECK    TABLE t1 EXTENDED;
84583 Table   Op      Msg_type        Msg_text
84584 test.t1 check   status  OK
84585 CHECKSUM TABLE t1 EXTENDED;
84586 Table   Checksum
84587 test.t1 <some_value>
84588 OPTIMIZE TABLE t1;
84589 Table   Op      Msg_type        Msg_text
84590 test.t1 optimize        status  OK
84591 # check layout success:    1
84592 REPAIR   TABLE t1 EXTENDED;
84593 Table   Op      Msg_type        Msg_text
84594 test.t1 repair  status  OK
84595 # check layout success:    1
84596 TRUNCATE t1;
84597         
84598 # check TRUNCATE success:       1
84599 # check layout success:    1
84600 # End usability test (inc/partition_check.inc)
84601 DROP TABLE t1;
84602 CREATE TABLE t1 (
84603 f_int1 INTEGER,
84604 f_int2 INTEGER,
84605 f_char1 CHAR(20),
84606 f_char2 CHAR(20),
84607 f_charbig VARCHAR(1000)
84610 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
84611 (PARTITION part_1 VALUES LESS THAN (0)
84612 (SUBPARTITION subpart11, SUBPARTITION subpart12),
84613 PARTITION part_2 VALUES LESS THAN (5)
84614 (SUBPARTITION subpart21, SUBPARTITION subpart22),
84615 PARTITION part_3 VALUES LESS THAN (10)
84616 (SUBPARTITION subpart31, SUBPARTITION subpart32),
84617 PARTITION part_4 VALUES LESS THAN (2147483646)
84618 (SUBPARTITION subpart41, SUBPARTITION subpart42));
84619 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
84620 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
84621 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
84622 ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1;
84623 Table   Op      Msg_type        Msg_text
84624 test.t1 repair  error   Error in list of partitions to test.t1
84625 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
84626 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
84627 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
84628 # Start usability test (inc/partition_check.inc)
84629 create_command
84630 SHOW CREATE TABLE t1;
84631 Table   Create Table
84632 t1      CREATE TABLE `t1` (
84633   `f_int1` int(11) DEFAULT NULL,
84634   `f_int2` int(11) DEFAULT NULL,
84635   `f_char1` char(20) DEFAULT NULL,
84636   `f_char2` char(20) DEFAULT NULL,
84637   `f_charbig` varchar(1000) DEFAULT NULL
84638 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
84639 /*!50100 PARTITION BY RANGE (f_int1)
84640 SUBPARTITION BY KEY (f_int1)
84641 (PARTITION part_1 VALUES LESS THAN (0)
84642  (SUBPARTITION subpart11 ENGINE = MyISAM,
84643   SUBPARTITION subpart12 ENGINE = MyISAM),
84644  PARTITION part_2 VALUES LESS THAN (5)
84645  (SUBPARTITION subpart21 ENGINE = MyISAM,
84646   SUBPARTITION subpart22 ENGINE = MyISAM),
84647  PARTITION part_3 VALUES LESS THAN (10)
84648  (SUBPARTITION subpart31 ENGINE = MyISAM,
84649   SUBPARTITION subpart32 ENGINE = MyISAM),
84650  PARTITION part_4 VALUES LESS THAN (2147483646)
84651  (SUBPARTITION subpart41 ENGINE = MyISAM,
84652   SUBPARTITION subpart42 ENGINE = MyISAM)) */
84654 unified filelist
84655 t1#P#part_1#SP#subpart11.MYD
84656 t1#P#part_1#SP#subpart11.MYI
84657 t1#P#part_1#SP#subpart12.MYD
84658 t1#P#part_1#SP#subpart12.MYI
84659 t1#P#part_2#SP#subpart21.MYD
84660 t1#P#part_2#SP#subpart21.MYI
84661 t1#P#part_2#SP#subpart22.MYD
84662 t1#P#part_2#SP#subpart22.MYI
84663 t1#P#part_3#SP#subpart31.MYD
84664 t1#P#part_3#SP#subpart31.MYI
84665 t1#P#part_3#SP#subpart32.MYD
84666 t1#P#part_3#SP#subpart32.MYI
84667 t1#P#part_4#SP#subpart41.MYD
84668 t1#P#part_4#SP#subpart41.MYI
84669 t1#P#part_4#SP#subpart42.MYD
84670 t1#P#part_4#SP#subpart42.MYI
84671 t1.frm
84672 t1.par
84674 # check prerequisites-1 success:    1
84675 # check COUNT(*) success:    1
84676 # check MIN/MAX(f_int1) success:    1
84677 # check MIN/MAX(f_int2) success:    1
84678 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
84679 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
84680 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
84681 WHERE f_int1 IN (2,3);
84682 # check prerequisites-3 success:    1
84683 DELETE FROM t1 WHERE f_charbig = 'delete me';
84684 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
84685 # check read via f_int1 success: 1
84686 # check read via f_int2 success: 1
84687         
84688 # check multiple-1 success:     1
84689 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
84690         
84691 # check multiple-2 success:     1
84692 INSERT INTO t1 SELECT * FROM t0_template
84693 WHERE MOD(f_int1,3) = 0;
84694         
84695 # check multiple-3 success:     1
84696 UPDATE t1 SET f_int1 = f_int1 + @max_row
84697 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
84698 AND @max_row_div2 + @max_row_div4;
84699         
84700 # check multiple-4 success:     1
84701 DELETE FROM t1
84702 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
84703 AND @max_row_div2 + @max_row_div4 + @max_row;
84704         
84705 # check multiple-5 success:     1
84706 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
84707 INSERT INTO t1
84708 SET f_int1 = @cur_value , f_int2 = @cur_value,
84709 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
84710 f_charbig = '#SINGLE#';
84711         
84712 # check single-1 success:       1
84713 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
84714 INSERT INTO t1
84715 SET f_int1 = @cur_value , f_int2 = @cur_value,
84716 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
84717 f_charbig = '#SINGLE#';
84718         
84719 # check single-2 success:       1
84720 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
84721 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
84722 UPDATE t1 SET f_int1 = @cur_value2
84723 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
84724         
84725 # check single-3 success:       1
84726 SET @cur_value1= -1;
84727 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
84728 UPDATE t1 SET f_int1 = @cur_value1
84729 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
84730         
84731 # check single-4 success:       1
84732 SELECT MAX(f_int1) INTO @cur_value FROM t1;
84733 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
84734         
84735 # check single-5 success:       1
84736 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
84737         
84738 # check single-6 success:       1
84739 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
84740 ERROR HY000: Table has no partition for value 2147483647
84741 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
84742 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
84743 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
84744 f_charbig = '#NULL#';
84745 INSERT INTO t1
84746 SET f_int1 = NULL , f_int2 = -@max_row,
84747 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
84748 f_charbig = '#NULL#';
84749 # check null success:    1
84750         
84751 # check null-1 success:         1
84752 UPDATE t1 SET f_int1 = -@max_row
84753 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
84754 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
84755         
84756 # check null-2 success:         1
84757 UPDATE t1 SET f_int1 = NULL
84758 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
84759 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
84760         
84761 # check null-3 success:         1
84762 DELETE FROM t1
84763 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
84764 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
84765         
84766 # check null-4 success:         1
84767 DELETE FROM t1
84768 WHERE f_int1 = 0 AND f_int2 = 0
84769 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
84770 AND f_charbig = '#NULL#';
84771 SET AUTOCOMMIT= 0;
84772 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
84773 SELECT f_int1, f_int1, '', '', 'was inserted'
84774 FROM t0_template source_tab
84775 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
84776         
84777 # check transactions-1 success:         1
84778 COMMIT WORK;
84779         
84780 # check transactions-2 success:         1
84781 ROLLBACK WORK;
84782         
84783 # check transactions-3 success:         1
84784 DELETE FROM t1 WHERE f_charbig = 'was inserted';
84785 COMMIT WORK;
84786 ROLLBACK WORK;
84787         
84788 # check transactions-4 success:         1
84789 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
84790 SELECT f_int1, f_int1, '', '', 'was inserted'
84791 FROM t0_template source_tab
84792 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
84793         
84794 # check transactions-5 success:         1
84795 ROLLBACK WORK;
84796 Warnings:
84797 Warning 1196    Some non-transactional changed tables couldn't be rolled back
84798         
84799 # check transactions-6 success:         1
84800 # INFO: Storage engine used for t1 seems to be not transactional.
84801 COMMIT;
84802         
84803 # check transactions-7 success:         1
84804 DELETE FROM t1 WHERE f_charbig = 'was inserted';
84805 COMMIT WORK;
84806 SET @@session.sql_mode = 'traditional';
84807 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
84808 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
84809 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
84810 '', '', 'was inserted' FROM t0_template
84811 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
84812 ERROR 22012: Division by 0
84813 COMMIT;
84814         
84815 # check transactions-8 success:         1
84816 # INFO: Storage engine used for t1 seems to be unable to revert
84817 #       changes made by the failing statement.
84818 SET @@session.sql_mode = '';
84819 SET AUTOCOMMIT= 1;
84820 DELETE FROM t1 WHERE f_charbig = 'was inserted';
84821 COMMIT WORK;
84822 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
84823         
84824 # check special-1 success:      1
84825 UPDATE t1 SET f_charbig = '';
84826         
84827 # check special-2 success:      1
84828 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
84829 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
84830 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
84831 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84832 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84833 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84834 'just inserted' FROM t0_template
84835 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84836 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
84837 BEGIN
84838 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84839 f_charbig = 'updated by trigger'
84840       WHERE f_int1 = new.f_int1;
84841 END|
84842 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84843 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
84844 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84845         
84846 # check trigger-1 success:      1
84847 DROP TRIGGER trg_1;
84848 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84849 f_int2 = CAST(f_char1 AS SIGNED INT),
84850 f_charbig = 'just inserted'
84851    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84852 DELETE FROM t0_aux
84853 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84854 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84855 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84856 'just inserted' FROM t0_template
84857 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84858 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
84859 BEGIN
84860 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84861 f_charbig = 'updated by trigger'
84862       WHERE f_int1 = new.f_int1;
84863 END|
84864 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84865 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
84866 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84867         
84868 # check trigger-2 success:      1
84869 DROP TRIGGER trg_1;
84870 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84871 f_int2 = CAST(f_char1 AS SIGNED INT),
84872 f_charbig = 'just inserted'
84873    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84874 DELETE FROM t0_aux
84875 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84876 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84877 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84878 'just inserted' FROM t0_template
84879 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84880 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
84881 BEGIN
84882 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84883 f_charbig = 'updated by trigger'
84884       WHERE f_int1 = new.f_int1;
84885 END|
84886 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
84887 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
84888         
84889 # check trigger-3 success:      1
84890 DROP TRIGGER trg_1;
84891 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84892 f_int2 = CAST(f_char1 AS SIGNED INT),
84893 f_charbig = 'just inserted'
84894    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84895 DELETE FROM t0_aux
84896 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84897 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84898 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84899 'just inserted' FROM t0_template
84900 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84901 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
84902 BEGIN
84903 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84904 f_charbig = 'updated by trigger'
84905       WHERE f_int1 = - old.f_int1;
84906 END|
84907 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
84908 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
84909         
84910 # check trigger-4 success:      1
84911 DROP TRIGGER trg_1;
84912 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84913 f_int2 = CAST(f_char1 AS SIGNED INT),
84914 f_charbig = 'just inserted'
84915    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84916 DELETE FROM t0_aux
84917 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84918 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84919 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84920 'just inserted' FROM t0_template
84921 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84922 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
84923 BEGIN
84924 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84925 f_charbig = 'updated by trigger'
84926       WHERE f_int1 = new.f_int1;
84927 END|
84928 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
84929 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
84930         
84931 # check trigger-5 success:      1
84932 DROP TRIGGER trg_1;
84933 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84934 f_int2 = CAST(f_char1 AS SIGNED INT),
84935 f_charbig = 'just inserted'
84936    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84937 DELETE FROM t0_aux
84938 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84939 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84940 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84941 'just inserted' FROM t0_template
84942 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84943 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
84944 BEGIN
84945 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84946 f_charbig = 'updated by trigger'
84947       WHERE f_int1 = - old.f_int1;
84948 END|
84949 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
84950 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
84951         
84952 # check trigger-6 success:      1
84953 DROP TRIGGER trg_1;
84954 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84955 f_int2 = CAST(f_char1 AS SIGNED INT),
84956 f_charbig = 'just inserted'
84957    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84958 DELETE FROM t0_aux
84959 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84960 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84961 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84962 'just inserted' FROM t0_template
84963 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84964 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
84965 BEGIN
84966 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84967 f_charbig = 'updated by trigger'
84968       WHERE f_int1 = - old.f_int1;
84969 END|
84970 DELETE FROM t0_aux
84971 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
84972         
84973 # check trigger-7 success:      1
84974 DROP TRIGGER trg_1;
84975 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84976 f_int2 = CAST(f_char1 AS SIGNED INT),
84977 f_charbig = 'just inserted'
84978    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
84979 DELETE FROM t0_aux
84980 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84981 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
84982 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
84983 'just inserted' FROM t0_template
84984 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
84985 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
84986 BEGIN
84987 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
84988 f_charbig = 'updated by trigger'
84989       WHERE f_int1 = - old.f_int1;
84990 END|
84991 DELETE FROM t0_aux
84992 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
84993         
84994 # check trigger-8 success:      1
84995 DROP TRIGGER trg_1;
84996 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
84997 f_int2 = CAST(f_char1 AS SIGNED INT),
84998 f_charbig = 'just inserted'
84999    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85000 DELETE FROM t0_aux
85001 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85002 DELETE FROM t1
85003 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85004 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
85005 BEGIN
85006 SET new.f_int1 = old.f_int1 + @max_row,
85007 new.f_int2 = old.f_int2 - @max_row,
85008 new.f_charbig = '####updated per update trigger####';
85009 END|
85010 UPDATE t1
85011 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
85012 f_charbig = '####updated per update statement itself####';
85013         
85014 # check trigger-9 success:      1
85015 DROP TRIGGER trg_2;
85016 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85017 f_int2 = CAST(f_char1 AS SIGNED INT),
85018 f_charbig = CONCAT('===',f_char1,'===');
85019 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
85020 BEGIN
85021 SET new.f_int1 = new.f_int1 + @max_row,
85022 new.f_int2 = new.f_int2 - @max_row,
85023 new.f_charbig = '####updated per update trigger####';
85024 END|
85025 UPDATE t1
85026 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
85027 f_charbig = '####updated per update statement itself####';
85028         
85029 # check trigger-10 success:     1
85030 DROP TRIGGER trg_2;
85031 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85032 f_int2 = CAST(f_char1 AS SIGNED INT),
85033 f_charbig = CONCAT('===',f_char1,'===');
85034 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
85035 BEGIN
85036 SET new.f_int1 = @my_max1 + @counter,
85037 new.f_int2 = @my_min2 - @counter,
85038 new.f_charbig = '####updated per insert trigger####';
85039 SET @counter = @counter + 1;
85040 END|
85041 SET @counter = 1;
85042 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
85043 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
85044 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
85045 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
85046 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
85047 ORDER BY f_int1;
85048 DROP TRIGGER trg_3;
85049         
85050 # check trigger-11 success:     1
85051 DELETE FROM t1
85052 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
85053 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
85054 AND f_charbig = '####updated per insert trigger####';
85055 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
85056 BEGIN
85057 SET new.f_int1 = @my_max1 + @counter,
85058 new.f_int2 = @my_min2 - @counter,
85059 new.f_charbig = '####updated per insert trigger####';
85060 SET @counter = @counter + 1;
85061 END|
85062 SET @counter = 1;
85063 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
85064 INSERT INTO t1 (f_char1, f_char2, f_charbig)
85065 SELECT CAST(f_int1 AS CHAR),
85066 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
85067 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
85068 ORDER BY f_int1;
85069 DROP TRIGGER trg_3;
85070         
85071 # check trigger-12 success:     1
85072 DELETE FROM t1
85073 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
85074 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
85075 AND f_charbig = '####updated per insert trigger####';
85076 ANALYZE  TABLE t1;
85077 Table   Op      Msg_type        Msg_text
85078 test.t1 analyze status  OK
85079 CHECK    TABLE t1 EXTENDED;
85080 Table   Op      Msg_type        Msg_text
85081 test.t1 check   status  OK
85082 CHECKSUM TABLE t1 EXTENDED;
85083 Table   Checksum
85084 test.t1 <some_value>
85085 OPTIMIZE TABLE t1;
85086 Table   Op      Msg_type        Msg_text
85087 test.t1 optimize        status  OK
85088 # check layout success:    1
85089 REPAIR   TABLE t1 EXTENDED;
85090 Table   Op      Msg_type        Msg_text
85091 test.t1 repair  status  OK
85092 # check layout success:    1
85093 TRUNCATE t1;
85094         
85095 # check TRUNCATE success:       1
85096 # check layout success:    1
85097 # End usability test (inc/partition_check.inc)
85098 DROP TABLE t1;
85099 CREATE TABLE t1 (
85100 f_int1 INTEGER,
85101 f_int2 INTEGER,
85102 f_char1 CHAR(20),
85103 f_char2 CHAR(20),
85104 f_charbig VARCHAR(1000)
85107 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
85108 (PARTITION part_1 VALUES IN (0)
85109 (SUBPARTITION sp11, SUBPARTITION sp12),
85110 PARTITION part_2 VALUES IN (1)
85111 (SUBPARTITION sp21, SUBPARTITION sp22),
85112 PARTITION part_3 VALUES IN (2)
85113 (SUBPARTITION sp31, SUBPARTITION sp32),
85114 PARTITION part_4 VALUES IN (NULL)
85115 (SUBPARTITION sp41, SUBPARTITION sp42));
85116 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
85117 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
85118 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
85119 ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1;
85120 Table   Op      Msg_type        Msg_text
85121 test.t1 repair  error   Error in list of partitions to test.t1
85122 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
85123 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
85124 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
85125 # Start usability test (inc/partition_check.inc)
85126 create_command
85127 SHOW CREATE TABLE t1;
85128 Table   Create Table
85129 t1      CREATE TABLE `t1` (
85130   `f_int1` int(11) DEFAULT NULL,
85131   `f_int2` int(11) DEFAULT NULL,
85132   `f_char1` char(20) DEFAULT NULL,
85133   `f_char2` char(20) DEFAULT NULL,
85134   `f_charbig` varchar(1000) DEFAULT NULL
85135 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
85136 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
85137 SUBPARTITION BY HASH (f_int1 + 1)
85138 (PARTITION part_1 VALUES IN (0)
85139  (SUBPARTITION sp11 ENGINE = MyISAM,
85140   SUBPARTITION sp12 ENGINE = MyISAM),
85141  PARTITION part_2 VALUES IN (1)
85142  (SUBPARTITION sp21 ENGINE = MyISAM,
85143   SUBPARTITION sp22 ENGINE = MyISAM),
85144  PARTITION part_3 VALUES IN (2)
85145  (SUBPARTITION sp31 ENGINE = MyISAM,
85146   SUBPARTITION sp32 ENGINE = MyISAM),
85147  PARTITION part_4 VALUES IN (NULL)
85148  (SUBPARTITION sp41 ENGINE = MyISAM,
85149   SUBPARTITION sp42 ENGINE = MyISAM)) */
85151 unified filelist
85152 t1#P#part_1#SP#sp11.MYD
85153 t1#P#part_1#SP#sp11.MYI
85154 t1#P#part_1#SP#sp12.MYD
85155 t1#P#part_1#SP#sp12.MYI
85156 t1#P#part_2#SP#sp21.MYD
85157 t1#P#part_2#SP#sp21.MYI
85158 t1#P#part_2#SP#sp22.MYD
85159 t1#P#part_2#SP#sp22.MYI
85160 t1#P#part_3#SP#sp31.MYD
85161 t1#P#part_3#SP#sp31.MYI
85162 t1#P#part_3#SP#sp32.MYD
85163 t1#P#part_3#SP#sp32.MYI
85164 t1#P#part_4#SP#sp41.MYD
85165 t1#P#part_4#SP#sp41.MYI
85166 t1#P#part_4#SP#sp42.MYD
85167 t1#P#part_4#SP#sp42.MYI
85168 t1.frm
85169 t1.par
85171 # check prerequisites-1 success:    1
85172 # check COUNT(*) success:    1
85173 # check MIN/MAX(f_int1) success:    1
85174 # check MIN/MAX(f_int2) success:    1
85175 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
85176 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
85177 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
85178 WHERE f_int1 IN (2,3);
85179 # check prerequisites-3 success:    1
85180 DELETE FROM t1 WHERE f_charbig = 'delete me';
85181 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
85182 # check read via f_int1 success: 1
85183 # check read via f_int2 success: 1
85184         
85185 # check multiple-1 success:     1
85186 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
85187         
85188 # check multiple-2 success:     1
85189 INSERT INTO t1 SELECT * FROM t0_template
85190 WHERE MOD(f_int1,3) = 0;
85191         
85192 # check multiple-3 success:     1
85193 UPDATE t1 SET f_int1 = f_int1 + @max_row
85194 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
85195 AND @max_row_div2 + @max_row_div4;
85196         
85197 # check multiple-4 success:     1
85198 DELETE FROM t1
85199 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
85200 AND @max_row_div2 + @max_row_div4 + @max_row;
85201         
85202 # check multiple-5 success:     1
85203 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
85204 INSERT INTO t1
85205 SET f_int1 = @cur_value , f_int2 = @cur_value,
85206 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
85207 f_charbig = '#SINGLE#';
85208         
85209 # check single-1 success:       1
85210 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
85211 INSERT INTO t1
85212 SET f_int1 = @cur_value , f_int2 = @cur_value,
85213 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
85214 f_charbig = '#SINGLE#';
85215         
85216 # check single-2 success:       1
85217 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
85218 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
85219 UPDATE t1 SET f_int1 = @cur_value2
85220 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
85221         
85222 # check single-3 success:       1
85223 SET @cur_value1= -1;
85224 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
85225 UPDATE t1 SET f_int1 = @cur_value1
85226 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
85227         
85228 # check single-4 success:       1
85229 SELECT MAX(f_int1) INTO @cur_value FROM t1;
85230 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
85231         
85232 # check single-5 success:       1
85233 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
85234         
85235 # check single-6 success:       1
85236 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
85237         
85238 # check single-7 success:       1
85239 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
85240 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
85241 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
85242 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
85243 f_charbig = '#NULL#';
85244 INSERT INTO t1
85245 SET f_int1 = NULL , f_int2 = -@max_row,
85246 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
85247 f_charbig = '#NULL#';
85248 # check null success:    1
85249         
85250 # check null-1 success:         1
85251 UPDATE t1 SET f_int1 = -@max_row
85252 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
85253 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
85254         
85255 # check null-2 success:         1
85256 UPDATE t1 SET f_int1 = NULL
85257 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
85258 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
85259         
85260 # check null-3 success:         1
85261 DELETE FROM t1
85262 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
85263 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
85264         
85265 # check null-4 success:         1
85266 DELETE FROM t1
85267 WHERE f_int1 = 0 AND f_int2 = 0
85268 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
85269 AND f_charbig = '#NULL#';
85270 SET AUTOCOMMIT= 0;
85271 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
85272 SELECT f_int1, f_int1, '', '', 'was inserted'
85273 FROM t0_template source_tab
85274 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
85275         
85276 # check transactions-1 success:         1
85277 COMMIT WORK;
85278         
85279 # check transactions-2 success:         1
85280 ROLLBACK WORK;
85281         
85282 # check transactions-3 success:         1
85283 DELETE FROM t1 WHERE f_charbig = 'was inserted';
85284 COMMIT WORK;
85285 ROLLBACK WORK;
85286         
85287 # check transactions-4 success:         1
85288 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
85289 SELECT f_int1, f_int1, '', '', 'was inserted'
85290 FROM t0_template source_tab
85291 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
85292         
85293 # check transactions-5 success:         1
85294 ROLLBACK WORK;
85295 Warnings:
85296 Warning 1196    Some non-transactional changed tables couldn't be rolled back
85297         
85298 # check transactions-6 success:         1
85299 # INFO: Storage engine used for t1 seems to be not transactional.
85300 COMMIT;
85301         
85302 # check transactions-7 success:         1
85303 DELETE FROM t1 WHERE f_charbig = 'was inserted';
85304 COMMIT WORK;
85305 SET @@session.sql_mode = 'traditional';
85306 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
85307 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
85308 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
85309 '', '', 'was inserted' FROM t0_template
85310 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
85311 ERROR 22012: Division by 0
85312 COMMIT;
85313         
85314 # check transactions-8 success:         1
85315 # INFO: Storage engine used for t1 seems to be unable to revert
85316 #       changes made by the failing statement.
85317 SET @@session.sql_mode = '';
85318 SET AUTOCOMMIT= 1;
85319 DELETE FROM t1 WHERE f_charbig = 'was inserted';
85320 COMMIT WORK;
85321 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
85322         
85323 # check special-1 success:      1
85324 UPDATE t1 SET f_charbig = '';
85325         
85326 # check special-2 success:      1
85327 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
85328 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
85329 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
85330 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85331 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85332 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85333 'just inserted' FROM t0_template
85334 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85335 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
85336 BEGIN
85337 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85338 f_charbig = 'updated by trigger'
85339       WHERE f_int1 = new.f_int1;
85340 END|
85341 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85342 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
85343 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85344         
85345 # check trigger-1 success:      1
85346 DROP TRIGGER trg_1;
85347 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85348 f_int2 = CAST(f_char1 AS SIGNED INT),
85349 f_charbig = 'just inserted'
85350    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85351 DELETE FROM t0_aux
85352 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85353 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85354 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85355 'just inserted' FROM t0_template
85356 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85357 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
85358 BEGIN
85359 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85360 f_charbig = 'updated by trigger'
85361       WHERE f_int1 = new.f_int1;
85362 END|
85363 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85364 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
85365 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85366         
85367 # check trigger-2 success:      1
85368 DROP TRIGGER trg_1;
85369 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85370 f_int2 = CAST(f_char1 AS SIGNED INT),
85371 f_charbig = 'just inserted'
85372    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85373 DELETE FROM t0_aux
85374 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85375 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85376 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85377 'just inserted' FROM t0_template
85378 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85379 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
85380 BEGIN
85381 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85382 f_charbig = 'updated by trigger'
85383       WHERE f_int1 = new.f_int1;
85384 END|
85385 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
85386 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
85387         
85388 # check trigger-3 success:      1
85389 DROP TRIGGER trg_1;
85390 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85391 f_int2 = CAST(f_char1 AS SIGNED INT),
85392 f_charbig = 'just inserted'
85393    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85394 DELETE FROM t0_aux
85395 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85396 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85397 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85398 'just inserted' FROM t0_template
85399 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85400 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
85401 BEGIN
85402 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85403 f_charbig = 'updated by trigger'
85404       WHERE f_int1 = - old.f_int1;
85405 END|
85406 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
85407 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
85408         
85409 # check trigger-4 success:      1
85410 DROP TRIGGER trg_1;
85411 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85412 f_int2 = CAST(f_char1 AS SIGNED INT),
85413 f_charbig = 'just inserted'
85414    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85415 DELETE FROM t0_aux
85416 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85417 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85418 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85419 'just inserted' FROM t0_template
85420 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85421 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
85422 BEGIN
85423 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85424 f_charbig = 'updated by trigger'
85425       WHERE f_int1 = new.f_int1;
85426 END|
85427 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
85428 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
85429         
85430 # check trigger-5 success:      1
85431 DROP TRIGGER trg_1;
85432 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85433 f_int2 = CAST(f_char1 AS SIGNED INT),
85434 f_charbig = 'just inserted'
85435    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85436 DELETE FROM t0_aux
85437 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85438 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85439 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85440 'just inserted' FROM t0_template
85441 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85442 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
85443 BEGIN
85444 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85445 f_charbig = 'updated by trigger'
85446       WHERE f_int1 = - old.f_int1;
85447 END|
85448 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
85449 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
85450         
85451 # check trigger-6 success:      1
85452 DROP TRIGGER trg_1;
85453 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85454 f_int2 = CAST(f_char1 AS SIGNED INT),
85455 f_charbig = 'just inserted'
85456    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85457 DELETE FROM t0_aux
85458 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85459 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85460 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85461 'just inserted' FROM t0_template
85462 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85463 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
85464 BEGIN
85465 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85466 f_charbig = 'updated by trigger'
85467       WHERE f_int1 = - old.f_int1;
85468 END|
85469 DELETE FROM t0_aux
85470 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
85471         
85472 # check trigger-7 success:      1
85473 DROP TRIGGER trg_1;
85474 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85475 f_int2 = CAST(f_char1 AS SIGNED INT),
85476 f_charbig = 'just inserted'
85477    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85478 DELETE FROM t0_aux
85479 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85480 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85481 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85482 'just inserted' FROM t0_template
85483 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85484 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
85485 BEGIN
85486 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85487 f_charbig = 'updated by trigger'
85488       WHERE f_int1 = - old.f_int1;
85489 END|
85490 DELETE FROM t0_aux
85491 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
85492         
85493 # check trigger-8 success:      1
85494 DROP TRIGGER trg_1;
85495 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85496 f_int2 = CAST(f_char1 AS SIGNED INT),
85497 f_charbig = 'just inserted'
85498    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85499 DELETE FROM t0_aux
85500 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85501 DELETE FROM t1
85502 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85503 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
85504 BEGIN
85505 SET new.f_int1 = old.f_int1 + @max_row,
85506 new.f_int2 = old.f_int2 - @max_row,
85507 new.f_charbig = '####updated per update trigger####';
85508 END|
85509 UPDATE t1
85510 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
85511 f_charbig = '####updated per update statement itself####';
85512         
85513 # check trigger-9 success:      1
85514 DROP TRIGGER trg_2;
85515 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85516 f_int2 = CAST(f_char1 AS SIGNED INT),
85517 f_charbig = CONCAT('===',f_char1,'===');
85518 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
85519 BEGIN
85520 SET new.f_int1 = new.f_int1 + @max_row,
85521 new.f_int2 = new.f_int2 - @max_row,
85522 new.f_charbig = '####updated per update trigger####';
85523 END|
85524 UPDATE t1
85525 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
85526 f_charbig = '####updated per update statement itself####';
85527         
85528 # check trigger-10 success:     1
85529 DROP TRIGGER trg_2;
85530 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85531 f_int2 = CAST(f_char1 AS SIGNED INT),
85532 f_charbig = CONCAT('===',f_char1,'===');
85533 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
85534 BEGIN
85535 SET new.f_int1 = @my_max1 + @counter,
85536 new.f_int2 = @my_min2 - @counter,
85537 new.f_charbig = '####updated per insert trigger####';
85538 SET @counter = @counter + 1;
85539 END|
85540 SET @counter = 1;
85541 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
85542 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
85543 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
85544 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
85545 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
85546 ORDER BY f_int1;
85547 DROP TRIGGER trg_3;
85548         
85549 # check trigger-11 success:     1
85550 DELETE FROM t1
85551 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
85552 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
85553 AND f_charbig = '####updated per insert trigger####';
85554 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
85555 BEGIN
85556 SET new.f_int1 = @my_max1 + @counter,
85557 new.f_int2 = @my_min2 - @counter,
85558 new.f_charbig = '####updated per insert trigger####';
85559 SET @counter = @counter + 1;
85560 END|
85561 SET @counter = 1;
85562 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
85563 INSERT INTO t1 (f_char1, f_char2, f_charbig)
85564 SELECT CAST(f_int1 AS CHAR),
85565 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
85566 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
85567 ORDER BY f_int1;
85568 DROP TRIGGER trg_3;
85569         
85570 # check trigger-12 success:     1
85571 DELETE FROM t1
85572 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
85573 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
85574 AND f_charbig = '####updated per insert trigger####';
85575 ANALYZE  TABLE t1;
85576 Table   Op      Msg_type        Msg_text
85577 test.t1 analyze status  OK
85578 CHECK    TABLE t1 EXTENDED;
85579 Table   Op      Msg_type        Msg_text
85580 test.t1 check   status  OK
85581 CHECKSUM TABLE t1 EXTENDED;
85582 Table   Checksum
85583 test.t1 <some_value>
85584 OPTIMIZE TABLE t1;
85585 Table   Op      Msg_type        Msg_text
85586 test.t1 optimize        status  OK
85587 # check layout success:    1
85588 REPAIR   TABLE t1 EXTENDED;
85589 Table   Op      Msg_type        Msg_text
85590 test.t1 repair  status  OK
85591 # check layout success:    1
85592 TRUNCATE t1;
85593         
85594 # check TRUNCATE success:       1
85595 # check layout success:    1
85596 # End usability test (inc/partition_check.inc)
85597 DROP TABLE t1;
85598 CREATE TABLE t1 (
85599 f_int1 INTEGER,
85600 f_int2 INTEGER,
85601 f_char1 CHAR(20),
85602 f_char2 CHAR(20),
85603 f_charbig VARCHAR(1000)
85606 PARTITION BY LIST(ABS(MOD(f_int1,2)))
85607 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
85608 (PARTITION part_1 VALUES IN (0),
85609  PARTITION part_2 VALUES IN (1),
85610  PARTITION part_3 VALUES IN (NULL));
85611 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
85612 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
85613 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
85614 ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1;
85615 Table   Op      Msg_type        Msg_text
85616 test.t1 repair  error   Error in list of partitions to test.t1
85617 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
85618 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
85619 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
85620 # Start usability test (inc/partition_check.inc)
85621 create_command
85622 SHOW CREATE TABLE t1;
85623 Table   Create Table
85624 t1      CREATE TABLE `t1` (
85625   `f_int1` int(11) DEFAULT NULL,
85626   `f_int2` int(11) DEFAULT NULL,
85627   `f_char1` char(20) DEFAULT NULL,
85628   `f_char2` char(20) DEFAULT NULL,
85629   `f_charbig` varchar(1000) DEFAULT NULL
85630 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
85631 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
85632 SUBPARTITION BY KEY (f_int1)
85633 SUBPARTITIONS 3
85634 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
85635  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
85636  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
85638 unified filelist
85639 t1#P#part_1#SP#part_1sp0.MYD
85640 t1#P#part_1#SP#part_1sp0.MYI
85641 t1#P#part_1#SP#part_1sp1.MYD
85642 t1#P#part_1#SP#part_1sp1.MYI
85643 t1#P#part_1#SP#part_1sp2.MYD
85644 t1#P#part_1#SP#part_1sp2.MYI
85645 t1#P#part_2#SP#part_2sp0.MYD
85646 t1#P#part_2#SP#part_2sp0.MYI
85647 t1#P#part_2#SP#part_2sp1.MYD
85648 t1#P#part_2#SP#part_2sp1.MYI
85649 t1#P#part_2#SP#part_2sp2.MYD
85650 t1#P#part_2#SP#part_2sp2.MYI
85651 t1#P#part_3#SP#part_3sp0.MYD
85652 t1#P#part_3#SP#part_3sp0.MYI
85653 t1#P#part_3#SP#part_3sp1.MYD
85654 t1#P#part_3#SP#part_3sp1.MYI
85655 t1#P#part_3#SP#part_3sp2.MYD
85656 t1#P#part_3#SP#part_3sp2.MYI
85657 t1.frm
85658 t1.par
85660 # check prerequisites-1 success:    1
85661 # check COUNT(*) success:    1
85662 # check MIN/MAX(f_int1) success:    1
85663 # check MIN/MAX(f_int2) success:    1
85664 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
85665 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
85666 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
85667 WHERE f_int1 IN (2,3);
85668 # check prerequisites-3 success:    1
85669 DELETE FROM t1 WHERE f_charbig = 'delete me';
85670 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
85671 # check read via f_int1 success: 1
85672 # check read via f_int2 success: 1
85673         
85674 # check multiple-1 success:     1
85675 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
85676         
85677 # check multiple-2 success:     1
85678 INSERT INTO t1 SELECT * FROM t0_template
85679 WHERE MOD(f_int1,3) = 0;
85680         
85681 # check multiple-3 success:     1
85682 UPDATE t1 SET f_int1 = f_int1 + @max_row
85683 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
85684 AND @max_row_div2 + @max_row_div4;
85685         
85686 # check multiple-4 success:     1
85687 DELETE FROM t1
85688 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
85689 AND @max_row_div2 + @max_row_div4 + @max_row;
85690         
85691 # check multiple-5 success:     1
85692 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
85693 INSERT INTO t1
85694 SET f_int1 = @cur_value , f_int2 = @cur_value,
85695 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
85696 f_charbig = '#SINGLE#';
85697         
85698 # check single-1 success:       1
85699 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
85700 INSERT INTO t1
85701 SET f_int1 = @cur_value , f_int2 = @cur_value,
85702 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
85703 f_charbig = '#SINGLE#';
85704         
85705 # check single-2 success:       1
85706 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
85707 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
85708 UPDATE t1 SET f_int1 = @cur_value2
85709 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
85710         
85711 # check single-3 success:       1
85712 SET @cur_value1= -1;
85713 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
85714 UPDATE t1 SET f_int1 = @cur_value1
85715 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
85716         
85717 # check single-4 success:       1
85718 SELECT MAX(f_int1) INTO @cur_value FROM t1;
85719 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
85720         
85721 # check single-5 success:       1
85722 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
85723         
85724 # check single-6 success:       1
85725 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
85726         
85727 # check single-7 success:       1
85728 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
85729 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
85730 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
85731 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
85732 f_charbig = '#NULL#';
85733 INSERT INTO t1
85734 SET f_int1 = NULL , f_int2 = -@max_row,
85735 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
85736 f_charbig = '#NULL#';
85737 # check null success:    1
85738         
85739 # check null-1 success:         1
85740 UPDATE t1 SET f_int1 = -@max_row
85741 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
85742 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
85743         
85744 # check null-2 success:         1
85745 UPDATE t1 SET f_int1 = NULL
85746 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
85747 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
85748         
85749 # check null-3 success:         1
85750 DELETE FROM t1
85751 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
85752 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
85753         
85754 # check null-4 success:         1
85755 DELETE FROM t1
85756 WHERE f_int1 = 0 AND f_int2 = 0
85757 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
85758 AND f_charbig = '#NULL#';
85759 SET AUTOCOMMIT= 0;
85760 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
85761 SELECT f_int1, f_int1, '', '', 'was inserted'
85762 FROM t0_template source_tab
85763 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
85764         
85765 # check transactions-1 success:         1
85766 COMMIT WORK;
85767         
85768 # check transactions-2 success:         1
85769 ROLLBACK WORK;
85770         
85771 # check transactions-3 success:         1
85772 DELETE FROM t1 WHERE f_charbig = 'was inserted';
85773 COMMIT WORK;
85774 ROLLBACK WORK;
85775         
85776 # check transactions-4 success:         1
85777 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
85778 SELECT f_int1, f_int1, '', '', 'was inserted'
85779 FROM t0_template source_tab
85780 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
85781         
85782 # check transactions-5 success:         1
85783 ROLLBACK WORK;
85784 Warnings:
85785 Warning 1196    Some non-transactional changed tables couldn't be rolled back
85786         
85787 # check transactions-6 success:         1
85788 # INFO: Storage engine used for t1 seems to be not transactional.
85789 COMMIT;
85790         
85791 # check transactions-7 success:         1
85792 DELETE FROM t1 WHERE f_charbig = 'was inserted';
85793 COMMIT WORK;
85794 SET @@session.sql_mode = 'traditional';
85795 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
85796 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
85797 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
85798 '', '', 'was inserted' FROM t0_template
85799 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
85800 ERROR 22012: Division by 0
85801 COMMIT;
85802         
85803 # check transactions-8 success:         1
85804 # INFO: Storage engine used for t1 seems to be unable to revert
85805 #       changes made by the failing statement.
85806 SET @@session.sql_mode = '';
85807 SET AUTOCOMMIT= 1;
85808 DELETE FROM t1 WHERE f_charbig = 'was inserted';
85809 COMMIT WORK;
85810 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
85811         
85812 # check special-1 success:      1
85813 UPDATE t1 SET f_charbig = '';
85814         
85815 # check special-2 success:      1
85816 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
85817 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
85818 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
85819 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85820 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85821 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85822 'just inserted' FROM t0_template
85823 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85824 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
85825 BEGIN
85826 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85827 f_charbig = 'updated by trigger'
85828       WHERE f_int1 = new.f_int1;
85829 END|
85830 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85831 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
85832 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85833         
85834 # check trigger-1 success:      1
85835 DROP TRIGGER trg_1;
85836 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85837 f_int2 = CAST(f_char1 AS SIGNED INT),
85838 f_charbig = 'just inserted'
85839    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85840 DELETE FROM t0_aux
85841 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85842 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85843 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85844 'just inserted' FROM t0_template
85845 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85846 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
85847 BEGIN
85848 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85849 f_charbig = 'updated by trigger'
85850       WHERE f_int1 = new.f_int1;
85851 END|
85852 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85853 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
85854 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85855         
85856 # check trigger-2 success:      1
85857 DROP TRIGGER trg_1;
85858 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85859 f_int2 = CAST(f_char1 AS SIGNED INT),
85860 f_charbig = 'just inserted'
85861    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85862 DELETE FROM t0_aux
85863 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85864 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85865 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85866 'just inserted' FROM t0_template
85867 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85868 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
85869 BEGIN
85870 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85871 f_charbig = 'updated by trigger'
85872       WHERE f_int1 = new.f_int1;
85873 END|
85874 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
85875 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
85876         
85877 # check trigger-3 success:      1
85878 DROP TRIGGER trg_1;
85879 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85880 f_int2 = CAST(f_char1 AS SIGNED INT),
85881 f_charbig = 'just inserted'
85882    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85883 DELETE FROM t0_aux
85884 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85885 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85886 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85887 'just inserted' FROM t0_template
85888 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85889 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
85890 BEGIN
85891 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85892 f_charbig = 'updated by trigger'
85893       WHERE f_int1 = - old.f_int1;
85894 END|
85895 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
85896 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
85897         
85898 # check trigger-4 success:      1
85899 DROP TRIGGER trg_1;
85900 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85901 f_int2 = CAST(f_char1 AS SIGNED INT),
85902 f_charbig = 'just inserted'
85903    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85904 DELETE FROM t0_aux
85905 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85906 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85907 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85908 'just inserted' FROM t0_template
85909 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85910 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
85911 BEGIN
85912 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85913 f_charbig = 'updated by trigger'
85914       WHERE f_int1 = new.f_int1;
85915 END|
85916 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
85917 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
85918         
85919 # check trigger-5 success:      1
85920 DROP TRIGGER trg_1;
85921 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85922 f_int2 = CAST(f_char1 AS SIGNED INT),
85923 f_charbig = 'just inserted'
85924    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85925 DELETE FROM t0_aux
85926 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85927 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85928 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85929 'just inserted' FROM t0_template
85930 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85931 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
85932 BEGIN
85933 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85934 f_charbig = 'updated by trigger'
85935       WHERE f_int1 = - old.f_int1;
85936 END|
85937 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
85938 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
85939         
85940 # check trigger-6 success:      1
85941 DROP TRIGGER trg_1;
85942 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85943 f_int2 = CAST(f_char1 AS SIGNED INT),
85944 f_charbig = 'just inserted'
85945    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85946 DELETE FROM t0_aux
85947 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85948 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85949 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85950 'just inserted' FROM t0_template
85951 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85952 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
85953 BEGIN
85954 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85955 f_charbig = 'updated by trigger'
85956       WHERE f_int1 = - old.f_int1;
85957 END|
85958 DELETE FROM t0_aux
85959 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
85960         
85961 # check trigger-7 success:      1
85962 DROP TRIGGER trg_1;
85963 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85964 f_int2 = CAST(f_char1 AS SIGNED INT),
85965 f_charbig = 'just inserted'
85966    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85967 DELETE FROM t0_aux
85968 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85969 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
85970 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
85971 'just inserted' FROM t0_template
85972 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85973 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
85974 BEGIN
85975 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
85976 f_charbig = 'updated by trigger'
85977       WHERE f_int1 = - old.f_int1;
85978 END|
85979 DELETE FROM t0_aux
85980 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
85981         
85982 # check trigger-8 success:      1
85983 DROP TRIGGER trg_1;
85984 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
85985 f_int2 = CAST(f_char1 AS SIGNED INT),
85986 f_charbig = 'just inserted'
85987    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
85988 DELETE FROM t0_aux
85989 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85990 DELETE FROM t1
85991 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
85992 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
85993 BEGIN
85994 SET new.f_int1 = old.f_int1 + @max_row,
85995 new.f_int2 = old.f_int2 - @max_row,
85996 new.f_charbig = '####updated per update trigger####';
85997 END|
85998 UPDATE t1
85999 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
86000 f_charbig = '####updated per update statement itself####';
86001         
86002 # check trigger-9 success:      1
86003 DROP TRIGGER trg_2;
86004 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86005 f_int2 = CAST(f_char1 AS SIGNED INT),
86006 f_charbig = CONCAT('===',f_char1,'===');
86007 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
86008 BEGIN
86009 SET new.f_int1 = new.f_int1 + @max_row,
86010 new.f_int2 = new.f_int2 - @max_row,
86011 new.f_charbig = '####updated per update trigger####';
86012 END|
86013 UPDATE t1
86014 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
86015 f_charbig = '####updated per update statement itself####';
86016         
86017 # check trigger-10 success:     1
86018 DROP TRIGGER trg_2;
86019 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86020 f_int2 = CAST(f_char1 AS SIGNED INT),
86021 f_charbig = CONCAT('===',f_char1,'===');
86022 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
86023 BEGIN
86024 SET new.f_int1 = @my_max1 + @counter,
86025 new.f_int2 = @my_min2 - @counter,
86026 new.f_charbig = '####updated per insert trigger####';
86027 SET @counter = @counter + 1;
86028 END|
86029 SET @counter = 1;
86030 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
86031 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
86032 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
86033 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
86034 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
86035 ORDER BY f_int1;
86036 DROP TRIGGER trg_3;
86037         
86038 # check trigger-11 success:     1
86039 DELETE FROM t1
86040 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
86041 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
86042 AND f_charbig = '####updated per insert trigger####';
86043 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
86044 BEGIN
86045 SET new.f_int1 = @my_max1 + @counter,
86046 new.f_int2 = @my_min2 - @counter,
86047 new.f_charbig = '####updated per insert trigger####';
86048 SET @counter = @counter + 1;
86049 END|
86050 SET @counter = 1;
86051 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
86052 INSERT INTO t1 (f_char1, f_char2, f_charbig)
86053 SELECT CAST(f_int1 AS CHAR),
86054 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
86055 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
86056 ORDER BY f_int1;
86057 DROP TRIGGER trg_3;
86058         
86059 # check trigger-12 success:     1
86060 DELETE FROM t1
86061 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
86062 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
86063 AND f_charbig = '####updated per insert trigger####';
86064 ANALYZE  TABLE t1;
86065 Table   Op      Msg_type        Msg_text
86066 test.t1 analyze status  OK
86067 CHECK    TABLE t1 EXTENDED;
86068 Table   Op      Msg_type        Msg_text
86069 test.t1 check   status  OK
86070 CHECKSUM TABLE t1 EXTENDED;
86071 Table   Checksum
86072 test.t1 <some_value>
86073 OPTIMIZE TABLE t1;
86074 Table   Op      Msg_type        Msg_text
86075 test.t1 optimize        status  OK
86076 # check layout success:    1
86077 REPAIR   TABLE t1 EXTENDED;
86078 Table   Op      Msg_type        Msg_text
86079 test.t1 repair  status  OK
86080 # check layout success:    1
86081 TRUNCATE t1;
86082         
86083 # check TRUNCATE success:       1
86084 # check layout success:    1
86085 # End usability test (inc/partition_check.inc)
86086 DROP TABLE t1;
86087 #  5.5 ALTER ... REPAIR PARTITION ALL;
86088 DROP TABLE IF EXISTS t1;
86089 CREATE TABLE t1 (
86090 f_int1 INTEGER,
86091 f_int2 INTEGER,
86092 f_char1 CHAR(20),
86093 f_char2 CHAR(20),
86094 f_charbig VARCHAR(1000)
86097 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
86098 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
86099 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
86100 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
86101 ALTER TABLE t1 REPAIR PARTITION ALL;
86102 Table   Op      Msg_type        Msg_text
86103 test.t1 repair  status  OK
86104 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
86105 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
86106 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
86107 # Start usability test (inc/partition_check.inc)
86108 create_command
86109 SHOW CREATE TABLE t1;
86110 Table   Create Table
86111 t1      CREATE TABLE `t1` (
86112   `f_int1` int(11) DEFAULT NULL,
86113   `f_int2` int(11) DEFAULT NULL,
86114   `f_char1` char(20) DEFAULT NULL,
86115   `f_char2` char(20) DEFAULT NULL,
86116   `f_charbig` varchar(1000) DEFAULT NULL
86117 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
86118 /*!50100 PARTITION BY HASH (f_int1)
86119 (PARTITION part_1 ENGINE = MyISAM,
86120  PARTITION part_2 ENGINE = MyISAM) */
86122 unified filelist
86123 t1#P#part_1.MYD
86124 t1#P#part_1.MYI
86125 t1#P#part_2.MYD
86126 t1#P#part_2.MYI
86127 t1.frm
86128 t1.par
86130 # check prerequisites-1 success:    1
86131 # check COUNT(*) success:    1
86132 # check MIN/MAX(f_int1) success:    1
86133 # check MIN/MAX(f_int2) success:    1
86134 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
86135 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
86136 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
86137 WHERE f_int1 IN (2,3);
86138 # check prerequisites-3 success:    1
86139 DELETE FROM t1 WHERE f_charbig = 'delete me';
86140 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
86141 # check read via f_int1 success: 1
86142 # check read via f_int2 success: 1
86143         
86144 # check multiple-1 success:     1
86145 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
86146         
86147 # check multiple-2 success:     1
86148 INSERT INTO t1 SELECT * FROM t0_template
86149 WHERE MOD(f_int1,3) = 0;
86150         
86151 # check multiple-3 success:     1
86152 UPDATE t1 SET f_int1 = f_int1 + @max_row
86153 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
86154 AND @max_row_div2 + @max_row_div4;
86155         
86156 # check multiple-4 success:     1
86157 DELETE FROM t1
86158 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
86159 AND @max_row_div2 + @max_row_div4 + @max_row;
86160         
86161 # check multiple-5 success:     1
86162 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
86163 INSERT INTO t1
86164 SET f_int1 = @cur_value , f_int2 = @cur_value,
86165 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
86166 f_charbig = '#SINGLE#';
86167         
86168 # check single-1 success:       1
86169 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
86170 INSERT INTO t1
86171 SET f_int1 = @cur_value , f_int2 = @cur_value,
86172 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
86173 f_charbig = '#SINGLE#';
86174         
86175 # check single-2 success:       1
86176 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
86177 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
86178 UPDATE t1 SET f_int1 = @cur_value2
86179 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
86180         
86181 # check single-3 success:       1
86182 SET @cur_value1= -1;
86183 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
86184 UPDATE t1 SET f_int1 = @cur_value1
86185 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
86186         
86187 # check single-4 success:       1
86188 SELECT MAX(f_int1) INTO @cur_value FROM t1;
86189 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
86190         
86191 # check single-5 success:       1
86192 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
86193         
86194 # check single-6 success:       1
86195 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
86196         
86197 # check single-7 success:       1
86198 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
86199 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
86200 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
86201 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
86202 f_charbig = '#NULL#';
86203 INSERT INTO t1
86204 SET f_int1 = NULL , f_int2 = -@max_row,
86205 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
86206 f_charbig = '#NULL#';
86207 # check null success:    1
86208         
86209 # check null-1 success:         1
86210 UPDATE t1 SET f_int1 = -@max_row
86211 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
86212 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
86213         
86214 # check null-2 success:         1
86215 UPDATE t1 SET f_int1 = NULL
86216 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
86217 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
86218         
86219 # check null-3 success:         1
86220 DELETE FROM t1
86221 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
86222 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
86223         
86224 # check null-4 success:         1
86225 DELETE FROM t1
86226 WHERE f_int1 = 0 AND f_int2 = 0
86227 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
86228 AND f_charbig = '#NULL#';
86229 SET AUTOCOMMIT= 0;
86230 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
86231 SELECT f_int1, f_int1, '', '', 'was inserted'
86232 FROM t0_template source_tab
86233 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
86234         
86235 # check transactions-1 success:         1
86236 COMMIT WORK;
86237         
86238 # check transactions-2 success:         1
86239 ROLLBACK WORK;
86240         
86241 # check transactions-3 success:         1
86242 DELETE FROM t1 WHERE f_charbig = 'was inserted';
86243 COMMIT WORK;
86244 ROLLBACK WORK;
86245         
86246 # check transactions-4 success:         1
86247 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
86248 SELECT f_int1, f_int1, '', '', 'was inserted'
86249 FROM t0_template source_tab
86250 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
86251         
86252 # check transactions-5 success:         1
86253 ROLLBACK WORK;
86254 Warnings:
86255 Warning 1196    Some non-transactional changed tables couldn't be rolled back
86256         
86257 # check transactions-6 success:         1
86258 # INFO: Storage engine used for t1 seems to be not transactional.
86259 COMMIT;
86260         
86261 # check transactions-7 success:         1
86262 DELETE FROM t1 WHERE f_charbig = 'was inserted';
86263 COMMIT WORK;
86264 SET @@session.sql_mode = 'traditional';
86265 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
86266 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
86267 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
86268 '', '', 'was inserted' FROM t0_template
86269 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
86270 ERROR 22012: Division by 0
86271 COMMIT;
86272         
86273 # check transactions-8 success:         1
86274 # INFO: Storage engine used for t1 seems to be unable to revert
86275 #       changes made by the failing statement.
86276 SET @@session.sql_mode = '';
86277 SET AUTOCOMMIT= 1;
86278 DELETE FROM t1 WHERE f_charbig = 'was inserted';
86279 COMMIT WORK;
86280 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
86281         
86282 # check special-1 success:      1
86283 UPDATE t1 SET f_charbig = '';
86284         
86285 # check special-2 success:      1
86286 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
86287 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
86288 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
86289 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86290 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86291 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86292 'just inserted' FROM t0_template
86293 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86294 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
86295 BEGIN
86296 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86297 f_charbig = 'updated by trigger'
86298       WHERE f_int1 = new.f_int1;
86299 END|
86300 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86301 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
86302 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86303         
86304 # check trigger-1 success:      1
86305 DROP TRIGGER trg_1;
86306 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86307 f_int2 = CAST(f_char1 AS SIGNED INT),
86308 f_charbig = 'just inserted'
86309    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86310 DELETE FROM t0_aux
86311 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86312 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86313 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86314 'just inserted' FROM t0_template
86315 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86316 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
86317 BEGIN
86318 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86319 f_charbig = 'updated by trigger'
86320       WHERE f_int1 = new.f_int1;
86321 END|
86322 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86323 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
86324 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86325         
86326 # check trigger-2 success:      1
86327 DROP TRIGGER trg_1;
86328 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86329 f_int2 = CAST(f_char1 AS SIGNED INT),
86330 f_charbig = 'just inserted'
86331    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86332 DELETE FROM t0_aux
86333 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86334 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86335 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86336 'just inserted' FROM t0_template
86337 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86338 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
86339 BEGIN
86340 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86341 f_charbig = 'updated by trigger'
86342       WHERE f_int1 = new.f_int1;
86343 END|
86344 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
86345 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
86346         
86347 # check trigger-3 success:      1
86348 DROP TRIGGER trg_1;
86349 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86350 f_int2 = CAST(f_char1 AS SIGNED INT),
86351 f_charbig = 'just inserted'
86352    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86353 DELETE FROM t0_aux
86354 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86355 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86356 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86357 'just inserted' FROM t0_template
86358 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86359 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
86360 BEGIN
86361 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86362 f_charbig = 'updated by trigger'
86363       WHERE f_int1 = - old.f_int1;
86364 END|
86365 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
86366 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
86367         
86368 # check trigger-4 success:      1
86369 DROP TRIGGER trg_1;
86370 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86371 f_int2 = CAST(f_char1 AS SIGNED INT),
86372 f_charbig = 'just inserted'
86373    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86374 DELETE FROM t0_aux
86375 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86376 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86377 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86378 'just inserted' FROM t0_template
86379 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86380 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
86381 BEGIN
86382 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86383 f_charbig = 'updated by trigger'
86384       WHERE f_int1 = new.f_int1;
86385 END|
86386 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
86387 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
86388         
86389 # check trigger-5 success:      1
86390 DROP TRIGGER trg_1;
86391 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86392 f_int2 = CAST(f_char1 AS SIGNED INT),
86393 f_charbig = 'just inserted'
86394    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86395 DELETE FROM t0_aux
86396 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86397 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86398 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86399 'just inserted' FROM t0_template
86400 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86401 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
86402 BEGIN
86403 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86404 f_charbig = 'updated by trigger'
86405       WHERE f_int1 = - old.f_int1;
86406 END|
86407 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
86408 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
86409         
86410 # check trigger-6 success:      1
86411 DROP TRIGGER trg_1;
86412 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86413 f_int2 = CAST(f_char1 AS SIGNED INT),
86414 f_charbig = 'just inserted'
86415    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86416 DELETE FROM t0_aux
86417 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86418 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86419 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86420 'just inserted' FROM t0_template
86421 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86422 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
86423 BEGIN
86424 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86425 f_charbig = 'updated by trigger'
86426       WHERE f_int1 = - old.f_int1;
86427 END|
86428 DELETE FROM t0_aux
86429 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
86430         
86431 # check trigger-7 success:      1
86432 DROP TRIGGER trg_1;
86433 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86434 f_int2 = CAST(f_char1 AS SIGNED INT),
86435 f_charbig = 'just inserted'
86436    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86437 DELETE FROM t0_aux
86438 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86439 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86440 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86441 'just inserted' FROM t0_template
86442 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86443 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
86444 BEGIN
86445 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86446 f_charbig = 'updated by trigger'
86447       WHERE f_int1 = - old.f_int1;
86448 END|
86449 DELETE FROM t0_aux
86450 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
86451         
86452 # check trigger-8 success:      1
86453 DROP TRIGGER trg_1;
86454 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86455 f_int2 = CAST(f_char1 AS SIGNED INT),
86456 f_charbig = 'just inserted'
86457    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86458 DELETE FROM t0_aux
86459 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86460 DELETE FROM t1
86461 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86462 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
86463 BEGIN
86464 SET new.f_int1 = old.f_int1 + @max_row,
86465 new.f_int2 = old.f_int2 - @max_row,
86466 new.f_charbig = '####updated per update trigger####';
86467 END|
86468 UPDATE t1
86469 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
86470 f_charbig = '####updated per update statement itself####';
86471         
86472 # check trigger-9 success:      1
86473 DROP TRIGGER trg_2;
86474 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86475 f_int2 = CAST(f_char1 AS SIGNED INT),
86476 f_charbig = CONCAT('===',f_char1,'===');
86477 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
86478 BEGIN
86479 SET new.f_int1 = new.f_int1 + @max_row,
86480 new.f_int2 = new.f_int2 - @max_row,
86481 new.f_charbig = '####updated per update trigger####';
86482 END|
86483 UPDATE t1
86484 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
86485 f_charbig = '####updated per update statement itself####';
86486         
86487 # check trigger-10 success:     1
86488 DROP TRIGGER trg_2;
86489 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86490 f_int2 = CAST(f_char1 AS SIGNED INT),
86491 f_charbig = CONCAT('===',f_char1,'===');
86492 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
86493 BEGIN
86494 SET new.f_int1 = @my_max1 + @counter,
86495 new.f_int2 = @my_min2 - @counter,
86496 new.f_charbig = '####updated per insert trigger####';
86497 SET @counter = @counter + 1;
86498 END|
86499 SET @counter = 1;
86500 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
86501 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
86502 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
86503 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
86504 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
86505 ORDER BY f_int1;
86506 DROP TRIGGER trg_3;
86507         
86508 # check trigger-11 success:     1
86509 DELETE FROM t1
86510 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
86511 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
86512 AND f_charbig = '####updated per insert trigger####';
86513 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
86514 BEGIN
86515 SET new.f_int1 = @my_max1 + @counter,
86516 new.f_int2 = @my_min2 - @counter,
86517 new.f_charbig = '####updated per insert trigger####';
86518 SET @counter = @counter + 1;
86519 END|
86520 SET @counter = 1;
86521 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
86522 INSERT INTO t1 (f_char1, f_char2, f_charbig)
86523 SELECT CAST(f_int1 AS CHAR),
86524 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
86525 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
86526 ORDER BY f_int1;
86527 DROP TRIGGER trg_3;
86528         
86529 # check trigger-12 success:     1
86530 DELETE FROM t1
86531 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
86532 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
86533 AND f_charbig = '####updated per insert trigger####';
86534 ANALYZE  TABLE t1;
86535 Table   Op      Msg_type        Msg_text
86536 test.t1 analyze status  OK
86537 CHECK    TABLE t1 EXTENDED;
86538 Table   Op      Msg_type        Msg_text
86539 test.t1 check   status  OK
86540 CHECKSUM TABLE t1 EXTENDED;
86541 Table   Checksum
86542 test.t1 <some_value>
86543 OPTIMIZE TABLE t1;
86544 Table   Op      Msg_type        Msg_text
86545 test.t1 optimize        status  OK
86546 # check layout success:    1
86547 REPAIR   TABLE t1 EXTENDED;
86548 Table   Op      Msg_type        Msg_text
86549 test.t1 repair  status  OK
86550 # check layout success:    1
86551 TRUNCATE t1;
86552         
86553 # check TRUNCATE success:       1
86554 # check layout success:    1
86555 # End usability test (inc/partition_check.inc)
86556 DROP TABLE t1;
86557 CREATE TABLE t1 (
86558 f_int1 INTEGER,
86559 f_int2 INTEGER,
86560 f_char1 CHAR(20),
86561 f_char2 CHAR(20),
86562 f_charbig VARCHAR(1000)
86565 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
86566 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
86567 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
86568 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
86569 ALTER TABLE t1 REPAIR PARTITION ALL;
86570 Table   Op      Msg_type        Msg_text
86571 test.t1 repair  status  OK
86572 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
86573 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
86574 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
86575 # Start usability test (inc/partition_check.inc)
86576 create_command
86577 SHOW CREATE TABLE t1;
86578 Table   Create Table
86579 t1      CREATE TABLE `t1` (
86580   `f_int1` int(11) DEFAULT NULL,
86581   `f_int2` int(11) DEFAULT NULL,
86582   `f_char1` char(20) DEFAULT NULL,
86583   `f_char2` char(20) DEFAULT NULL,
86584   `f_charbig` varchar(1000) DEFAULT NULL
86585 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
86586 /*!50100 PARTITION BY KEY (f_int1)
86587 (PARTITION part_1 ENGINE = MyISAM,
86588  PARTITION part_2 ENGINE = MyISAM,
86589  PARTITION part_3 ENGINE = MyISAM,
86590  PARTITION part_4 ENGINE = MyISAM,
86591  PARTITION part_5 ENGINE = MyISAM) */
86593 unified filelist
86594 t1#P#part_1.MYD
86595 t1#P#part_1.MYI
86596 t1#P#part_2.MYD
86597 t1#P#part_2.MYI
86598 t1#P#part_3.MYD
86599 t1#P#part_3.MYI
86600 t1#P#part_4.MYD
86601 t1#P#part_4.MYI
86602 t1#P#part_5.MYD
86603 t1#P#part_5.MYI
86604 t1.frm
86605 t1.par
86607 # check prerequisites-1 success:    1
86608 # check COUNT(*) success:    1
86609 # check MIN/MAX(f_int1) success:    1
86610 # check MIN/MAX(f_int2) success:    1
86611 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
86612 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
86613 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
86614 WHERE f_int1 IN (2,3);
86615 # check prerequisites-3 success:    1
86616 DELETE FROM t1 WHERE f_charbig = 'delete me';
86617 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
86618 # check read via f_int1 success: 1
86619 # check read via f_int2 success: 1
86620         
86621 # check multiple-1 success:     1
86622 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
86623         
86624 # check multiple-2 success:     1
86625 INSERT INTO t1 SELECT * FROM t0_template
86626 WHERE MOD(f_int1,3) = 0;
86627         
86628 # check multiple-3 success:     1
86629 UPDATE t1 SET f_int1 = f_int1 + @max_row
86630 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
86631 AND @max_row_div2 + @max_row_div4;
86632         
86633 # check multiple-4 success:     1
86634 DELETE FROM t1
86635 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
86636 AND @max_row_div2 + @max_row_div4 + @max_row;
86637         
86638 # check multiple-5 success:     1
86639 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
86640 INSERT INTO t1
86641 SET f_int1 = @cur_value , f_int2 = @cur_value,
86642 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
86643 f_charbig = '#SINGLE#';
86644         
86645 # check single-1 success:       1
86646 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
86647 INSERT INTO t1
86648 SET f_int1 = @cur_value , f_int2 = @cur_value,
86649 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
86650 f_charbig = '#SINGLE#';
86651         
86652 # check single-2 success:       1
86653 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
86654 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
86655 UPDATE t1 SET f_int1 = @cur_value2
86656 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
86657         
86658 # check single-3 success:       1
86659 SET @cur_value1= -1;
86660 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
86661 UPDATE t1 SET f_int1 = @cur_value1
86662 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
86663         
86664 # check single-4 success:       1
86665 SELECT MAX(f_int1) INTO @cur_value FROM t1;
86666 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
86667         
86668 # check single-5 success:       1
86669 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
86670         
86671 # check single-6 success:       1
86672 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
86673         
86674 # check single-7 success:       1
86675 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
86676 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
86677 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
86678 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
86679 f_charbig = '#NULL#';
86680 INSERT INTO t1
86681 SET f_int1 = NULL , f_int2 = -@max_row,
86682 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
86683 f_charbig = '#NULL#';
86684 # check null success:    1
86685         
86686 # check null-1 success:         1
86687 UPDATE t1 SET f_int1 = -@max_row
86688 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
86689 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
86690         
86691 # check null-2 success:         1
86692 UPDATE t1 SET f_int1 = NULL
86693 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
86694 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
86695         
86696 # check null-3 success:         1
86697 DELETE FROM t1
86698 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
86699 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
86700         
86701 # check null-4 success:         1
86702 DELETE FROM t1
86703 WHERE f_int1 = 0 AND f_int2 = 0
86704 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
86705 AND f_charbig = '#NULL#';
86706 SET AUTOCOMMIT= 0;
86707 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
86708 SELECT f_int1, f_int1, '', '', 'was inserted'
86709 FROM t0_template source_tab
86710 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
86711         
86712 # check transactions-1 success:         1
86713 COMMIT WORK;
86714         
86715 # check transactions-2 success:         1
86716 ROLLBACK WORK;
86717         
86718 # check transactions-3 success:         1
86719 DELETE FROM t1 WHERE f_charbig = 'was inserted';
86720 COMMIT WORK;
86721 ROLLBACK WORK;
86722         
86723 # check transactions-4 success:         1
86724 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
86725 SELECT f_int1, f_int1, '', '', 'was inserted'
86726 FROM t0_template source_tab
86727 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
86728         
86729 # check transactions-5 success:         1
86730 ROLLBACK WORK;
86731 Warnings:
86732 Warning 1196    Some non-transactional changed tables couldn't be rolled back
86733         
86734 # check transactions-6 success:         1
86735 # INFO: Storage engine used for t1 seems to be not transactional.
86736 COMMIT;
86737         
86738 # check transactions-7 success:         1
86739 DELETE FROM t1 WHERE f_charbig = 'was inserted';
86740 COMMIT WORK;
86741 SET @@session.sql_mode = 'traditional';
86742 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
86743 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
86744 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
86745 '', '', 'was inserted' FROM t0_template
86746 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
86747 ERROR 22012: Division by 0
86748 COMMIT;
86749         
86750 # check transactions-8 success:         1
86751 # INFO: Storage engine used for t1 seems to be unable to revert
86752 #       changes made by the failing statement.
86753 SET @@session.sql_mode = '';
86754 SET AUTOCOMMIT= 1;
86755 DELETE FROM t1 WHERE f_charbig = 'was inserted';
86756 COMMIT WORK;
86757 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
86758         
86759 # check special-1 success:      1
86760 UPDATE t1 SET f_charbig = '';
86761         
86762 # check special-2 success:      1
86763 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
86764 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
86765 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
86766 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86767 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86768 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86769 'just inserted' FROM t0_template
86770 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86771 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
86772 BEGIN
86773 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86774 f_charbig = 'updated by trigger'
86775       WHERE f_int1 = new.f_int1;
86776 END|
86777 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86778 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
86779 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86780         
86781 # check trigger-1 success:      1
86782 DROP TRIGGER trg_1;
86783 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86784 f_int2 = CAST(f_char1 AS SIGNED INT),
86785 f_charbig = 'just inserted'
86786    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86787 DELETE FROM t0_aux
86788 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86789 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86790 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86791 'just inserted' FROM t0_template
86792 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86793 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
86794 BEGIN
86795 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86796 f_charbig = 'updated by trigger'
86797       WHERE f_int1 = new.f_int1;
86798 END|
86799 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86800 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
86801 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86802         
86803 # check trigger-2 success:      1
86804 DROP TRIGGER trg_1;
86805 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86806 f_int2 = CAST(f_char1 AS SIGNED INT),
86807 f_charbig = 'just inserted'
86808    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86809 DELETE FROM t0_aux
86810 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86811 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86812 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86813 'just inserted' FROM t0_template
86814 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86815 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
86816 BEGIN
86817 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86818 f_charbig = 'updated by trigger'
86819       WHERE f_int1 = new.f_int1;
86820 END|
86821 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
86822 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
86823         
86824 # check trigger-3 success:      1
86825 DROP TRIGGER trg_1;
86826 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86827 f_int2 = CAST(f_char1 AS SIGNED INT),
86828 f_charbig = 'just inserted'
86829    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86830 DELETE FROM t0_aux
86831 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86832 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86833 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86834 'just inserted' FROM t0_template
86835 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86836 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
86837 BEGIN
86838 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86839 f_charbig = 'updated by trigger'
86840       WHERE f_int1 = - old.f_int1;
86841 END|
86842 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
86843 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
86844         
86845 # check trigger-4 success:      1
86846 DROP TRIGGER trg_1;
86847 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86848 f_int2 = CAST(f_char1 AS SIGNED INT),
86849 f_charbig = 'just inserted'
86850    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86851 DELETE FROM t0_aux
86852 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86853 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86854 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86855 'just inserted' FROM t0_template
86856 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86857 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
86858 BEGIN
86859 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86860 f_charbig = 'updated by trigger'
86861       WHERE f_int1 = new.f_int1;
86862 END|
86863 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
86864 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
86865         
86866 # check trigger-5 success:      1
86867 DROP TRIGGER trg_1;
86868 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86869 f_int2 = CAST(f_char1 AS SIGNED INT),
86870 f_charbig = 'just inserted'
86871    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86872 DELETE FROM t0_aux
86873 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86874 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86875 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86876 'just inserted' FROM t0_template
86877 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86878 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
86879 BEGIN
86880 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86881 f_charbig = 'updated by trigger'
86882       WHERE f_int1 = - old.f_int1;
86883 END|
86884 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
86885 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
86886         
86887 # check trigger-6 success:      1
86888 DROP TRIGGER trg_1;
86889 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86890 f_int2 = CAST(f_char1 AS SIGNED INT),
86891 f_charbig = 'just inserted'
86892    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86893 DELETE FROM t0_aux
86894 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86895 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86896 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86897 'just inserted' FROM t0_template
86898 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86899 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
86900 BEGIN
86901 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86902 f_charbig = 'updated by trigger'
86903       WHERE f_int1 = - old.f_int1;
86904 END|
86905 DELETE FROM t0_aux
86906 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
86907         
86908 # check trigger-7 success:      1
86909 DROP TRIGGER trg_1;
86910 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86911 f_int2 = CAST(f_char1 AS SIGNED INT),
86912 f_charbig = 'just inserted'
86913    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86914 DELETE FROM t0_aux
86915 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86916 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
86917 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
86918 'just inserted' FROM t0_template
86919 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86920 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
86921 BEGIN
86922 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
86923 f_charbig = 'updated by trigger'
86924       WHERE f_int1 = - old.f_int1;
86925 END|
86926 DELETE FROM t0_aux
86927 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
86928         
86929 # check trigger-8 success:      1
86930 DROP TRIGGER trg_1;
86931 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86932 f_int2 = CAST(f_char1 AS SIGNED INT),
86933 f_charbig = 'just inserted'
86934    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
86935 DELETE FROM t0_aux
86936 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86937 DELETE FROM t1
86938 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
86939 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
86940 BEGIN
86941 SET new.f_int1 = old.f_int1 + @max_row,
86942 new.f_int2 = old.f_int2 - @max_row,
86943 new.f_charbig = '####updated per update trigger####';
86944 END|
86945 UPDATE t1
86946 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
86947 f_charbig = '####updated per update statement itself####';
86948         
86949 # check trigger-9 success:      1
86950 DROP TRIGGER trg_2;
86951 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86952 f_int2 = CAST(f_char1 AS SIGNED INT),
86953 f_charbig = CONCAT('===',f_char1,'===');
86954 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
86955 BEGIN
86956 SET new.f_int1 = new.f_int1 + @max_row,
86957 new.f_int2 = new.f_int2 - @max_row,
86958 new.f_charbig = '####updated per update trigger####';
86959 END|
86960 UPDATE t1
86961 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
86962 f_charbig = '####updated per update statement itself####';
86963         
86964 # check trigger-10 success:     1
86965 DROP TRIGGER trg_2;
86966 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
86967 f_int2 = CAST(f_char1 AS SIGNED INT),
86968 f_charbig = CONCAT('===',f_char1,'===');
86969 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
86970 BEGIN
86971 SET new.f_int1 = @my_max1 + @counter,
86972 new.f_int2 = @my_min2 - @counter,
86973 new.f_charbig = '####updated per insert trigger####';
86974 SET @counter = @counter + 1;
86975 END|
86976 SET @counter = 1;
86977 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
86978 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
86979 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
86980 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
86981 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
86982 ORDER BY f_int1;
86983 DROP TRIGGER trg_3;
86984         
86985 # check trigger-11 success:     1
86986 DELETE FROM t1
86987 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
86988 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
86989 AND f_charbig = '####updated per insert trigger####';
86990 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
86991 BEGIN
86992 SET new.f_int1 = @my_max1 + @counter,
86993 new.f_int2 = @my_min2 - @counter,
86994 new.f_charbig = '####updated per insert trigger####';
86995 SET @counter = @counter + 1;
86996 END|
86997 SET @counter = 1;
86998 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
86999 INSERT INTO t1 (f_char1, f_char2, f_charbig)
87000 SELECT CAST(f_int1 AS CHAR),
87001 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
87002 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
87003 ORDER BY f_int1;
87004 DROP TRIGGER trg_3;
87005         
87006 # check trigger-12 success:     1
87007 DELETE FROM t1
87008 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
87009 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
87010 AND f_charbig = '####updated per insert trigger####';
87011 ANALYZE  TABLE t1;
87012 Table   Op      Msg_type        Msg_text
87013 test.t1 analyze status  OK
87014 CHECK    TABLE t1 EXTENDED;
87015 Table   Op      Msg_type        Msg_text
87016 test.t1 check   status  OK
87017 CHECKSUM TABLE t1 EXTENDED;
87018 Table   Checksum
87019 test.t1 <some_value>
87020 OPTIMIZE TABLE t1;
87021 Table   Op      Msg_type        Msg_text
87022 test.t1 optimize        status  OK
87023 # check layout success:    1
87024 REPAIR   TABLE t1 EXTENDED;
87025 Table   Op      Msg_type        Msg_text
87026 test.t1 repair  status  OK
87027 # check layout success:    1
87028 TRUNCATE t1;
87029         
87030 # check TRUNCATE success:       1
87031 # check layout success:    1
87032 # End usability test (inc/partition_check.inc)
87033 DROP TABLE t1;
87034 CREATE TABLE t1 (
87035 f_int1 INTEGER,
87036 f_int2 INTEGER,
87037 f_char1 CHAR(20),
87038 f_char2 CHAR(20),
87039 f_charbig VARCHAR(1000)
87042 PARTITION BY LIST(MOD(f_int1,4))
87043 (PARTITION part_3 VALUES IN (-3),
87044 PARTITION part_2 VALUES IN (-2),
87045 PARTITION part_1 VALUES IN (-1),
87046 PARTITION part_N VALUES IN (NULL),
87047 PARTITION part0 VALUES IN (0),
87048 PARTITION part1 VALUES IN (1),
87049 PARTITION part2 VALUES IN (2),
87050 PARTITION part3 VALUES IN (3));
87051 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
87052 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
87053 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
87054 ALTER TABLE t1 REPAIR PARTITION ALL;
87055 Table   Op      Msg_type        Msg_text
87056 test.t1 repair  status  OK
87057 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
87058 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
87059 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
87060 # Start usability test (inc/partition_check.inc)
87061 create_command
87062 SHOW CREATE TABLE t1;
87063 Table   Create Table
87064 t1      CREATE TABLE `t1` (
87065   `f_int1` int(11) DEFAULT NULL,
87066   `f_int2` int(11) DEFAULT NULL,
87067   `f_char1` char(20) DEFAULT NULL,
87068   `f_char2` char(20) DEFAULT NULL,
87069   `f_charbig` varchar(1000) DEFAULT NULL
87070 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
87071 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
87072 (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
87073  PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
87074  PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
87075  PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
87076  PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
87077  PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
87078  PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
87079  PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
87081 unified filelist
87082 t1#P#part0.MYD
87083 t1#P#part0.MYI
87084 t1#P#part1.MYD
87085 t1#P#part1.MYI
87086 t1#P#part2.MYD
87087 t1#P#part2.MYI
87088 t1#P#part3.MYD
87089 t1#P#part3.MYI
87090 t1#P#part_1.MYD
87091 t1#P#part_1.MYI
87092 t1#P#part_2.MYD
87093 t1#P#part_2.MYI
87094 t1#P#part_3.MYD
87095 t1#P#part_3.MYI
87096 t1#P#part_N.MYD
87097 t1#P#part_N.MYI
87098 t1.frm
87099 t1.par
87101 # check prerequisites-1 success:    1
87102 # check COUNT(*) success:    1
87103 # check MIN/MAX(f_int1) success:    1
87104 # check MIN/MAX(f_int2) success:    1
87105 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
87106 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
87107 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
87108 WHERE f_int1 IN (2,3);
87109 # check prerequisites-3 success:    1
87110 DELETE FROM t1 WHERE f_charbig = 'delete me';
87111 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
87112 # check read via f_int1 success: 1
87113 # check read via f_int2 success: 1
87114         
87115 # check multiple-1 success:     1
87116 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
87117         
87118 # check multiple-2 success:     1
87119 INSERT INTO t1 SELECT * FROM t0_template
87120 WHERE MOD(f_int1,3) = 0;
87121         
87122 # check multiple-3 success:     1
87123 UPDATE t1 SET f_int1 = f_int1 + @max_row
87124 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
87125 AND @max_row_div2 + @max_row_div4;
87126         
87127 # check multiple-4 success:     1
87128 DELETE FROM t1
87129 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
87130 AND @max_row_div2 + @max_row_div4 + @max_row;
87131         
87132 # check multiple-5 success:     1
87133 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
87134 INSERT INTO t1
87135 SET f_int1 = @cur_value , f_int2 = @cur_value,
87136 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
87137 f_charbig = '#SINGLE#';
87138         
87139 # check single-1 success:       1
87140 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
87141 INSERT INTO t1
87142 SET f_int1 = @cur_value , f_int2 = @cur_value,
87143 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
87144 f_charbig = '#SINGLE#';
87145         
87146 # check single-2 success:       1
87147 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
87148 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
87149 UPDATE t1 SET f_int1 = @cur_value2
87150 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
87151         
87152 # check single-3 success:       1
87153 SET @cur_value1= -1;
87154 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
87155 UPDATE t1 SET f_int1 = @cur_value1
87156 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
87157         
87158 # check single-4 success:       1
87159 SELECT MAX(f_int1) INTO @cur_value FROM t1;
87160 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
87161         
87162 # check single-5 success:       1
87163 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
87164         
87165 # check single-6 success:       1
87166 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
87167         
87168 # check single-7 success:       1
87169 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
87170 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
87171 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
87172 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
87173 f_charbig = '#NULL#';
87174 INSERT INTO t1
87175 SET f_int1 = NULL , f_int2 = -@max_row,
87176 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
87177 f_charbig = '#NULL#';
87178 # check null success:    1
87179         
87180 # check null-1 success:         1
87181 UPDATE t1 SET f_int1 = -@max_row
87182 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
87183 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
87184         
87185 # check null-2 success:         1
87186 UPDATE t1 SET f_int1 = NULL
87187 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
87188 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
87189         
87190 # check null-3 success:         1
87191 DELETE FROM t1
87192 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
87193 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
87194         
87195 # check null-4 success:         1
87196 DELETE FROM t1
87197 WHERE f_int1 = 0 AND f_int2 = 0
87198 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
87199 AND f_charbig = '#NULL#';
87200 SET AUTOCOMMIT= 0;
87201 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
87202 SELECT f_int1, f_int1, '', '', 'was inserted'
87203 FROM t0_template source_tab
87204 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
87205         
87206 # check transactions-1 success:         1
87207 COMMIT WORK;
87208         
87209 # check transactions-2 success:         1
87210 ROLLBACK WORK;
87211         
87212 # check transactions-3 success:         1
87213 DELETE FROM t1 WHERE f_charbig = 'was inserted';
87214 COMMIT WORK;
87215 ROLLBACK WORK;
87216         
87217 # check transactions-4 success:         1
87218 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
87219 SELECT f_int1, f_int1, '', '', 'was inserted'
87220 FROM t0_template source_tab
87221 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
87222         
87223 # check transactions-5 success:         1
87224 ROLLBACK WORK;
87225 Warnings:
87226 Warning 1196    Some non-transactional changed tables couldn't be rolled back
87227         
87228 # check transactions-6 success:         1
87229 # INFO: Storage engine used for t1 seems to be not transactional.
87230 COMMIT;
87231         
87232 # check transactions-7 success:         1
87233 DELETE FROM t1 WHERE f_charbig = 'was inserted';
87234 COMMIT WORK;
87235 SET @@session.sql_mode = 'traditional';
87236 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
87237 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
87238 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
87239 '', '', 'was inserted' FROM t0_template
87240 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
87241 ERROR 22012: Division by 0
87242 COMMIT;
87243         
87244 # check transactions-8 success:         1
87245 # INFO: Storage engine used for t1 seems to be unable to revert
87246 #       changes made by the failing statement.
87247 SET @@session.sql_mode = '';
87248 SET AUTOCOMMIT= 1;
87249 DELETE FROM t1 WHERE f_charbig = 'was inserted';
87250 COMMIT WORK;
87251 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
87252         
87253 # check special-1 success:      1
87254 UPDATE t1 SET f_charbig = '';
87255         
87256 # check special-2 success:      1
87257 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
87258 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
87259 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
87260 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87261 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87262 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87263 'just inserted' FROM t0_template
87264 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87265 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
87266 BEGIN
87267 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87268 f_charbig = 'updated by trigger'
87269       WHERE f_int1 = new.f_int1;
87270 END|
87271 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87272 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
87273 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87274         
87275 # check trigger-1 success:      1
87276 DROP TRIGGER trg_1;
87277 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87278 f_int2 = CAST(f_char1 AS SIGNED INT),
87279 f_charbig = 'just inserted'
87280    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87281 DELETE FROM t0_aux
87282 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87283 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87284 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87285 'just inserted' FROM t0_template
87286 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87287 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
87288 BEGIN
87289 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87290 f_charbig = 'updated by trigger'
87291       WHERE f_int1 = new.f_int1;
87292 END|
87293 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87294 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
87295 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87296         
87297 # check trigger-2 success:      1
87298 DROP TRIGGER trg_1;
87299 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87300 f_int2 = CAST(f_char1 AS SIGNED INT),
87301 f_charbig = 'just inserted'
87302    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87303 DELETE FROM t0_aux
87304 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87305 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87306 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87307 'just inserted' FROM t0_template
87308 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87309 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
87310 BEGIN
87311 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87312 f_charbig = 'updated by trigger'
87313       WHERE f_int1 = new.f_int1;
87314 END|
87315 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
87316 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
87317         
87318 # check trigger-3 success:      1
87319 DROP TRIGGER trg_1;
87320 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87321 f_int2 = CAST(f_char1 AS SIGNED INT),
87322 f_charbig = 'just inserted'
87323    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87324 DELETE FROM t0_aux
87325 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87326 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87327 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87328 'just inserted' FROM t0_template
87329 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87330 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
87331 BEGIN
87332 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87333 f_charbig = 'updated by trigger'
87334       WHERE f_int1 = - old.f_int1;
87335 END|
87336 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
87337 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
87338         
87339 # check trigger-4 success:      1
87340 DROP TRIGGER trg_1;
87341 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87342 f_int2 = CAST(f_char1 AS SIGNED INT),
87343 f_charbig = 'just inserted'
87344    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87345 DELETE FROM t0_aux
87346 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87347 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87348 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87349 'just inserted' FROM t0_template
87350 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87351 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
87352 BEGIN
87353 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87354 f_charbig = 'updated by trigger'
87355       WHERE f_int1 = new.f_int1;
87356 END|
87357 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
87358 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
87359         
87360 # check trigger-5 success:      1
87361 DROP TRIGGER trg_1;
87362 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87363 f_int2 = CAST(f_char1 AS SIGNED INT),
87364 f_charbig = 'just inserted'
87365    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87366 DELETE FROM t0_aux
87367 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87368 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87369 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87370 'just inserted' FROM t0_template
87371 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87372 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
87373 BEGIN
87374 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87375 f_charbig = 'updated by trigger'
87376       WHERE f_int1 = - old.f_int1;
87377 END|
87378 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
87379 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
87380         
87381 # check trigger-6 success:      1
87382 DROP TRIGGER trg_1;
87383 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87384 f_int2 = CAST(f_char1 AS SIGNED INT),
87385 f_charbig = 'just inserted'
87386    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87387 DELETE FROM t0_aux
87388 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87389 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87390 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87391 'just inserted' FROM t0_template
87392 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87393 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
87394 BEGIN
87395 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87396 f_charbig = 'updated by trigger'
87397       WHERE f_int1 = - old.f_int1;
87398 END|
87399 DELETE FROM t0_aux
87400 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
87401         
87402 # check trigger-7 success:      1
87403 DROP TRIGGER trg_1;
87404 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87405 f_int2 = CAST(f_char1 AS SIGNED INT),
87406 f_charbig = 'just inserted'
87407    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87408 DELETE FROM t0_aux
87409 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87410 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87411 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87412 'just inserted' FROM t0_template
87413 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87414 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
87415 BEGIN
87416 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87417 f_charbig = 'updated by trigger'
87418       WHERE f_int1 = - old.f_int1;
87419 END|
87420 DELETE FROM t0_aux
87421 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
87422         
87423 # check trigger-8 success:      1
87424 DROP TRIGGER trg_1;
87425 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87426 f_int2 = CAST(f_char1 AS SIGNED INT),
87427 f_charbig = 'just inserted'
87428    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87429 DELETE FROM t0_aux
87430 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87431 DELETE FROM t1
87432 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87433 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
87434 BEGIN
87435 SET new.f_int1 = old.f_int1 + @max_row,
87436 new.f_int2 = old.f_int2 - @max_row,
87437 new.f_charbig = '####updated per update trigger####';
87438 END|
87439 UPDATE t1
87440 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
87441 f_charbig = '####updated per update statement itself####';
87442         
87443 # check trigger-9 success:      1
87444 DROP TRIGGER trg_2;
87445 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87446 f_int2 = CAST(f_char1 AS SIGNED INT),
87447 f_charbig = CONCAT('===',f_char1,'===');
87448 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
87449 BEGIN
87450 SET new.f_int1 = new.f_int1 + @max_row,
87451 new.f_int2 = new.f_int2 - @max_row,
87452 new.f_charbig = '####updated per update trigger####';
87453 END|
87454 UPDATE t1
87455 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
87456 f_charbig = '####updated per update statement itself####';
87457         
87458 # check trigger-10 success:     1
87459 DROP TRIGGER trg_2;
87460 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87461 f_int2 = CAST(f_char1 AS SIGNED INT),
87462 f_charbig = CONCAT('===',f_char1,'===');
87463 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
87464 BEGIN
87465 SET new.f_int1 = @my_max1 + @counter,
87466 new.f_int2 = @my_min2 - @counter,
87467 new.f_charbig = '####updated per insert trigger####';
87468 SET @counter = @counter + 1;
87469 END|
87470 SET @counter = 1;
87471 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
87472 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
87473 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
87474 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
87475 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
87476 ORDER BY f_int1;
87477 DROP TRIGGER trg_3;
87478         
87479 # check trigger-11 success:     1
87480 DELETE FROM t1
87481 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
87482 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
87483 AND f_charbig = '####updated per insert trigger####';
87484 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
87485 BEGIN
87486 SET new.f_int1 = @my_max1 + @counter,
87487 new.f_int2 = @my_min2 - @counter,
87488 new.f_charbig = '####updated per insert trigger####';
87489 SET @counter = @counter + 1;
87490 END|
87491 SET @counter = 1;
87492 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
87493 INSERT INTO t1 (f_char1, f_char2, f_charbig)
87494 SELECT CAST(f_int1 AS CHAR),
87495 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
87496 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
87497 ORDER BY f_int1;
87498 DROP TRIGGER trg_3;
87499         
87500 # check trigger-12 success:     1
87501 DELETE FROM t1
87502 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
87503 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
87504 AND f_charbig = '####updated per insert trigger####';
87505 ANALYZE  TABLE t1;
87506 Table   Op      Msg_type        Msg_text
87507 test.t1 analyze status  OK
87508 CHECK    TABLE t1 EXTENDED;
87509 Table   Op      Msg_type        Msg_text
87510 test.t1 check   status  OK
87511 CHECKSUM TABLE t1 EXTENDED;
87512 Table   Checksum
87513 test.t1 <some_value>
87514 OPTIMIZE TABLE t1;
87515 Table   Op      Msg_type        Msg_text
87516 test.t1 optimize        status  OK
87517 # check layout success:    1
87518 REPAIR   TABLE t1 EXTENDED;
87519 Table   Op      Msg_type        Msg_text
87520 test.t1 repair  status  OK
87521 # check layout success:    1
87522 TRUNCATE t1;
87523         
87524 # check TRUNCATE success:       1
87525 # check layout success:    1
87526 # End usability test (inc/partition_check.inc)
87527 DROP TABLE t1;
87528 CREATE TABLE t1 (
87529 f_int1 INTEGER,
87530 f_int2 INTEGER,
87531 f_char1 CHAR(20),
87532 f_char2 CHAR(20),
87533 f_charbig VARCHAR(1000)
87536 PARTITION BY RANGE(f_int1)
87537 (PARTITION parta VALUES LESS THAN (0),
87538 PARTITION part_1 VALUES LESS THAN (5),
87539 PARTITION part_2 VALUES LESS THAN (10),
87540 PARTITION part_3 VALUES LESS THAN (10 + 5),
87541 PARTITION part_4 VALUES LESS THAN (20),
87542 PARTITION part_5 VALUES LESS THAN (2147483646));
87543 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
87544 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
87545 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
87546 ALTER TABLE t1 REPAIR PARTITION ALL;
87547 Table   Op      Msg_type        Msg_text
87548 test.t1 repair  status  OK
87549 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
87550 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
87551 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
87552 # Start usability test (inc/partition_check.inc)
87553 create_command
87554 SHOW CREATE TABLE t1;
87555 Table   Create Table
87556 t1      CREATE TABLE `t1` (
87557   `f_int1` int(11) DEFAULT NULL,
87558   `f_int2` int(11) DEFAULT NULL,
87559   `f_char1` char(20) DEFAULT NULL,
87560   `f_char2` char(20) DEFAULT NULL,
87561   `f_charbig` varchar(1000) DEFAULT NULL
87562 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
87563 /*!50100 PARTITION BY RANGE (f_int1)
87564 (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
87565  PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM,
87566  PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM,
87567  PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM,
87568  PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM,
87569  PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
87571 unified filelist
87572 t1#P#part_1.MYD
87573 t1#P#part_1.MYI
87574 t1#P#part_2.MYD
87575 t1#P#part_2.MYI
87576 t1#P#part_3.MYD
87577 t1#P#part_3.MYI
87578 t1#P#part_4.MYD
87579 t1#P#part_4.MYI
87580 t1#P#part_5.MYD
87581 t1#P#part_5.MYI
87582 t1#P#parta.MYD
87583 t1#P#parta.MYI
87584 t1.frm
87585 t1.par
87587 # check prerequisites-1 success:    1
87588 # check COUNT(*) success:    1
87589 # check MIN/MAX(f_int1) success:    1
87590 # check MIN/MAX(f_int2) success:    1
87591 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
87592 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
87593 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
87594 WHERE f_int1 IN (2,3);
87595 # check prerequisites-3 success:    1
87596 DELETE FROM t1 WHERE f_charbig = 'delete me';
87597 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
87598 # check read via f_int1 success: 1
87599 # check read via f_int2 success: 1
87600         
87601 # check multiple-1 success:     1
87602 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
87603         
87604 # check multiple-2 success:     1
87605 INSERT INTO t1 SELECT * FROM t0_template
87606 WHERE MOD(f_int1,3) = 0;
87607         
87608 # check multiple-3 success:     1
87609 UPDATE t1 SET f_int1 = f_int1 + @max_row
87610 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
87611 AND @max_row_div2 + @max_row_div4;
87612         
87613 # check multiple-4 success:     1
87614 DELETE FROM t1
87615 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
87616 AND @max_row_div2 + @max_row_div4 + @max_row;
87617         
87618 # check multiple-5 success:     1
87619 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
87620 INSERT INTO t1
87621 SET f_int1 = @cur_value , f_int2 = @cur_value,
87622 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
87623 f_charbig = '#SINGLE#';
87624         
87625 # check single-1 success:       1
87626 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
87627 INSERT INTO t1
87628 SET f_int1 = @cur_value , f_int2 = @cur_value,
87629 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
87630 f_charbig = '#SINGLE#';
87631         
87632 # check single-2 success:       1
87633 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
87634 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
87635 UPDATE t1 SET f_int1 = @cur_value2
87636 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
87637         
87638 # check single-3 success:       1
87639 SET @cur_value1= -1;
87640 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
87641 UPDATE t1 SET f_int1 = @cur_value1
87642 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
87643         
87644 # check single-4 success:       1
87645 SELECT MAX(f_int1) INTO @cur_value FROM t1;
87646 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
87647         
87648 # check single-5 success:       1
87649 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
87650         
87651 # check single-6 success:       1
87652 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
87653 ERROR HY000: Table has no partition for value 2147483647
87654 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
87655 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
87656 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
87657 f_charbig = '#NULL#';
87658 INSERT INTO t1
87659 SET f_int1 = NULL , f_int2 = -@max_row,
87660 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
87661 f_charbig = '#NULL#';
87662 # check null success:    1
87663         
87664 # check null-1 success:         1
87665 UPDATE t1 SET f_int1 = -@max_row
87666 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
87667 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
87668         
87669 # check null-2 success:         1
87670 UPDATE t1 SET f_int1 = NULL
87671 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
87672 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
87673         
87674 # check null-3 success:         1
87675 DELETE FROM t1
87676 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
87677 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
87678         
87679 # check null-4 success:         1
87680 DELETE FROM t1
87681 WHERE f_int1 = 0 AND f_int2 = 0
87682 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
87683 AND f_charbig = '#NULL#';
87684 SET AUTOCOMMIT= 0;
87685 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
87686 SELECT f_int1, f_int1, '', '', 'was inserted'
87687 FROM t0_template source_tab
87688 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
87689         
87690 # check transactions-1 success:         1
87691 COMMIT WORK;
87692         
87693 # check transactions-2 success:         1
87694 ROLLBACK WORK;
87695         
87696 # check transactions-3 success:         1
87697 DELETE FROM t1 WHERE f_charbig = 'was inserted';
87698 COMMIT WORK;
87699 ROLLBACK WORK;
87700         
87701 # check transactions-4 success:         1
87702 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
87703 SELECT f_int1, f_int1, '', '', 'was inserted'
87704 FROM t0_template source_tab
87705 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
87706         
87707 # check transactions-5 success:         1
87708 ROLLBACK WORK;
87709 Warnings:
87710 Warning 1196    Some non-transactional changed tables couldn't be rolled back
87711         
87712 # check transactions-6 success:         1
87713 # INFO: Storage engine used for t1 seems to be not transactional.
87714 COMMIT;
87715         
87716 # check transactions-7 success:         1
87717 DELETE FROM t1 WHERE f_charbig = 'was inserted';
87718 COMMIT WORK;
87719 SET @@session.sql_mode = 'traditional';
87720 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
87721 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
87722 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
87723 '', '', 'was inserted' FROM t0_template
87724 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
87725 ERROR 22012: Division by 0
87726 COMMIT;
87727         
87728 # check transactions-8 success:         1
87729 # INFO: Storage engine used for t1 seems to be unable to revert
87730 #       changes made by the failing statement.
87731 SET @@session.sql_mode = '';
87732 SET AUTOCOMMIT= 1;
87733 DELETE FROM t1 WHERE f_charbig = 'was inserted';
87734 COMMIT WORK;
87735 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
87736         
87737 # check special-1 success:      1
87738 UPDATE t1 SET f_charbig = '';
87739         
87740 # check special-2 success:      1
87741 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
87742 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
87743 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
87744 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87745 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87746 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87747 'just inserted' FROM t0_template
87748 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87749 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
87750 BEGIN
87751 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87752 f_charbig = 'updated by trigger'
87753       WHERE f_int1 = new.f_int1;
87754 END|
87755 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87756 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
87757 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87758         
87759 # check trigger-1 success:      1
87760 DROP TRIGGER trg_1;
87761 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87762 f_int2 = CAST(f_char1 AS SIGNED INT),
87763 f_charbig = 'just inserted'
87764    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87765 DELETE FROM t0_aux
87766 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87767 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87768 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87769 'just inserted' FROM t0_template
87770 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87771 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
87772 BEGIN
87773 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87774 f_charbig = 'updated by trigger'
87775       WHERE f_int1 = new.f_int1;
87776 END|
87777 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87778 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
87779 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87780         
87781 # check trigger-2 success:      1
87782 DROP TRIGGER trg_1;
87783 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87784 f_int2 = CAST(f_char1 AS SIGNED INT),
87785 f_charbig = 'just inserted'
87786    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87787 DELETE FROM t0_aux
87788 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87789 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87790 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87791 'just inserted' FROM t0_template
87792 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87793 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
87794 BEGIN
87795 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87796 f_charbig = 'updated by trigger'
87797       WHERE f_int1 = new.f_int1;
87798 END|
87799 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
87800 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
87801         
87802 # check trigger-3 success:      1
87803 DROP TRIGGER trg_1;
87804 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87805 f_int2 = CAST(f_char1 AS SIGNED INT),
87806 f_charbig = 'just inserted'
87807    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87808 DELETE FROM t0_aux
87809 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87810 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87811 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87812 'just inserted' FROM t0_template
87813 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87814 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
87815 BEGIN
87816 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87817 f_charbig = 'updated by trigger'
87818       WHERE f_int1 = - old.f_int1;
87819 END|
87820 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
87821 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
87822         
87823 # check trigger-4 success:      1
87824 DROP TRIGGER trg_1;
87825 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87826 f_int2 = CAST(f_char1 AS SIGNED INT),
87827 f_charbig = 'just inserted'
87828    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87829 DELETE FROM t0_aux
87830 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87831 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87832 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87833 'just inserted' FROM t0_template
87834 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87835 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
87836 BEGIN
87837 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87838 f_charbig = 'updated by trigger'
87839       WHERE f_int1 = new.f_int1;
87840 END|
87841 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
87842 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
87843         
87844 # check trigger-5 success:      1
87845 DROP TRIGGER trg_1;
87846 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87847 f_int2 = CAST(f_char1 AS SIGNED INT),
87848 f_charbig = 'just inserted'
87849    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87850 DELETE FROM t0_aux
87851 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87852 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87853 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87854 'just inserted' FROM t0_template
87855 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87856 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
87857 BEGIN
87858 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87859 f_charbig = 'updated by trigger'
87860       WHERE f_int1 = - old.f_int1;
87861 END|
87862 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
87863 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
87864         
87865 # check trigger-6 success:      1
87866 DROP TRIGGER trg_1;
87867 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87868 f_int2 = CAST(f_char1 AS SIGNED INT),
87869 f_charbig = 'just inserted'
87870    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87871 DELETE FROM t0_aux
87872 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87873 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87874 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87875 'just inserted' FROM t0_template
87876 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87877 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
87878 BEGIN
87879 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87880 f_charbig = 'updated by trigger'
87881       WHERE f_int1 = - old.f_int1;
87882 END|
87883 DELETE FROM t0_aux
87884 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
87885         
87886 # check trigger-7 success:      1
87887 DROP TRIGGER trg_1;
87888 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87889 f_int2 = CAST(f_char1 AS SIGNED INT),
87890 f_charbig = 'just inserted'
87891    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87892 DELETE FROM t0_aux
87893 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87894 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
87895 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
87896 'just inserted' FROM t0_template
87897 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87898 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
87899 BEGIN
87900 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
87901 f_charbig = 'updated by trigger'
87902       WHERE f_int1 = - old.f_int1;
87903 END|
87904 DELETE FROM t0_aux
87905 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
87906         
87907 # check trigger-8 success:      1
87908 DROP TRIGGER trg_1;
87909 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87910 f_int2 = CAST(f_char1 AS SIGNED INT),
87911 f_charbig = 'just inserted'
87912    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
87913 DELETE FROM t0_aux
87914 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87915 DELETE FROM t1
87916 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
87917 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
87918 BEGIN
87919 SET new.f_int1 = old.f_int1 + @max_row,
87920 new.f_int2 = old.f_int2 - @max_row,
87921 new.f_charbig = '####updated per update trigger####';
87922 END|
87923 UPDATE t1
87924 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
87925 f_charbig = '####updated per update statement itself####';
87926         
87927 # check trigger-9 success:      1
87928 DROP TRIGGER trg_2;
87929 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87930 f_int2 = CAST(f_char1 AS SIGNED INT),
87931 f_charbig = CONCAT('===',f_char1,'===');
87932 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
87933 BEGIN
87934 SET new.f_int1 = new.f_int1 + @max_row,
87935 new.f_int2 = new.f_int2 - @max_row,
87936 new.f_charbig = '####updated per update trigger####';
87937 END|
87938 UPDATE t1
87939 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
87940 f_charbig = '####updated per update statement itself####';
87941         
87942 # check trigger-10 success:     1
87943 DROP TRIGGER trg_2;
87944 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
87945 f_int2 = CAST(f_char1 AS SIGNED INT),
87946 f_charbig = CONCAT('===',f_char1,'===');
87947 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
87948 BEGIN
87949 SET new.f_int1 = @my_max1 + @counter,
87950 new.f_int2 = @my_min2 - @counter,
87951 new.f_charbig = '####updated per insert trigger####';
87952 SET @counter = @counter + 1;
87953 END|
87954 SET @counter = 1;
87955 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
87956 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
87957 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
87958 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
87959 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
87960 ORDER BY f_int1;
87961 DROP TRIGGER trg_3;
87962         
87963 # check trigger-11 success:     1
87964 DELETE FROM t1
87965 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
87966 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
87967 AND f_charbig = '####updated per insert trigger####';
87968 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
87969 BEGIN
87970 SET new.f_int1 = @my_max1 + @counter,
87971 new.f_int2 = @my_min2 - @counter,
87972 new.f_charbig = '####updated per insert trigger####';
87973 SET @counter = @counter + 1;
87974 END|
87975 SET @counter = 1;
87976 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
87977 INSERT INTO t1 (f_char1, f_char2, f_charbig)
87978 SELECT CAST(f_int1 AS CHAR),
87979 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
87980 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
87981 ORDER BY f_int1;
87982 DROP TRIGGER trg_3;
87983         
87984 # check trigger-12 success:     1
87985 DELETE FROM t1
87986 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
87987 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
87988 AND f_charbig = '####updated per insert trigger####';
87989 ANALYZE  TABLE t1;
87990 Table   Op      Msg_type        Msg_text
87991 test.t1 analyze status  OK
87992 CHECK    TABLE t1 EXTENDED;
87993 Table   Op      Msg_type        Msg_text
87994 test.t1 check   status  OK
87995 CHECKSUM TABLE t1 EXTENDED;
87996 Table   Checksum
87997 test.t1 <some_value>
87998 OPTIMIZE TABLE t1;
87999 Table   Op      Msg_type        Msg_text
88000 test.t1 optimize        status  OK
88001 # check layout success:    1
88002 REPAIR   TABLE t1 EXTENDED;
88003 Table   Op      Msg_type        Msg_text
88004 test.t1 repair  status  OK
88005 # check layout success:    1
88006 TRUNCATE t1;
88007         
88008 # check TRUNCATE success:       1
88009 # check layout success:    1
88010 # End usability test (inc/partition_check.inc)
88011 DROP TABLE t1;
88012 CREATE TABLE t1 (
88013 f_int1 INTEGER,
88014 f_int2 INTEGER,
88015 f_char1 CHAR(20),
88016 f_char2 CHAR(20),
88017 f_charbig VARCHAR(1000)
88020 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
88021 (PARTITION part_1 VALUES LESS THAN (0),
88022 PARTITION part_2 VALUES LESS THAN (5),
88023 PARTITION part_3 VALUES LESS THAN (10),
88024 PARTITION part_4 VALUES LESS THAN (2147483646));
88025 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
88026 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
88027 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
88028 ALTER TABLE t1 REPAIR PARTITION ALL;
88029 Table   Op      Msg_type        Msg_text
88030 test.t1 repair  status  OK
88031 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
88032 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
88033 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
88034 # Start usability test (inc/partition_check.inc)
88035 create_command
88036 SHOW CREATE TABLE t1;
88037 Table   Create Table
88038 t1      CREATE TABLE `t1` (
88039   `f_int1` int(11) DEFAULT NULL,
88040   `f_int2` int(11) DEFAULT NULL,
88041   `f_char1` char(20) DEFAULT NULL,
88042   `f_char2` char(20) DEFAULT NULL,
88043   `f_charbig` varchar(1000) DEFAULT NULL
88044 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
88045 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
88046 SUBPARTITION BY HASH (f_int1)
88047 SUBPARTITIONS 2
88048 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM,
88049  PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM,
88050  PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM,
88051  PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
88053 unified filelist
88054 t1#P#part_1#SP#part_1sp0.MYD
88055 t1#P#part_1#SP#part_1sp0.MYI
88056 t1#P#part_1#SP#part_1sp1.MYD
88057 t1#P#part_1#SP#part_1sp1.MYI
88058 t1#P#part_2#SP#part_2sp0.MYD
88059 t1#P#part_2#SP#part_2sp0.MYI
88060 t1#P#part_2#SP#part_2sp1.MYD
88061 t1#P#part_2#SP#part_2sp1.MYI
88062 t1#P#part_3#SP#part_3sp0.MYD
88063 t1#P#part_3#SP#part_3sp0.MYI
88064 t1#P#part_3#SP#part_3sp1.MYD
88065 t1#P#part_3#SP#part_3sp1.MYI
88066 t1#P#part_4#SP#part_4sp0.MYD
88067 t1#P#part_4#SP#part_4sp0.MYI
88068 t1#P#part_4#SP#part_4sp1.MYD
88069 t1#P#part_4#SP#part_4sp1.MYI
88070 t1.frm
88071 t1.par
88073 # check prerequisites-1 success:    1
88074 # check COUNT(*) success:    1
88075 # check MIN/MAX(f_int1) success:    1
88076 # check MIN/MAX(f_int2) success:    1
88077 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
88078 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
88079 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
88080 WHERE f_int1 IN (2,3);
88081 # check prerequisites-3 success:    1
88082 DELETE FROM t1 WHERE f_charbig = 'delete me';
88083 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
88084 # check read via f_int1 success: 1
88085 # check read via f_int2 success: 1
88086         
88087 # check multiple-1 success:     1
88088 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
88089         
88090 # check multiple-2 success:     1
88091 INSERT INTO t1 SELECT * FROM t0_template
88092 WHERE MOD(f_int1,3) = 0;
88093         
88094 # check multiple-3 success:     1
88095 UPDATE t1 SET f_int1 = f_int1 + @max_row
88096 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
88097 AND @max_row_div2 + @max_row_div4;
88098         
88099 # check multiple-4 success:     1
88100 DELETE FROM t1
88101 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
88102 AND @max_row_div2 + @max_row_div4 + @max_row;
88103         
88104 # check multiple-5 success:     1
88105 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
88106 INSERT INTO t1
88107 SET f_int1 = @cur_value , f_int2 = @cur_value,
88108 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
88109 f_charbig = '#SINGLE#';
88110         
88111 # check single-1 success:       1
88112 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
88113 INSERT INTO t1
88114 SET f_int1 = @cur_value , f_int2 = @cur_value,
88115 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
88116 f_charbig = '#SINGLE#';
88117         
88118 # check single-2 success:       1
88119 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
88120 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
88121 UPDATE t1 SET f_int1 = @cur_value2
88122 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
88123         
88124 # check single-3 success:       1
88125 SET @cur_value1= -1;
88126 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
88127 UPDATE t1 SET f_int1 = @cur_value1
88128 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
88129         
88130 # check single-4 success:       1
88131 SELECT MAX(f_int1) INTO @cur_value FROM t1;
88132 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
88133         
88134 # check single-5 success:       1
88135 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
88136         
88137 # check single-6 success:       1
88138 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
88139         
88140 # check single-7 success:       1
88141 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
88142 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
88143 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
88144 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
88145 f_charbig = '#NULL#';
88146 INSERT INTO t1
88147 SET f_int1 = NULL , f_int2 = -@max_row,
88148 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
88149 f_charbig = '#NULL#';
88150 # check null success:    1
88151         
88152 # check null-1 success:         1
88153 UPDATE t1 SET f_int1 = -@max_row
88154 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
88155 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
88156         
88157 # check null-2 success:         1
88158 UPDATE t1 SET f_int1 = NULL
88159 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
88160 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
88161         
88162 # check null-3 success:         1
88163 DELETE FROM t1
88164 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
88165 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
88166         
88167 # check null-4 success:         1
88168 DELETE FROM t1
88169 WHERE f_int1 = 0 AND f_int2 = 0
88170 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
88171 AND f_charbig = '#NULL#';
88172 SET AUTOCOMMIT= 0;
88173 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
88174 SELECT f_int1, f_int1, '', '', 'was inserted'
88175 FROM t0_template source_tab
88176 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
88177         
88178 # check transactions-1 success:         1
88179 COMMIT WORK;
88180         
88181 # check transactions-2 success:         1
88182 ROLLBACK WORK;
88183         
88184 # check transactions-3 success:         1
88185 DELETE FROM t1 WHERE f_charbig = 'was inserted';
88186 COMMIT WORK;
88187 ROLLBACK WORK;
88188         
88189 # check transactions-4 success:         1
88190 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
88191 SELECT f_int1, f_int1, '', '', 'was inserted'
88192 FROM t0_template source_tab
88193 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
88194         
88195 # check transactions-5 success:         1
88196 ROLLBACK WORK;
88197 Warnings:
88198 Warning 1196    Some non-transactional changed tables couldn't be rolled back
88199         
88200 # check transactions-6 success:         1
88201 # INFO: Storage engine used for t1 seems to be not transactional.
88202 COMMIT;
88203         
88204 # check transactions-7 success:         1
88205 DELETE FROM t1 WHERE f_charbig = 'was inserted';
88206 COMMIT WORK;
88207 SET @@session.sql_mode = 'traditional';
88208 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
88209 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
88210 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
88211 '', '', 'was inserted' FROM t0_template
88212 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
88213 ERROR 22012: Division by 0
88214 COMMIT;
88215         
88216 # check transactions-8 success:         1
88217 # INFO: Storage engine used for t1 seems to be unable to revert
88218 #       changes made by the failing statement.
88219 SET @@session.sql_mode = '';
88220 SET AUTOCOMMIT= 1;
88221 DELETE FROM t1 WHERE f_charbig = 'was inserted';
88222 COMMIT WORK;
88223 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
88224         
88225 # check special-1 success:      1
88226 UPDATE t1 SET f_charbig = '';
88227         
88228 # check special-2 success:      1
88229 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
88230 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
88231 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
88232 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88233 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88234 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88235 'just inserted' FROM t0_template
88236 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88237 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
88238 BEGIN
88239 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88240 f_charbig = 'updated by trigger'
88241       WHERE f_int1 = new.f_int1;
88242 END|
88243 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88244 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
88245 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88246         
88247 # check trigger-1 success:      1
88248 DROP TRIGGER trg_1;
88249 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88250 f_int2 = CAST(f_char1 AS SIGNED INT),
88251 f_charbig = 'just inserted'
88252    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88253 DELETE FROM t0_aux
88254 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88255 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88256 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88257 'just inserted' FROM t0_template
88258 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88259 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
88260 BEGIN
88261 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88262 f_charbig = 'updated by trigger'
88263       WHERE f_int1 = new.f_int1;
88264 END|
88265 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88266 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
88267 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88268         
88269 # check trigger-2 success:      1
88270 DROP TRIGGER trg_1;
88271 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88272 f_int2 = CAST(f_char1 AS SIGNED INT),
88273 f_charbig = 'just inserted'
88274    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88275 DELETE FROM t0_aux
88276 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88277 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88278 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88279 'just inserted' FROM t0_template
88280 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88281 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
88282 BEGIN
88283 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88284 f_charbig = 'updated by trigger'
88285       WHERE f_int1 = new.f_int1;
88286 END|
88287 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
88288 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
88289         
88290 # check trigger-3 success:      1
88291 DROP TRIGGER trg_1;
88292 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88293 f_int2 = CAST(f_char1 AS SIGNED INT),
88294 f_charbig = 'just inserted'
88295    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88296 DELETE FROM t0_aux
88297 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88298 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88299 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88300 'just inserted' FROM t0_template
88301 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88302 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
88303 BEGIN
88304 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88305 f_charbig = 'updated by trigger'
88306       WHERE f_int1 = - old.f_int1;
88307 END|
88308 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
88309 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
88310         
88311 # check trigger-4 success:      1
88312 DROP TRIGGER trg_1;
88313 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88314 f_int2 = CAST(f_char1 AS SIGNED INT),
88315 f_charbig = 'just inserted'
88316    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88317 DELETE FROM t0_aux
88318 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88319 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88320 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88321 'just inserted' FROM t0_template
88322 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88323 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
88324 BEGIN
88325 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88326 f_charbig = 'updated by trigger'
88327       WHERE f_int1 = new.f_int1;
88328 END|
88329 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
88330 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
88331         
88332 # check trigger-5 success:      1
88333 DROP TRIGGER trg_1;
88334 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88335 f_int2 = CAST(f_char1 AS SIGNED INT),
88336 f_charbig = 'just inserted'
88337    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88338 DELETE FROM t0_aux
88339 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88340 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88341 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88342 'just inserted' FROM t0_template
88343 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88344 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
88345 BEGIN
88346 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88347 f_charbig = 'updated by trigger'
88348       WHERE f_int1 = - old.f_int1;
88349 END|
88350 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
88351 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
88352         
88353 # check trigger-6 success:      1
88354 DROP TRIGGER trg_1;
88355 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88356 f_int2 = CAST(f_char1 AS SIGNED INT),
88357 f_charbig = 'just inserted'
88358    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88359 DELETE FROM t0_aux
88360 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88361 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88362 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88363 'just inserted' FROM t0_template
88364 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88365 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
88366 BEGIN
88367 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88368 f_charbig = 'updated by trigger'
88369       WHERE f_int1 = - old.f_int1;
88370 END|
88371 DELETE FROM t0_aux
88372 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
88373         
88374 # check trigger-7 success:      1
88375 DROP TRIGGER trg_1;
88376 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88377 f_int2 = CAST(f_char1 AS SIGNED INT),
88378 f_charbig = 'just inserted'
88379    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88380 DELETE FROM t0_aux
88381 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88382 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88383 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88384 'just inserted' FROM t0_template
88385 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88386 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
88387 BEGIN
88388 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88389 f_charbig = 'updated by trigger'
88390       WHERE f_int1 = - old.f_int1;
88391 END|
88392 DELETE FROM t0_aux
88393 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
88394         
88395 # check trigger-8 success:      1
88396 DROP TRIGGER trg_1;
88397 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88398 f_int2 = CAST(f_char1 AS SIGNED INT),
88399 f_charbig = 'just inserted'
88400    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88401 DELETE FROM t0_aux
88402 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88403 DELETE FROM t1
88404 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88405 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
88406 BEGIN
88407 SET new.f_int1 = old.f_int1 + @max_row,
88408 new.f_int2 = old.f_int2 - @max_row,
88409 new.f_charbig = '####updated per update trigger####';
88410 END|
88411 UPDATE t1
88412 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
88413 f_charbig = '####updated per update statement itself####';
88414         
88415 # check trigger-9 success:      1
88416 DROP TRIGGER trg_2;
88417 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88418 f_int2 = CAST(f_char1 AS SIGNED INT),
88419 f_charbig = CONCAT('===',f_char1,'===');
88420 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
88421 BEGIN
88422 SET new.f_int1 = new.f_int1 + @max_row,
88423 new.f_int2 = new.f_int2 - @max_row,
88424 new.f_charbig = '####updated per update trigger####';
88425 END|
88426 UPDATE t1
88427 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
88428 f_charbig = '####updated per update statement itself####';
88429         
88430 # check trigger-10 success:     1
88431 DROP TRIGGER trg_2;
88432 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88433 f_int2 = CAST(f_char1 AS SIGNED INT),
88434 f_charbig = CONCAT('===',f_char1,'===');
88435 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
88436 BEGIN
88437 SET new.f_int1 = @my_max1 + @counter,
88438 new.f_int2 = @my_min2 - @counter,
88439 new.f_charbig = '####updated per insert trigger####';
88440 SET @counter = @counter + 1;
88441 END|
88442 SET @counter = 1;
88443 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
88444 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
88445 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
88446 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
88447 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
88448 ORDER BY f_int1;
88449 DROP TRIGGER trg_3;
88450         
88451 # check trigger-11 success:     1
88452 DELETE FROM t1
88453 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
88454 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
88455 AND f_charbig = '####updated per insert trigger####';
88456 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
88457 BEGIN
88458 SET new.f_int1 = @my_max1 + @counter,
88459 new.f_int2 = @my_min2 - @counter,
88460 new.f_charbig = '####updated per insert trigger####';
88461 SET @counter = @counter + 1;
88462 END|
88463 SET @counter = 1;
88464 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
88465 INSERT INTO t1 (f_char1, f_char2, f_charbig)
88466 SELECT CAST(f_int1 AS CHAR),
88467 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
88468 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
88469 ORDER BY f_int1;
88470 DROP TRIGGER trg_3;
88471         
88472 # check trigger-12 success:     1
88473 DELETE FROM t1
88474 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
88475 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
88476 AND f_charbig = '####updated per insert trigger####';
88477 ANALYZE  TABLE t1;
88478 Table   Op      Msg_type        Msg_text
88479 test.t1 analyze status  OK
88480 CHECK    TABLE t1 EXTENDED;
88481 Table   Op      Msg_type        Msg_text
88482 test.t1 check   status  OK
88483 CHECKSUM TABLE t1 EXTENDED;
88484 Table   Checksum
88485 test.t1 <some_value>
88486 OPTIMIZE TABLE t1;
88487 Table   Op      Msg_type        Msg_text
88488 test.t1 optimize        status  OK
88489 # check layout success:    1
88490 REPAIR   TABLE t1 EXTENDED;
88491 Table   Op      Msg_type        Msg_text
88492 test.t1 repair  status  OK
88493 # check layout success:    1
88494 TRUNCATE t1;
88495         
88496 # check TRUNCATE success:       1
88497 # check layout success:    1
88498 # End usability test (inc/partition_check.inc)
88499 DROP TABLE t1;
88500 CREATE TABLE t1 (
88501 f_int1 INTEGER,
88502 f_int2 INTEGER,
88503 f_char1 CHAR(20),
88504 f_char2 CHAR(20),
88505 f_charbig VARCHAR(1000)
88508 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
88509 (PARTITION part_1 VALUES LESS THAN (0)
88510 (SUBPARTITION subpart11, SUBPARTITION subpart12),
88511 PARTITION part_2 VALUES LESS THAN (5)
88512 (SUBPARTITION subpart21, SUBPARTITION subpart22),
88513 PARTITION part_3 VALUES LESS THAN (10)
88514 (SUBPARTITION subpart31, SUBPARTITION subpart32),
88515 PARTITION part_4 VALUES LESS THAN (2147483646)
88516 (SUBPARTITION subpart41, SUBPARTITION subpart42));
88517 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
88518 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
88519 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
88520 ALTER TABLE t1 REPAIR PARTITION ALL;
88521 Table   Op      Msg_type        Msg_text
88522 test.t1 repair  status  OK
88523 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
88524 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
88525 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
88526 # Start usability test (inc/partition_check.inc)
88527 create_command
88528 SHOW CREATE TABLE t1;
88529 Table   Create Table
88530 t1      CREATE TABLE `t1` (
88531   `f_int1` int(11) DEFAULT NULL,
88532   `f_int2` int(11) DEFAULT NULL,
88533   `f_char1` char(20) DEFAULT NULL,
88534   `f_char2` char(20) DEFAULT NULL,
88535   `f_charbig` varchar(1000) DEFAULT NULL
88536 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
88537 /*!50100 PARTITION BY RANGE (f_int1)
88538 SUBPARTITION BY KEY (f_int1)
88539 (PARTITION part_1 VALUES LESS THAN (0)
88540  (SUBPARTITION subpart11 ENGINE = MyISAM,
88541   SUBPARTITION subpart12 ENGINE = MyISAM),
88542  PARTITION part_2 VALUES LESS THAN (5)
88543  (SUBPARTITION subpart21 ENGINE = MyISAM,
88544   SUBPARTITION subpart22 ENGINE = MyISAM),
88545  PARTITION part_3 VALUES LESS THAN (10)
88546  (SUBPARTITION subpart31 ENGINE = MyISAM,
88547   SUBPARTITION subpart32 ENGINE = MyISAM),
88548  PARTITION part_4 VALUES LESS THAN (2147483646)
88549  (SUBPARTITION subpart41 ENGINE = MyISAM,
88550   SUBPARTITION subpart42 ENGINE = MyISAM)) */
88552 unified filelist
88553 t1#P#part_1#SP#subpart11.MYD
88554 t1#P#part_1#SP#subpart11.MYI
88555 t1#P#part_1#SP#subpart12.MYD
88556 t1#P#part_1#SP#subpart12.MYI
88557 t1#P#part_2#SP#subpart21.MYD
88558 t1#P#part_2#SP#subpart21.MYI
88559 t1#P#part_2#SP#subpart22.MYD
88560 t1#P#part_2#SP#subpart22.MYI
88561 t1#P#part_3#SP#subpart31.MYD
88562 t1#P#part_3#SP#subpart31.MYI
88563 t1#P#part_3#SP#subpart32.MYD
88564 t1#P#part_3#SP#subpart32.MYI
88565 t1#P#part_4#SP#subpart41.MYD
88566 t1#P#part_4#SP#subpart41.MYI
88567 t1#P#part_4#SP#subpart42.MYD
88568 t1#P#part_4#SP#subpart42.MYI
88569 t1.frm
88570 t1.par
88572 # check prerequisites-1 success:    1
88573 # check COUNT(*) success:    1
88574 # check MIN/MAX(f_int1) success:    1
88575 # check MIN/MAX(f_int2) success:    1
88576 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
88577 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
88578 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
88579 WHERE f_int1 IN (2,3);
88580 # check prerequisites-3 success:    1
88581 DELETE FROM t1 WHERE f_charbig = 'delete me';
88582 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
88583 # check read via f_int1 success: 1
88584 # check read via f_int2 success: 1
88585         
88586 # check multiple-1 success:     1
88587 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
88588         
88589 # check multiple-2 success:     1
88590 INSERT INTO t1 SELECT * FROM t0_template
88591 WHERE MOD(f_int1,3) = 0;
88592         
88593 # check multiple-3 success:     1
88594 UPDATE t1 SET f_int1 = f_int1 + @max_row
88595 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
88596 AND @max_row_div2 + @max_row_div4;
88597         
88598 # check multiple-4 success:     1
88599 DELETE FROM t1
88600 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
88601 AND @max_row_div2 + @max_row_div4 + @max_row;
88602         
88603 # check multiple-5 success:     1
88604 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
88605 INSERT INTO t1
88606 SET f_int1 = @cur_value , f_int2 = @cur_value,
88607 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
88608 f_charbig = '#SINGLE#';
88609         
88610 # check single-1 success:       1
88611 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
88612 INSERT INTO t1
88613 SET f_int1 = @cur_value , f_int2 = @cur_value,
88614 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
88615 f_charbig = '#SINGLE#';
88616         
88617 # check single-2 success:       1
88618 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
88619 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
88620 UPDATE t1 SET f_int1 = @cur_value2
88621 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
88622         
88623 # check single-3 success:       1
88624 SET @cur_value1= -1;
88625 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
88626 UPDATE t1 SET f_int1 = @cur_value1
88627 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
88628         
88629 # check single-4 success:       1
88630 SELECT MAX(f_int1) INTO @cur_value FROM t1;
88631 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
88632         
88633 # check single-5 success:       1
88634 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
88635         
88636 # check single-6 success:       1
88637 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
88638 ERROR HY000: Table has no partition for value 2147483647
88639 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
88640 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
88641 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
88642 f_charbig = '#NULL#';
88643 INSERT INTO t1
88644 SET f_int1 = NULL , f_int2 = -@max_row,
88645 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
88646 f_charbig = '#NULL#';
88647 # check null success:    1
88648         
88649 # check null-1 success:         1
88650 UPDATE t1 SET f_int1 = -@max_row
88651 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
88652 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
88653         
88654 # check null-2 success:         1
88655 UPDATE t1 SET f_int1 = NULL
88656 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
88657 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
88658         
88659 # check null-3 success:         1
88660 DELETE FROM t1
88661 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
88662 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
88663         
88664 # check null-4 success:         1
88665 DELETE FROM t1
88666 WHERE f_int1 = 0 AND f_int2 = 0
88667 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
88668 AND f_charbig = '#NULL#';
88669 SET AUTOCOMMIT= 0;
88670 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
88671 SELECT f_int1, f_int1, '', '', 'was inserted'
88672 FROM t0_template source_tab
88673 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
88674         
88675 # check transactions-1 success:         1
88676 COMMIT WORK;
88677         
88678 # check transactions-2 success:         1
88679 ROLLBACK WORK;
88680         
88681 # check transactions-3 success:         1
88682 DELETE FROM t1 WHERE f_charbig = 'was inserted';
88683 COMMIT WORK;
88684 ROLLBACK WORK;
88685         
88686 # check transactions-4 success:         1
88687 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
88688 SELECT f_int1, f_int1, '', '', 'was inserted'
88689 FROM t0_template source_tab
88690 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
88691         
88692 # check transactions-5 success:         1
88693 ROLLBACK WORK;
88694 Warnings:
88695 Warning 1196    Some non-transactional changed tables couldn't be rolled back
88696         
88697 # check transactions-6 success:         1
88698 # INFO: Storage engine used for t1 seems to be not transactional.
88699 COMMIT;
88700         
88701 # check transactions-7 success:         1
88702 DELETE FROM t1 WHERE f_charbig = 'was inserted';
88703 COMMIT WORK;
88704 SET @@session.sql_mode = 'traditional';
88705 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
88706 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
88707 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
88708 '', '', 'was inserted' FROM t0_template
88709 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
88710 ERROR 22012: Division by 0
88711 COMMIT;
88712         
88713 # check transactions-8 success:         1
88714 # INFO: Storage engine used for t1 seems to be unable to revert
88715 #       changes made by the failing statement.
88716 SET @@session.sql_mode = '';
88717 SET AUTOCOMMIT= 1;
88718 DELETE FROM t1 WHERE f_charbig = 'was inserted';
88719 COMMIT WORK;
88720 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
88721         
88722 # check special-1 success:      1
88723 UPDATE t1 SET f_charbig = '';
88724         
88725 # check special-2 success:      1
88726 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
88727 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
88728 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
88729 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88730 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88731 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88732 'just inserted' FROM t0_template
88733 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88734 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
88735 BEGIN
88736 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88737 f_charbig = 'updated by trigger'
88738       WHERE f_int1 = new.f_int1;
88739 END|
88740 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88741 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
88742 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88743         
88744 # check trigger-1 success:      1
88745 DROP TRIGGER trg_1;
88746 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88747 f_int2 = CAST(f_char1 AS SIGNED INT),
88748 f_charbig = 'just inserted'
88749    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88750 DELETE FROM t0_aux
88751 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88752 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88753 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88754 'just inserted' FROM t0_template
88755 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88756 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
88757 BEGIN
88758 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88759 f_charbig = 'updated by trigger'
88760       WHERE f_int1 = new.f_int1;
88761 END|
88762 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88763 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
88764 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88765         
88766 # check trigger-2 success:      1
88767 DROP TRIGGER trg_1;
88768 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88769 f_int2 = CAST(f_char1 AS SIGNED INT),
88770 f_charbig = 'just inserted'
88771    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88772 DELETE FROM t0_aux
88773 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88774 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88775 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88776 'just inserted' FROM t0_template
88777 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88778 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
88779 BEGIN
88780 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88781 f_charbig = 'updated by trigger'
88782       WHERE f_int1 = new.f_int1;
88783 END|
88784 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
88785 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
88786         
88787 # check trigger-3 success:      1
88788 DROP TRIGGER trg_1;
88789 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88790 f_int2 = CAST(f_char1 AS SIGNED INT),
88791 f_charbig = 'just inserted'
88792    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88793 DELETE FROM t0_aux
88794 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88795 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88796 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88797 'just inserted' FROM t0_template
88798 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88799 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
88800 BEGIN
88801 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88802 f_charbig = 'updated by trigger'
88803       WHERE f_int1 = - old.f_int1;
88804 END|
88805 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
88806 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
88807         
88808 # check trigger-4 success:      1
88809 DROP TRIGGER trg_1;
88810 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88811 f_int2 = CAST(f_char1 AS SIGNED INT),
88812 f_charbig = 'just inserted'
88813    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88814 DELETE FROM t0_aux
88815 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88816 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88817 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88818 'just inserted' FROM t0_template
88819 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88820 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
88821 BEGIN
88822 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88823 f_charbig = 'updated by trigger'
88824       WHERE f_int1 = new.f_int1;
88825 END|
88826 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
88827 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
88828         
88829 # check trigger-5 success:      1
88830 DROP TRIGGER trg_1;
88831 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88832 f_int2 = CAST(f_char1 AS SIGNED INT),
88833 f_charbig = 'just inserted'
88834    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88835 DELETE FROM t0_aux
88836 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88837 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88838 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88839 'just inserted' FROM t0_template
88840 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88841 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
88842 BEGIN
88843 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88844 f_charbig = 'updated by trigger'
88845       WHERE f_int1 = - old.f_int1;
88846 END|
88847 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
88848 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
88849         
88850 # check trigger-6 success:      1
88851 DROP TRIGGER trg_1;
88852 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88853 f_int2 = CAST(f_char1 AS SIGNED INT),
88854 f_charbig = 'just inserted'
88855    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88856 DELETE FROM t0_aux
88857 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88858 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88859 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88860 'just inserted' FROM t0_template
88861 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88862 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
88863 BEGIN
88864 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88865 f_charbig = 'updated by trigger'
88866       WHERE f_int1 = - old.f_int1;
88867 END|
88868 DELETE FROM t0_aux
88869 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
88870         
88871 # check trigger-7 success:      1
88872 DROP TRIGGER trg_1;
88873 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88874 f_int2 = CAST(f_char1 AS SIGNED INT),
88875 f_charbig = 'just inserted'
88876    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88877 DELETE FROM t0_aux
88878 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88879 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
88880 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
88881 'just inserted' FROM t0_template
88882 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88883 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
88884 BEGIN
88885 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
88886 f_charbig = 'updated by trigger'
88887       WHERE f_int1 = - old.f_int1;
88888 END|
88889 DELETE FROM t0_aux
88890 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
88891         
88892 # check trigger-8 success:      1
88893 DROP TRIGGER trg_1;
88894 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88895 f_int2 = CAST(f_char1 AS SIGNED INT),
88896 f_charbig = 'just inserted'
88897    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
88898 DELETE FROM t0_aux
88899 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88900 DELETE FROM t1
88901 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
88902 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
88903 BEGIN
88904 SET new.f_int1 = old.f_int1 + @max_row,
88905 new.f_int2 = old.f_int2 - @max_row,
88906 new.f_charbig = '####updated per update trigger####';
88907 END|
88908 UPDATE t1
88909 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
88910 f_charbig = '####updated per update statement itself####';
88911         
88912 # check trigger-9 success:      1
88913 DROP TRIGGER trg_2;
88914 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88915 f_int2 = CAST(f_char1 AS SIGNED INT),
88916 f_charbig = CONCAT('===',f_char1,'===');
88917 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
88918 BEGIN
88919 SET new.f_int1 = new.f_int1 + @max_row,
88920 new.f_int2 = new.f_int2 - @max_row,
88921 new.f_charbig = '####updated per update trigger####';
88922 END|
88923 UPDATE t1
88924 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
88925 f_charbig = '####updated per update statement itself####';
88926         
88927 # check trigger-10 success:     1
88928 DROP TRIGGER trg_2;
88929 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
88930 f_int2 = CAST(f_char1 AS SIGNED INT),
88931 f_charbig = CONCAT('===',f_char1,'===');
88932 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
88933 BEGIN
88934 SET new.f_int1 = @my_max1 + @counter,
88935 new.f_int2 = @my_min2 - @counter,
88936 new.f_charbig = '####updated per insert trigger####';
88937 SET @counter = @counter + 1;
88938 END|
88939 SET @counter = 1;
88940 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
88941 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
88942 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
88943 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
88944 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
88945 ORDER BY f_int1;
88946 DROP TRIGGER trg_3;
88947         
88948 # check trigger-11 success:     1
88949 DELETE FROM t1
88950 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
88951 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
88952 AND f_charbig = '####updated per insert trigger####';
88953 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
88954 BEGIN
88955 SET new.f_int1 = @my_max1 + @counter,
88956 new.f_int2 = @my_min2 - @counter,
88957 new.f_charbig = '####updated per insert trigger####';
88958 SET @counter = @counter + 1;
88959 END|
88960 SET @counter = 1;
88961 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
88962 INSERT INTO t1 (f_char1, f_char2, f_charbig)
88963 SELECT CAST(f_int1 AS CHAR),
88964 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
88965 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
88966 ORDER BY f_int1;
88967 DROP TRIGGER trg_3;
88968         
88969 # check trigger-12 success:     1
88970 DELETE FROM t1
88971 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
88972 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
88973 AND f_charbig = '####updated per insert trigger####';
88974 ANALYZE  TABLE t1;
88975 Table   Op      Msg_type        Msg_text
88976 test.t1 analyze status  OK
88977 CHECK    TABLE t1 EXTENDED;
88978 Table   Op      Msg_type        Msg_text
88979 test.t1 check   status  OK
88980 CHECKSUM TABLE t1 EXTENDED;
88981 Table   Checksum
88982 test.t1 <some_value>
88983 OPTIMIZE TABLE t1;
88984 Table   Op      Msg_type        Msg_text
88985 test.t1 optimize        status  OK
88986 # check layout success:    1
88987 REPAIR   TABLE t1 EXTENDED;
88988 Table   Op      Msg_type        Msg_text
88989 test.t1 repair  status  OK
88990 # check layout success:    1
88991 TRUNCATE t1;
88992         
88993 # check TRUNCATE success:       1
88994 # check layout success:    1
88995 # End usability test (inc/partition_check.inc)
88996 DROP TABLE t1;
88997 CREATE TABLE t1 (
88998 f_int1 INTEGER,
88999 f_int2 INTEGER,
89000 f_char1 CHAR(20),
89001 f_char2 CHAR(20),
89002 f_charbig VARCHAR(1000)
89005 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
89006 (PARTITION part_1 VALUES IN (0)
89007 (SUBPARTITION sp11, SUBPARTITION sp12),
89008 PARTITION part_2 VALUES IN (1)
89009 (SUBPARTITION sp21, SUBPARTITION sp22),
89010 PARTITION part_3 VALUES IN (2)
89011 (SUBPARTITION sp31, SUBPARTITION sp32),
89012 PARTITION part_4 VALUES IN (NULL)
89013 (SUBPARTITION sp41, SUBPARTITION sp42));
89014 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
89015 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
89016 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
89017 ALTER TABLE t1 REPAIR PARTITION ALL;
89018 Table   Op      Msg_type        Msg_text
89019 test.t1 repair  status  OK
89020 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
89021 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
89022 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
89023 # Start usability test (inc/partition_check.inc)
89024 create_command
89025 SHOW CREATE TABLE t1;
89026 Table   Create Table
89027 t1      CREATE TABLE `t1` (
89028   `f_int1` int(11) DEFAULT NULL,
89029   `f_int2` int(11) DEFAULT NULL,
89030   `f_char1` char(20) DEFAULT NULL,
89031   `f_char2` char(20) DEFAULT NULL,
89032   `f_charbig` varchar(1000) DEFAULT NULL
89033 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
89034 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
89035 SUBPARTITION BY HASH (f_int1 + 1)
89036 (PARTITION part_1 VALUES IN (0)
89037  (SUBPARTITION sp11 ENGINE = MyISAM,
89038   SUBPARTITION sp12 ENGINE = MyISAM),
89039  PARTITION part_2 VALUES IN (1)
89040  (SUBPARTITION sp21 ENGINE = MyISAM,
89041   SUBPARTITION sp22 ENGINE = MyISAM),
89042  PARTITION part_3 VALUES IN (2)
89043  (SUBPARTITION sp31 ENGINE = MyISAM,
89044   SUBPARTITION sp32 ENGINE = MyISAM),
89045  PARTITION part_4 VALUES IN (NULL)
89046  (SUBPARTITION sp41 ENGINE = MyISAM,
89047   SUBPARTITION sp42 ENGINE = MyISAM)) */
89049 unified filelist
89050 t1#P#part_1#SP#sp11.MYD
89051 t1#P#part_1#SP#sp11.MYI
89052 t1#P#part_1#SP#sp12.MYD
89053 t1#P#part_1#SP#sp12.MYI
89054 t1#P#part_2#SP#sp21.MYD
89055 t1#P#part_2#SP#sp21.MYI
89056 t1#P#part_2#SP#sp22.MYD
89057 t1#P#part_2#SP#sp22.MYI
89058 t1#P#part_3#SP#sp31.MYD
89059 t1#P#part_3#SP#sp31.MYI
89060 t1#P#part_3#SP#sp32.MYD
89061 t1#P#part_3#SP#sp32.MYI
89062 t1#P#part_4#SP#sp41.MYD
89063 t1#P#part_4#SP#sp41.MYI
89064 t1#P#part_4#SP#sp42.MYD
89065 t1#P#part_4#SP#sp42.MYI
89066 t1.frm
89067 t1.par
89069 # check prerequisites-1 success:    1
89070 # check COUNT(*) success:    1
89071 # check MIN/MAX(f_int1) success:    1
89072 # check MIN/MAX(f_int2) success:    1
89073 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
89074 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
89075 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
89076 WHERE f_int1 IN (2,3);
89077 # check prerequisites-3 success:    1
89078 DELETE FROM t1 WHERE f_charbig = 'delete me';
89079 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
89080 # check read via f_int1 success: 1
89081 # check read via f_int2 success: 1
89082         
89083 # check multiple-1 success:     1
89084 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
89085         
89086 # check multiple-2 success:     1
89087 INSERT INTO t1 SELECT * FROM t0_template
89088 WHERE MOD(f_int1,3) = 0;
89089         
89090 # check multiple-3 success:     1
89091 UPDATE t1 SET f_int1 = f_int1 + @max_row
89092 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
89093 AND @max_row_div2 + @max_row_div4;
89094         
89095 # check multiple-4 success:     1
89096 DELETE FROM t1
89097 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
89098 AND @max_row_div2 + @max_row_div4 + @max_row;
89099         
89100 # check multiple-5 success:     1
89101 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
89102 INSERT INTO t1
89103 SET f_int1 = @cur_value , f_int2 = @cur_value,
89104 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
89105 f_charbig = '#SINGLE#';
89106         
89107 # check single-1 success:       1
89108 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
89109 INSERT INTO t1
89110 SET f_int1 = @cur_value , f_int2 = @cur_value,
89111 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
89112 f_charbig = '#SINGLE#';
89113         
89114 # check single-2 success:       1
89115 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
89116 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
89117 UPDATE t1 SET f_int1 = @cur_value2
89118 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
89119         
89120 # check single-3 success:       1
89121 SET @cur_value1= -1;
89122 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
89123 UPDATE t1 SET f_int1 = @cur_value1
89124 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
89125         
89126 # check single-4 success:       1
89127 SELECT MAX(f_int1) INTO @cur_value FROM t1;
89128 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
89129         
89130 # check single-5 success:       1
89131 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
89132         
89133 # check single-6 success:       1
89134 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
89135         
89136 # check single-7 success:       1
89137 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
89138 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
89139 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
89140 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
89141 f_charbig = '#NULL#';
89142 INSERT INTO t1
89143 SET f_int1 = NULL , f_int2 = -@max_row,
89144 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
89145 f_charbig = '#NULL#';
89146 # check null success:    1
89147         
89148 # check null-1 success:         1
89149 UPDATE t1 SET f_int1 = -@max_row
89150 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
89151 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
89152         
89153 # check null-2 success:         1
89154 UPDATE t1 SET f_int1 = NULL
89155 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
89156 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
89157         
89158 # check null-3 success:         1
89159 DELETE FROM t1
89160 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
89161 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
89162         
89163 # check null-4 success:         1
89164 DELETE FROM t1
89165 WHERE f_int1 = 0 AND f_int2 = 0
89166 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
89167 AND f_charbig = '#NULL#';
89168 SET AUTOCOMMIT= 0;
89169 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
89170 SELECT f_int1, f_int1, '', '', 'was inserted'
89171 FROM t0_template source_tab
89172 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
89173         
89174 # check transactions-1 success:         1
89175 COMMIT WORK;
89176         
89177 # check transactions-2 success:         1
89178 ROLLBACK WORK;
89179         
89180 # check transactions-3 success:         1
89181 DELETE FROM t1 WHERE f_charbig = 'was inserted';
89182 COMMIT WORK;
89183 ROLLBACK WORK;
89184         
89185 # check transactions-4 success:         1
89186 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
89187 SELECT f_int1, f_int1, '', '', 'was inserted'
89188 FROM t0_template source_tab
89189 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
89190         
89191 # check transactions-5 success:         1
89192 ROLLBACK WORK;
89193 Warnings:
89194 Warning 1196    Some non-transactional changed tables couldn't be rolled back
89195         
89196 # check transactions-6 success:         1
89197 # INFO: Storage engine used for t1 seems to be not transactional.
89198 COMMIT;
89199         
89200 # check transactions-7 success:         1
89201 DELETE FROM t1 WHERE f_charbig = 'was inserted';
89202 COMMIT WORK;
89203 SET @@session.sql_mode = 'traditional';
89204 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
89205 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
89206 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
89207 '', '', 'was inserted' FROM t0_template
89208 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
89209 ERROR 22012: Division by 0
89210 COMMIT;
89211         
89212 # check transactions-8 success:         1
89213 # INFO: Storage engine used for t1 seems to be unable to revert
89214 #       changes made by the failing statement.
89215 SET @@session.sql_mode = '';
89216 SET AUTOCOMMIT= 1;
89217 DELETE FROM t1 WHERE f_charbig = 'was inserted';
89218 COMMIT WORK;
89219 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
89220         
89221 # check special-1 success:      1
89222 UPDATE t1 SET f_charbig = '';
89223         
89224 # check special-2 success:      1
89225 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
89226 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
89227 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
89228 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89229 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89230 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89231 'just inserted' FROM t0_template
89232 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89233 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
89234 BEGIN
89235 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89236 f_charbig = 'updated by trigger'
89237       WHERE f_int1 = new.f_int1;
89238 END|
89239 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89240 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
89241 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89242         
89243 # check trigger-1 success:      1
89244 DROP TRIGGER trg_1;
89245 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89246 f_int2 = CAST(f_char1 AS SIGNED INT),
89247 f_charbig = 'just inserted'
89248    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89249 DELETE FROM t0_aux
89250 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89251 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89252 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89253 'just inserted' FROM t0_template
89254 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89255 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
89256 BEGIN
89257 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89258 f_charbig = 'updated by trigger'
89259       WHERE f_int1 = new.f_int1;
89260 END|
89261 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89262 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
89263 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89264         
89265 # check trigger-2 success:      1
89266 DROP TRIGGER trg_1;
89267 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89268 f_int2 = CAST(f_char1 AS SIGNED INT),
89269 f_charbig = 'just inserted'
89270    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89271 DELETE FROM t0_aux
89272 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89273 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89274 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89275 'just inserted' FROM t0_template
89276 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89277 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
89278 BEGIN
89279 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89280 f_charbig = 'updated by trigger'
89281       WHERE f_int1 = new.f_int1;
89282 END|
89283 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
89284 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
89285         
89286 # check trigger-3 success:      1
89287 DROP TRIGGER trg_1;
89288 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89289 f_int2 = CAST(f_char1 AS SIGNED INT),
89290 f_charbig = 'just inserted'
89291    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89292 DELETE FROM t0_aux
89293 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89294 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89295 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89296 'just inserted' FROM t0_template
89297 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89298 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
89299 BEGIN
89300 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89301 f_charbig = 'updated by trigger'
89302       WHERE f_int1 = - old.f_int1;
89303 END|
89304 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
89305 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
89306         
89307 # check trigger-4 success:      1
89308 DROP TRIGGER trg_1;
89309 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89310 f_int2 = CAST(f_char1 AS SIGNED INT),
89311 f_charbig = 'just inserted'
89312    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89313 DELETE FROM t0_aux
89314 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89315 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89316 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89317 'just inserted' FROM t0_template
89318 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89319 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
89320 BEGIN
89321 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89322 f_charbig = 'updated by trigger'
89323       WHERE f_int1 = new.f_int1;
89324 END|
89325 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
89326 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
89327         
89328 # check trigger-5 success:      1
89329 DROP TRIGGER trg_1;
89330 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89331 f_int2 = CAST(f_char1 AS SIGNED INT),
89332 f_charbig = 'just inserted'
89333    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89334 DELETE FROM t0_aux
89335 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89336 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89337 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89338 'just inserted' FROM t0_template
89339 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89340 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
89341 BEGIN
89342 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89343 f_charbig = 'updated by trigger'
89344       WHERE f_int1 = - old.f_int1;
89345 END|
89346 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
89347 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
89348         
89349 # check trigger-6 success:      1
89350 DROP TRIGGER trg_1;
89351 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89352 f_int2 = CAST(f_char1 AS SIGNED INT),
89353 f_charbig = 'just inserted'
89354    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89355 DELETE FROM t0_aux
89356 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89357 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89358 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89359 'just inserted' FROM t0_template
89360 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89361 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
89362 BEGIN
89363 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89364 f_charbig = 'updated by trigger'
89365       WHERE f_int1 = - old.f_int1;
89366 END|
89367 DELETE FROM t0_aux
89368 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
89369         
89370 # check trigger-7 success:      1
89371 DROP TRIGGER trg_1;
89372 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89373 f_int2 = CAST(f_char1 AS SIGNED INT),
89374 f_charbig = 'just inserted'
89375    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89376 DELETE FROM t0_aux
89377 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89378 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89379 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89380 'just inserted' FROM t0_template
89381 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89382 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
89383 BEGIN
89384 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89385 f_charbig = 'updated by trigger'
89386       WHERE f_int1 = - old.f_int1;
89387 END|
89388 DELETE FROM t0_aux
89389 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
89390         
89391 # check trigger-8 success:      1
89392 DROP TRIGGER trg_1;
89393 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89394 f_int2 = CAST(f_char1 AS SIGNED INT),
89395 f_charbig = 'just inserted'
89396    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89397 DELETE FROM t0_aux
89398 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89399 DELETE FROM t1
89400 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89401 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
89402 BEGIN
89403 SET new.f_int1 = old.f_int1 + @max_row,
89404 new.f_int2 = old.f_int2 - @max_row,
89405 new.f_charbig = '####updated per update trigger####';
89406 END|
89407 UPDATE t1
89408 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
89409 f_charbig = '####updated per update statement itself####';
89410         
89411 # check trigger-9 success:      1
89412 DROP TRIGGER trg_2;
89413 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89414 f_int2 = CAST(f_char1 AS SIGNED INT),
89415 f_charbig = CONCAT('===',f_char1,'===');
89416 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
89417 BEGIN
89418 SET new.f_int1 = new.f_int1 + @max_row,
89419 new.f_int2 = new.f_int2 - @max_row,
89420 new.f_charbig = '####updated per update trigger####';
89421 END|
89422 UPDATE t1
89423 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
89424 f_charbig = '####updated per update statement itself####';
89425         
89426 # check trigger-10 success:     1
89427 DROP TRIGGER trg_2;
89428 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89429 f_int2 = CAST(f_char1 AS SIGNED INT),
89430 f_charbig = CONCAT('===',f_char1,'===');
89431 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
89432 BEGIN
89433 SET new.f_int1 = @my_max1 + @counter,
89434 new.f_int2 = @my_min2 - @counter,
89435 new.f_charbig = '####updated per insert trigger####';
89436 SET @counter = @counter + 1;
89437 END|
89438 SET @counter = 1;
89439 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
89440 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
89441 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
89442 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
89443 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
89444 ORDER BY f_int1;
89445 DROP TRIGGER trg_3;
89446         
89447 # check trigger-11 success:     1
89448 DELETE FROM t1
89449 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
89450 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
89451 AND f_charbig = '####updated per insert trigger####';
89452 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
89453 BEGIN
89454 SET new.f_int1 = @my_max1 + @counter,
89455 new.f_int2 = @my_min2 - @counter,
89456 new.f_charbig = '####updated per insert trigger####';
89457 SET @counter = @counter + 1;
89458 END|
89459 SET @counter = 1;
89460 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
89461 INSERT INTO t1 (f_char1, f_char2, f_charbig)
89462 SELECT CAST(f_int1 AS CHAR),
89463 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
89464 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
89465 ORDER BY f_int1;
89466 DROP TRIGGER trg_3;
89467         
89468 # check trigger-12 success:     1
89469 DELETE FROM t1
89470 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
89471 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
89472 AND f_charbig = '####updated per insert trigger####';
89473 ANALYZE  TABLE t1;
89474 Table   Op      Msg_type        Msg_text
89475 test.t1 analyze status  OK
89476 CHECK    TABLE t1 EXTENDED;
89477 Table   Op      Msg_type        Msg_text
89478 test.t1 check   status  OK
89479 CHECKSUM TABLE t1 EXTENDED;
89480 Table   Checksum
89481 test.t1 <some_value>
89482 OPTIMIZE TABLE t1;
89483 Table   Op      Msg_type        Msg_text
89484 test.t1 optimize        status  OK
89485 # check layout success:    1
89486 REPAIR   TABLE t1 EXTENDED;
89487 Table   Op      Msg_type        Msg_text
89488 test.t1 repair  status  OK
89489 # check layout success:    1
89490 TRUNCATE t1;
89491         
89492 # check TRUNCATE success:       1
89493 # check layout success:    1
89494 # End usability test (inc/partition_check.inc)
89495 DROP TABLE t1;
89496 CREATE TABLE t1 (
89497 f_int1 INTEGER,
89498 f_int2 INTEGER,
89499 f_char1 CHAR(20),
89500 f_char2 CHAR(20),
89501 f_charbig VARCHAR(1000)
89504 PARTITION BY LIST(ABS(MOD(f_int1,2)))
89505 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
89506 (PARTITION part_1 VALUES IN (0),
89507  PARTITION part_2 VALUES IN (1),
89508  PARTITION part_3 VALUES IN (NULL));
89509 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
89510 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
89511 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
89512 ALTER TABLE t1 REPAIR PARTITION ALL;
89513 Table   Op      Msg_type        Msg_text
89514 test.t1 repair  status  OK
89515 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
89516 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
89517 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
89518 # Start usability test (inc/partition_check.inc)
89519 create_command
89520 SHOW CREATE TABLE t1;
89521 Table   Create Table
89522 t1      CREATE TABLE `t1` (
89523   `f_int1` int(11) DEFAULT NULL,
89524   `f_int2` int(11) DEFAULT NULL,
89525   `f_char1` char(20) DEFAULT NULL,
89526   `f_char2` char(20) DEFAULT NULL,
89527   `f_charbig` varchar(1000) DEFAULT NULL
89528 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
89529 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
89530 SUBPARTITION BY KEY (f_int1)
89531 SUBPARTITIONS 3
89532 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM,
89533  PARTITION part_2 VALUES IN (1) ENGINE = MyISAM,
89534  PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */
89536 unified filelist
89537 t1#P#part_1#SP#part_1sp0.MYD
89538 t1#P#part_1#SP#part_1sp0.MYI
89539 t1#P#part_1#SP#part_1sp1.MYD
89540 t1#P#part_1#SP#part_1sp1.MYI
89541 t1#P#part_1#SP#part_1sp2.MYD
89542 t1#P#part_1#SP#part_1sp2.MYI
89543 t1#P#part_2#SP#part_2sp0.MYD
89544 t1#P#part_2#SP#part_2sp0.MYI
89545 t1#P#part_2#SP#part_2sp1.MYD
89546 t1#P#part_2#SP#part_2sp1.MYI
89547 t1#P#part_2#SP#part_2sp2.MYD
89548 t1#P#part_2#SP#part_2sp2.MYI
89549 t1#P#part_3#SP#part_3sp0.MYD
89550 t1#P#part_3#SP#part_3sp0.MYI
89551 t1#P#part_3#SP#part_3sp1.MYD
89552 t1#P#part_3#SP#part_3sp1.MYI
89553 t1#P#part_3#SP#part_3sp2.MYD
89554 t1#P#part_3#SP#part_3sp2.MYI
89555 t1.frm
89556 t1.par
89558 # check prerequisites-1 success:    1
89559 # check COUNT(*) success:    1
89560 # check MIN/MAX(f_int1) success:    1
89561 # check MIN/MAX(f_int2) success:    1
89562 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
89563 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
89564 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
89565 WHERE f_int1 IN (2,3);
89566 # check prerequisites-3 success:    1
89567 DELETE FROM t1 WHERE f_charbig = 'delete me';
89568 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
89569 # check read via f_int1 success: 1
89570 # check read via f_int2 success: 1
89571         
89572 # check multiple-1 success:     1
89573 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
89574         
89575 # check multiple-2 success:     1
89576 INSERT INTO t1 SELECT * FROM t0_template
89577 WHERE MOD(f_int1,3) = 0;
89578         
89579 # check multiple-3 success:     1
89580 UPDATE t1 SET f_int1 = f_int1 + @max_row
89581 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
89582 AND @max_row_div2 + @max_row_div4;
89583         
89584 # check multiple-4 success:     1
89585 DELETE FROM t1
89586 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
89587 AND @max_row_div2 + @max_row_div4 + @max_row;
89588         
89589 # check multiple-5 success:     1
89590 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
89591 INSERT INTO t1
89592 SET f_int1 = @cur_value , f_int2 = @cur_value,
89593 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
89594 f_charbig = '#SINGLE#';
89595         
89596 # check single-1 success:       1
89597 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
89598 INSERT INTO t1
89599 SET f_int1 = @cur_value , f_int2 = @cur_value,
89600 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
89601 f_charbig = '#SINGLE#';
89602         
89603 # check single-2 success:       1
89604 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
89605 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
89606 UPDATE t1 SET f_int1 = @cur_value2
89607 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
89608         
89609 # check single-3 success:       1
89610 SET @cur_value1= -1;
89611 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
89612 UPDATE t1 SET f_int1 = @cur_value1
89613 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
89614         
89615 # check single-4 success:       1
89616 SELECT MAX(f_int1) INTO @cur_value FROM t1;
89617 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
89618         
89619 # check single-5 success:       1
89620 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
89621         
89622 # check single-6 success:       1
89623 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
89624         
89625 # check single-7 success:       1
89626 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
89627 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
89628 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
89629 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
89630 f_charbig = '#NULL#';
89631 INSERT INTO t1
89632 SET f_int1 = NULL , f_int2 = -@max_row,
89633 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
89634 f_charbig = '#NULL#';
89635 # check null success:    1
89636         
89637 # check null-1 success:         1
89638 UPDATE t1 SET f_int1 = -@max_row
89639 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
89640 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
89641         
89642 # check null-2 success:         1
89643 UPDATE t1 SET f_int1 = NULL
89644 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
89645 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
89646         
89647 # check null-3 success:         1
89648 DELETE FROM t1
89649 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
89650 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
89651         
89652 # check null-4 success:         1
89653 DELETE FROM t1
89654 WHERE f_int1 = 0 AND f_int2 = 0
89655 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
89656 AND f_charbig = '#NULL#';
89657 SET AUTOCOMMIT= 0;
89658 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
89659 SELECT f_int1, f_int1, '', '', 'was inserted'
89660 FROM t0_template source_tab
89661 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
89662         
89663 # check transactions-1 success:         1
89664 COMMIT WORK;
89665         
89666 # check transactions-2 success:         1
89667 ROLLBACK WORK;
89668         
89669 # check transactions-3 success:         1
89670 DELETE FROM t1 WHERE f_charbig = 'was inserted';
89671 COMMIT WORK;
89672 ROLLBACK WORK;
89673         
89674 # check transactions-4 success:         1
89675 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
89676 SELECT f_int1, f_int1, '', '', 'was inserted'
89677 FROM t0_template source_tab
89678 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
89679         
89680 # check transactions-5 success:         1
89681 ROLLBACK WORK;
89682 Warnings:
89683 Warning 1196    Some non-transactional changed tables couldn't be rolled back
89684         
89685 # check transactions-6 success:         1
89686 # INFO: Storage engine used for t1 seems to be not transactional.
89687 COMMIT;
89688         
89689 # check transactions-7 success:         1
89690 DELETE FROM t1 WHERE f_charbig = 'was inserted';
89691 COMMIT WORK;
89692 SET @@session.sql_mode = 'traditional';
89693 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
89694 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
89695 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
89696 '', '', 'was inserted' FROM t0_template
89697 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
89698 ERROR 22012: Division by 0
89699 COMMIT;
89700         
89701 # check transactions-8 success:         1
89702 # INFO: Storage engine used for t1 seems to be unable to revert
89703 #       changes made by the failing statement.
89704 SET @@session.sql_mode = '';
89705 SET AUTOCOMMIT= 1;
89706 DELETE FROM t1 WHERE f_charbig = 'was inserted';
89707 COMMIT WORK;
89708 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
89709         
89710 # check special-1 success:      1
89711 UPDATE t1 SET f_charbig = '';
89712         
89713 # check special-2 success:      1
89714 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
89715 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
89716 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
89717 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89718 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89719 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89720 'just inserted' FROM t0_template
89721 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89722 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
89723 BEGIN
89724 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89725 f_charbig = 'updated by trigger'
89726       WHERE f_int1 = new.f_int1;
89727 END|
89728 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89729 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
89730 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89731         
89732 # check trigger-1 success:      1
89733 DROP TRIGGER trg_1;
89734 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89735 f_int2 = CAST(f_char1 AS SIGNED INT),
89736 f_charbig = 'just inserted'
89737    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89738 DELETE FROM t0_aux
89739 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89740 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89741 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89742 'just inserted' FROM t0_template
89743 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89744 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
89745 BEGIN
89746 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89747 f_charbig = 'updated by trigger'
89748       WHERE f_int1 = new.f_int1;
89749 END|
89750 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89751 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
89752 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89753         
89754 # check trigger-2 success:      1
89755 DROP TRIGGER trg_1;
89756 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89757 f_int2 = CAST(f_char1 AS SIGNED INT),
89758 f_charbig = 'just inserted'
89759    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89760 DELETE FROM t0_aux
89761 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89762 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89763 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89764 'just inserted' FROM t0_template
89765 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89766 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
89767 BEGIN
89768 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89769 f_charbig = 'updated by trigger'
89770       WHERE f_int1 = new.f_int1;
89771 END|
89772 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
89773 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
89774         
89775 # check trigger-3 success:      1
89776 DROP TRIGGER trg_1;
89777 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89778 f_int2 = CAST(f_char1 AS SIGNED INT),
89779 f_charbig = 'just inserted'
89780    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89781 DELETE FROM t0_aux
89782 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89783 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89784 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89785 'just inserted' FROM t0_template
89786 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89787 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
89788 BEGIN
89789 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89790 f_charbig = 'updated by trigger'
89791       WHERE f_int1 = - old.f_int1;
89792 END|
89793 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
89794 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
89795         
89796 # check trigger-4 success:      1
89797 DROP TRIGGER trg_1;
89798 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89799 f_int2 = CAST(f_char1 AS SIGNED INT),
89800 f_charbig = 'just inserted'
89801    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89802 DELETE FROM t0_aux
89803 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89804 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89805 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89806 'just inserted' FROM t0_template
89807 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89808 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
89809 BEGIN
89810 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89811 f_charbig = 'updated by trigger'
89812       WHERE f_int1 = new.f_int1;
89813 END|
89814 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
89815 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
89816         
89817 # check trigger-5 success:      1
89818 DROP TRIGGER trg_1;
89819 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89820 f_int2 = CAST(f_char1 AS SIGNED INT),
89821 f_charbig = 'just inserted'
89822    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89823 DELETE FROM t0_aux
89824 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89825 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89826 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89827 'just inserted' FROM t0_template
89828 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89829 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
89830 BEGIN
89831 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89832 f_charbig = 'updated by trigger'
89833       WHERE f_int1 = - old.f_int1;
89834 END|
89835 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
89836 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
89837         
89838 # check trigger-6 success:      1
89839 DROP TRIGGER trg_1;
89840 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89841 f_int2 = CAST(f_char1 AS SIGNED INT),
89842 f_charbig = 'just inserted'
89843    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89844 DELETE FROM t0_aux
89845 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89846 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89847 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89848 'just inserted' FROM t0_template
89849 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89850 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
89851 BEGIN
89852 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89853 f_charbig = 'updated by trigger'
89854       WHERE f_int1 = - old.f_int1;
89855 END|
89856 DELETE FROM t0_aux
89857 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
89858         
89859 # check trigger-7 success:      1
89860 DROP TRIGGER trg_1;
89861 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89862 f_int2 = CAST(f_char1 AS SIGNED INT),
89863 f_charbig = 'just inserted'
89864    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89865 DELETE FROM t0_aux
89866 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89867 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
89868 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
89869 'just inserted' FROM t0_template
89870 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89871 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
89872 BEGIN
89873 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
89874 f_charbig = 'updated by trigger'
89875       WHERE f_int1 = - old.f_int1;
89876 END|
89877 DELETE FROM t0_aux
89878 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
89879         
89880 # check trigger-8 success:      1
89881 DROP TRIGGER trg_1;
89882 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89883 f_int2 = CAST(f_char1 AS SIGNED INT),
89884 f_charbig = 'just inserted'
89885    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
89886 DELETE FROM t0_aux
89887 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89888 DELETE FROM t1
89889 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
89890 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
89891 BEGIN
89892 SET new.f_int1 = old.f_int1 + @max_row,
89893 new.f_int2 = old.f_int2 - @max_row,
89894 new.f_charbig = '####updated per update trigger####';
89895 END|
89896 UPDATE t1
89897 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
89898 f_charbig = '####updated per update statement itself####';
89899         
89900 # check trigger-9 success:      1
89901 DROP TRIGGER trg_2;
89902 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89903 f_int2 = CAST(f_char1 AS SIGNED INT),
89904 f_charbig = CONCAT('===',f_char1,'===');
89905 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
89906 BEGIN
89907 SET new.f_int1 = new.f_int1 + @max_row,
89908 new.f_int2 = new.f_int2 - @max_row,
89909 new.f_charbig = '####updated per update trigger####';
89910 END|
89911 UPDATE t1
89912 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
89913 f_charbig = '####updated per update statement itself####';
89914         
89915 # check trigger-10 success:     1
89916 DROP TRIGGER trg_2;
89917 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
89918 f_int2 = CAST(f_char1 AS SIGNED INT),
89919 f_charbig = CONCAT('===',f_char1,'===');
89920 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
89921 BEGIN
89922 SET new.f_int1 = @my_max1 + @counter,
89923 new.f_int2 = @my_min2 - @counter,
89924 new.f_charbig = '####updated per insert trigger####';
89925 SET @counter = @counter + 1;
89926 END|
89927 SET @counter = 1;
89928 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
89929 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
89930 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
89931 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
89932 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
89933 ORDER BY f_int1;
89934 DROP TRIGGER trg_3;
89935         
89936 # check trigger-11 success:     1
89937 DELETE FROM t1
89938 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
89939 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
89940 AND f_charbig = '####updated per insert trigger####';
89941 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
89942 BEGIN
89943 SET new.f_int1 = @my_max1 + @counter,
89944 new.f_int2 = @my_min2 - @counter,
89945 new.f_charbig = '####updated per insert trigger####';
89946 SET @counter = @counter + 1;
89947 END|
89948 SET @counter = 1;
89949 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
89950 INSERT INTO t1 (f_char1, f_char2, f_charbig)
89951 SELECT CAST(f_int1 AS CHAR),
89952 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
89953 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
89954 ORDER BY f_int1;
89955 DROP TRIGGER trg_3;
89956         
89957 # check trigger-12 success:     1
89958 DELETE FROM t1
89959 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
89960 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
89961 AND f_charbig = '####updated per insert trigger####';
89962 ANALYZE  TABLE t1;
89963 Table   Op      Msg_type        Msg_text
89964 test.t1 analyze status  OK
89965 CHECK    TABLE t1 EXTENDED;
89966 Table   Op      Msg_type        Msg_text
89967 test.t1 check   status  OK
89968 CHECKSUM TABLE t1 EXTENDED;
89969 Table   Checksum
89970 test.t1 <some_value>
89971 OPTIMIZE TABLE t1;
89972 Table   Op      Msg_type        Msg_text
89973 test.t1 optimize        status  OK
89974 # check layout success:    1
89975 REPAIR   TABLE t1 EXTENDED;
89976 Table   Op      Msg_type        Msg_text
89977 test.t1 repair  status  OK
89978 # check layout success:    1
89979 TRUNCATE t1;
89980         
89981 # check TRUNCATE success:       1
89982 # check layout success:    1
89983 # End usability test (inc/partition_check.inc)
89984 DROP TABLE t1;
89985 #------------------------------------------------------------------------
89986 #  6   ALTER ... REMOVE PARTITIONING
89987 #------------------------------------------------------------------------
89988 #  6.1 ALTER ... REMOVE PARTITIONING;
89989 DROP TABLE IF EXISTS t1;
89990 CREATE TABLE t1 (
89991 f_int1 INTEGER,
89992 f_int2 INTEGER,
89993 f_char1 CHAR(20),
89994 f_char2 CHAR(20),
89995 f_charbig VARCHAR(1000)
89998 PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
89999 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
90000 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
90001 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
90002 ALTER TABLE t1 REMOVE PARTITIONING;
90003 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
90004 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
90005 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
90006 # Start usability test (inc/partition_check.inc)
90007 create_command
90008 SHOW CREATE TABLE t1;
90009 Table   Create Table
90010 t1      CREATE TABLE `t1` (
90011   `f_int1` int(11) DEFAULT NULL,
90012   `f_int2` int(11) DEFAULT NULL,
90013   `f_char1` char(20) DEFAULT NULL,
90014   `f_char2` char(20) DEFAULT NULL,
90015   `f_charbig` varchar(1000) DEFAULT NULL
90016 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
90018 unified filelist
90019 t1.MYD
90020 t1.MYI
90021 t1.frm
90023 # check prerequisites-1 success:    1
90024 # check COUNT(*) success:    1
90025 # check MIN/MAX(f_int1) success:    1
90026 # check MIN/MAX(f_int2) success:    1
90027 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
90028 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
90029 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
90030 WHERE f_int1 IN (2,3);
90031 # check prerequisites-3 success:    1
90032 DELETE FROM t1 WHERE f_charbig = 'delete me';
90033 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
90034 # check read via f_int1 success: 1
90035 # check read via f_int2 success: 1
90036         
90037 # check multiple-1 success:     1
90038 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
90039         
90040 # check multiple-2 success:     1
90041 INSERT INTO t1 SELECT * FROM t0_template
90042 WHERE MOD(f_int1,3) = 0;
90043         
90044 # check multiple-3 success:     1
90045 UPDATE t1 SET f_int1 = f_int1 + @max_row
90046 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
90047 AND @max_row_div2 + @max_row_div4;
90048         
90049 # check multiple-4 success:     1
90050 DELETE FROM t1
90051 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
90052 AND @max_row_div2 + @max_row_div4 + @max_row;
90053         
90054 # check multiple-5 success:     1
90055 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
90056 INSERT INTO t1
90057 SET f_int1 = @cur_value , f_int2 = @cur_value,
90058 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
90059 f_charbig = '#SINGLE#';
90060         
90061 # check single-1 success:       1
90062 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
90063 INSERT INTO t1
90064 SET f_int1 = @cur_value , f_int2 = @cur_value,
90065 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
90066 f_charbig = '#SINGLE#';
90067         
90068 # check single-2 success:       1
90069 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
90070 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
90071 UPDATE t1 SET f_int1 = @cur_value2
90072 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
90073         
90074 # check single-3 success:       1
90075 SET @cur_value1= -1;
90076 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
90077 UPDATE t1 SET f_int1 = @cur_value1
90078 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
90079         
90080 # check single-4 success:       1
90081 SELECT MAX(f_int1) INTO @cur_value FROM t1;
90082 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
90083         
90084 # check single-5 success:       1
90085 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
90086         
90087 # check single-6 success:       1
90088 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
90089         
90090 # check single-7 success:       1
90091 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
90092 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
90093 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
90094 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
90095 f_charbig = '#NULL#';
90096 INSERT INTO t1
90097 SET f_int1 = NULL , f_int2 = -@max_row,
90098 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
90099 f_charbig = '#NULL#';
90100 # check null success:    1
90101         
90102 # check null-1 success:         1
90103 UPDATE t1 SET f_int1 = -@max_row
90104 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
90105 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
90106         
90107 # check null-2 success:         1
90108 UPDATE t1 SET f_int1 = NULL
90109 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
90110 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
90111         
90112 # check null-3 success:         1
90113 DELETE FROM t1
90114 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
90115 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
90116         
90117 # check null-4 success:         1
90118 DELETE FROM t1
90119 WHERE f_int1 = 0 AND f_int2 = 0
90120 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
90121 AND f_charbig = '#NULL#';
90122 SET AUTOCOMMIT= 0;
90123 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
90124 SELECT f_int1, f_int1, '', '', 'was inserted'
90125 FROM t0_template source_tab
90126 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
90127         
90128 # check transactions-1 success:         1
90129 COMMIT WORK;
90130         
90131 # check transactions-2 success:         1
90132 ROLLBACK WORK;
90133         
90134 # check transactions-3 success:         1
90135 DELETE FROM t1 WHERE f_charbig = 'was inserted';
90136 COMMIT WORK;
90137 ROLLBACK WORK;
90138         
90139 # check transactions-4 success:         1
90140 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
90141 SELECT f_int1, f_int1, '', '', 'was inserted'
90142 FROM t0_template source_tab
90143 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
90144         
90145 # check transactions-5 success:         1
90146 ROLLBACK WORK;
90147 Warnings:
90148 Warning 1196    Some non-transactional changed tables couldn't be rolled back
90149         
90150 # check transactions-6 success:         1
90151 # INFO: Storage engine used for t1 seems to be not transactional.
90152 COMMIT;
90153         
90154 # check transactions-7 success:         1
90155 DELETE FROM t1 WHERE f_charbig = 'was inserted';
90156 COMMIT WORK;
90157 SET @@session.sql_mode = 'traditional';
90158 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
90159 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
90160 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
90161 '', '', 'was inserted' FROM t0_template
90162 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
90163 ERROR 22012: Division by 0
90164 COMMIT;
90165         
90166 # check transactions-8 success:         1
90167 # INFO: Storage engine used for t1 seems to be unable to revert
90168 #       changes made by the failing statement.
90169 SET @@session.sql_mode = '';
90170 SET AUTOCOMMIT= 1;
90171 DELETE FROM t1 WHERE f_charbig = 'was inserted';
90172 COMMIT WORK;
90173 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
90174         
90175 # check special-1 success:      1
90176 UPDATE t1 SET f_charbig = '';
90177         
90178 # check special-2 success:      1
90179 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
90180 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
90181 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
90182 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90183 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90184 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90185 'just inserted' FROM t0_template
90186 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90187 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
90188 BEGIN
90189 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90190 f_charbig = 'updated by trigger'
90191       WHERE f_int1 = new.f_int1;
90192 END|
90193 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90194 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
90195 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90196         
90197 # check trigger-1 success:      1
90198 DROP TRIGGER trg_1;
90199 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90200 f_int2 = CAST(f_char1 AS SIGNED INT),
90201 f_charbig = 'just inserted'
90202    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90203 DELETE FROM t0_aux
90204 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90205 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90206 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90207 'just inserted' FROM t0_template
90208 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90209 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
90210 BEGIN
90211 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90212 f_charbig = 'updated by trigger'
90213       WHERE f_int1 = new.f_int1;
90214 END|
90215 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90216 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
90217 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90218         
90219 # check trigger-2 success:      1
90220 DROP TRIGGER trg_1;
90221 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90222 f_int2 = CAST(f_char1 AS SIGNED INT),
90223 f_charbig = 'just inserted'
90224    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90225 DELETE FROM t0_aux
90226 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90227 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90228 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90229 'just inserted' FROM t0_template
90230 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90231 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
90232 BEGIN
90233 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90234 f_charbig = 'updated by trigger'
90235       WHERE f_int1 = new.f_int1;
90236 END|
90237 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
90238 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
90239         
90240 # check trigger-3 success:      1
90241 DROP TRIGGER trg_1;
90242 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90243 f_int2 = CAST(f_char1 AS SIGNED INT),
90244 f_charbig = 'just inserted'
90245    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90246 DELETE FROM t0_aux
90247 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90248 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90249 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90250 'just inserted' FROM t0_template
90251 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90252 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
90253 BEGIN
90254 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90255 f_charbig = 'updated by trigger'
90256       WHERE f_int1 = - old.f_int1;
90257 END|
90258 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
90259 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
90260         
90261 # check trigger-4 success:      1
90262 DROP TRIGGER trg_1;
90263 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90264 f_int2 = CAST(f_char1 AS SIGNED INT),
90265 f_charbig = 'just inserted'
90266    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90267 DELETE FROM t0_aux
90268 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90269 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90270 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90271 'just inserted' FROM t0_template
90272 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90273 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
90274 BEGIN
90275 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90276 f_charbig = 'updated by trigger'
90277       WHERE f_int1 = new.f_int1;
90278 END|
90279 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
90280 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
90281         
90282 # check trigger-5 success:      1
90283 DROP TRIGGER trg_1;
90284 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90285 f_int2 = CAST(f_char1 AS SIGNED INT),
90286 f_charbig = 'just inserted'
90287    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90288 DELETE FROM t0_aux
90289 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90290 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90291 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90292 'just inserted' FROM t0_template
90293 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90294 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
90295 BEGIN
90296 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90297 f_charbig = 'updated by trigger'
90298       WHERE f_int1 = - old.f_int1;
90299 END|
90300 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
90301 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
90302         
90303 # check trigger-6 success:      1
90304 DROP TRIGGER trg_1;
90305 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90306 f_int2 = CAST(f_char1 AS SIGNED INT),
90307 f_charbig = 'just inserted'
90308    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90309 DELETE FROM t0_aux
90310 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90311 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90312 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90313 'just inserted' FROM t0_template
90314 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90315 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
90316 BEGIN
90317 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90318 f_charbig = 'updated by trigger'
90319       WHERE f_int1 = - old.f_int1;
90320 END|
90321 DELETE FROM t0_aux
90322 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
90323         
90324 # check trigger-7 success:      1
90325 DROP TRIGGER trg_1;
90326 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90327 f_int2 = CAST(f_char1 AS SIGNED INT),
90328 f_charbig = 'just inserted'
90329    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90330 DELETE FROM t0_aux
90331 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90332 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90333 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90334 'just inserted' FROM t0_template
90335 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90336 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
90337 BEGIN
90338 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90339 f_charbig = 'updated by trigger'
90340       WHERE f_int1 = - old.f_int1;
90341 END|
90342 DELETE FROM t0_aux
90343 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
90344         
90345 # check trigger-8 success:      1
90346 DROP TRIGGER trg_1;
90347 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90348 f_int2 = CAST(f_char1 AS SIGNED INT),
90349 f_charbig = 'just inserted'
90350    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90351 DELETE FROM t0_aux
90352 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90353 DELETE FROM t1
90354 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90355 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
90356 BEGIN
90357 SET new.f_int1 = old.f_int1 + @max_row,
90358 new.f_int2 = old.f_int2 - @max_row,
90359 new.f_charbig = '####updated per update trigger####';
90360 END|
90361 UPDATE t1
90362 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
90363 f_charbig = '####updated per update statement itself####';
90364         
90365 # check trigger-9 success:      1
90366 DROP TRIGGER trg_2;
90367 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90368 f_int2 = CAST(f_char1 AS SIGNED INT),
90369 f_charbig = CONCAT('===',f_char1,'===');
90370 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
90371 BEGIN
90372 SET new.f_int1 = new.f_int1 + @max_row,
90373 new.f_int2 = new.f_int2 - @max_row,
90374 new.f_charbig = '####updated per update trigger####';
90375 END|
90376 UPDATE t1
90377 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
90378 f_charbig = '####updated per update statement itself####';
90379         
90380 # check trigger-10 success:     1
90381 DROP TRIGGER trg_2;
90382 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90383 f_int2 = CAST(f_char1 AS SIGNED INT),
90384 f_charbig = CONCAT('===',f_char1,'===');
90385 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
90386 BEGIN
90387 SET new.f_int1 = @my_max1 + @counter,
90388 new.f_int2 = @my_min2 - @counter,
90389 new.f_charbig = '####updated per insert trigger####';
90390 SET @counter = @counter + 1;
90391 END|
90392 SET @counter = 1;
90393 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
90394 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
90395 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
90396 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
90397 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
90398 ORDER BY f_int1;
90399 DROP TRIGGER trg_3;
90400         
90401 # check trigger-11 success:     1
90402 DELETE FROM t1
90403 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
90404 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
90405 AND f_charbig = '####updated per insert trigger####';
90406 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
90407 BEGIN
90408 SET new.f_int1 = @my_max1 + @counter,
90409 new.f_int2 = @my_min2 - @counter,
90410 new.f_charbig = '####updated per insert trigger####';
90411 SET @counter = @counter + 1;
90412 END|
90413 SET @counter = 1;
90414 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
90415 INSERT INTO t1 (f_char1, f_char2, f_charbig)
90416 SELECT CAST(f_int1 AS CHAR),
90417 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
90418 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
90419 ORDER BY f_int1;
90420 DROP TRIGGER trg_3;
90421         
90422 # check trigger-12 success:     1
90423 DELETE FROM t1
90424 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
90425 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
90426 AND f_charbig = '####updated per insert trigger####';
90427 ANALYZE  TABLE t1;
90428 Table   Op      Msg_type        Msg_text
90429 test.t1 analyze status  OK
90430 CHECK    TABLE t1 EXTENDED;
90431 Table   Op      Msg_type        Msg_text
90432 test.t1 check   status  OK
90433 CHECKSUM TABLE t1 EXTENDED;
90434 Table   Checksum
90435 test.t1 <some_value>
90436 OPTIMIZE TABLE t1;
90437 Table   Op      Msg_type        Msg_text
90438 test.t1 optimize        status  OK
90439 # check layout success:    1
90440 REPAIR   TABLE t1 EXTENDED;
90441 Table   Op      Msg_type        Msg_text
90442 test.t1 repair  status  OK
90443 # check layout success:    1
90444 TRUNCATE t1;
90445         
90446 # check TRUNCATE success:       1
90447 # check layout success:    1
90448 # End usability test (inc/partition_check.inc)
90449 DROP TABLE t1;
90450 CREATE TABLE t1 (
90451 f_int1 INTEGER,
90452 f_int2 INTEGER,
90453 f_char1 CHAR(20),
90454 f_char2 CHAR(20),
90455 f_charbig VARCHAR(1000)
90458 PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
90459 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
90460 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
90461 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
90462 ALTER TABLE t1 REMOVE PARTITIONING;
90463 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
90464 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
90465 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
90466 # Start usability test (inc/partition_check.inc)
90467 create_command
90468 SHOW CREATE TABLE t1;
90469 Table   Create Table
90470 t1      CREATE TABLE `t1` (
90471   `f_int1` int(11) DEFAULT NULL,
90472   `f_int2` int(11) DEFAULT NULL,
90473   `f_char1` char(20) DEFAULT NULL,
90474   `f_char2` char(20) DEFAULT NULL,
90475   `f_charbig` varchar(1000) DEFAULT NULL
90476 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
90478 unified filelist
90479 t1.MYD
90480 t1.MYI
90481 t1.frm
90483 # check prerequisites-1 success:    1
90484 # check COUNT(*) success:    1
90485 # check MIN/MAX(f_int1) success:    1
90486 # check MIN/MAX(f_int2) success:    1
90487 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
90488 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
90489 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
90490 WHERE f_int1 IN (2,3);
90491 # check prerequisites-3 success:    1
90492 DELETE FROM t1 WHERE f_charbig = 'delete me';
90493 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
90494 # check read via f_int1 success: 1
90495 # check read via f_int2 success: 1
90496         
90497 # check multiple-1 success:     1
90498 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
90499         
90500 # check multiple-2 success:     1
90501 INSERT INTO t1 SELECT * FROM t0_template
90502 WHERE MOD(f_int1,3) = 0;
90503         
90504 # check multiple-3 success:     1
90505 UPDATE t1 SET f_int1 = f_int1 + @max_row
90506 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
90507 AND @max_row_div2 + @max_row_div4;
90508         
90509 # check multiple-4 success:     1
90510 DELETE FROM t1
90511 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
90512 AND @max_row_div2 + @max_row_div4 + @max_row;
90513         
90514 # check multiple-5 success:     1
90515 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
90516 INSERT INTO t1
90517 SET f_int1 = @cur_value , f_int2 = @cur_value,
90518 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
90519 f_charbig = '#SINGLE#';
90520         
90521 # check single-1 success:       1
90522 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
90523 INSERT INTO t1
90524 SET f_int1 = @cur_value , f_int2 = @cur_value,
90525 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
90526 f_charbig = '#SINGLE#';
90527         
90528 # check single-2 success:       1
90529 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
90530 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
90531 UPDATE t1 SET f_int1 = @cur_value2
90532 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
90533         
90534 # check single-3 success:       1
90535 SET @cur_value1= -1;
90536 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
90537 UPDATE t1 SET f_int1 = @cur_value1
90538 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
90539         
90540 # check single-4 success:       1
90541 SELECT MAX(f_int1) INTO @cur_value FROM t1;
90542 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
90543         
90544 # check single-5 success:       1
90545 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
90546         
90547 # check single-6 success:       1
90548 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
90549         
90550 # check single-7 success:       1
90551 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
90552 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
90553 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
90554 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
90555 f_charbig = '#NULL#';
90556 INSERT INTO t1
90557 SET f_int1 = NULL , f_int2 = -@max_row,
90558 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
90559 f_charbig = '#NULL#';
90560 # check null success:    1
90561         
90562 # check null-1 success:         1
90563 UPDATE t1 SET f_int1 = -@max_row
90564 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
90565 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
90566         
90567 # check null-2 success:         1
90568 UPDATE t1 SET f_int1 = NULL
90569 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
90570 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
90571         
90572 # check null-3 success:         1
90573 DELETE FROM t1
90574 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
90575 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
90576         
90577 # check null-4 success:         1
90578 DELETE FROM t1
90579 WHERE f_int1 = 0 AND f_int2 = 0
90580 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
90581 AND f_charbig = '#NULL#';
90582 SET AUTOCOMMIT= 0;
90583 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
90584 SELECT f_int1, f_int1, '', '', 'was inserted'
90585 FROM t0_template source_tab
90586 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
90587         
90588 # check transactions-1 success:         1
90589 COMMIT WORK;
90590         
90591 # check transactions-2 success:         1
90592 ROLLBACK WORK;
90593         
90594 # check transactions-3 success:         1
90595 DELETE FROM t1 WHERE f_charbig = 'was inserted';
90596 COMMIT WORK;
90597 ROLLBACK WORK;
90598         
90599 # check transactions-4 success:         1
90600 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
90601 SELECT f_int1, f_int1, '', '', 'was inserted'
90602 FROM t0_template source_tab
90603 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
90604         
90605 # check transactions-5 success:         1
90606 ROLLBACK WORK;
90607 Warnings:
90608 Warning 1196    Some non-transactional changed tables couldn't be rolled back
90609         
90610 # check transactions-6 success:         1
90611 # INFO: Storage engine used for t1 seems to be not transactional.
90612 COMMIT;
90613         
90614 # check transactions-7 success:         1
90615 DELETE FROM t1 WHERE f_charbig = 'was inserted';
90616 COMMIT WORK;
90617 SET @@session.sql_mode = 'traditional';
90618 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
90619 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
90620 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
90621 '', '', 'was inserted' FROM t0_template
90622 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
90623 ERROR 22012: Division by 0
90624 COMMIT;
90625         
90626 # check transactions-8 success:         1
90627 # INFO: Storage engine used for t1 seems to be unable to revert
90628 #       changes made by the failing statement.
90629 SET @@session.sql_mode = '';
90630 SET AUTOCOMMIT= 1;
90631 DELETE FROM t1 WHERE f_charbig = 'was inserted';
90632 COMMIT WORK;
90633 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
90634         
90635 # check special-1 success:      1
90636 UPDATE t1 SET f_charbig = '';
90637         
90638 # check special-2 success:      1
90639 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
90640 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
90641 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
90642 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90643 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90644 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90645 'just inserted' FROM t0_template
90646 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90647 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
90648 BEGIN
90649 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90650 f_charbig = 'updated by trigger'
90651       WHERE f_int1 = new.f_int1;
90652 END|
90653 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90654 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
90655 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90656         
90657 # check trigger-1 success:      1
90658 DROP TRIGGER trg_1;
90659 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90660 f_int2 = CAST(f_char1 AS SIGNED INT),
90661 f_charbig = 'just inserted'
90662    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90663 DELETE FROM t0_aux
90664 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90665 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90666 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90667 'just inserted' FROM t0_template
90668 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90669 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
90670 BEGIN
90671 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90672 f_charbig = 'updated by trigger'
90673       WHERE f_int1 = new.f_int1;
90674 END|
90675 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90676 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
90677 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90678         
90679 # check trigger-2 success:      1
90680 DROP TRIGGER trg_1;
90681 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90682 f_int2 = CAST(f_char1 AS SIGNED INT),
90683 f_charbig = 'just inserted'
90684    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90685 DELETE FROM t0_aux
90686 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90687 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90688 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90689 'just inserted' FROM t0_template
90690 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90691 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
90692 BEGIN
90693 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90694 f_charbig = 'updated by trigger'
90695       WHERE f_int1 = new.f_int1;
90696 END|
90697 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
90698 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
90699         
90700 # check trigger-3 success:      1
90701 DROP TRIGGER trg_1;
90702 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90703 f_int2 = CAST(f_char1 AS SIGNED INT),
90704 f_charbig = 'just inserted'
90705    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90706 DELETE FROM t0_aux
90707 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90708 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90709 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90710 'just inserted' FROM t0_template
90711 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90712 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
90713 BEGIN
90714 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90715 f_charbig = 'updated by trigger'
90716       WHERE f_int1 = - old.f_int1;
90717 END|
90718 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
90719 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
90720         
90721 # check trigger-4 success:      1
90722 DROP TRIGGER trg_1;
90723 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90724 f_int2 = CAST(f_char1 AS SIGNED INT),
90725 f_charbig = 'just inserted'
90726    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90727 DELETE FROM t0_aux
90728 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90729 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90730 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90731 'just inserted' FROM t0_template
90732 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90733 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
90734 BEGIN
90735 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90736 f_charbig = 'updated by trigger'
90737       WHERE f_int1 = new.f_int1;
90738 END|
90739 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
90740 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
90741         
90742 # check trigger-5 success:      1
90743 DROP TRIGGER trg_1;
90744 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90745 f_int2 = CAST(f_char1 AS SIGNED INT),
90746 f_charbig = 'just inserted'
90747    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90748 DELETE FROM t0_aux
90749 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90750 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90751 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90752 'just inserted' FROM t0_template
90753 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90754 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
90755 BEGIN
90756 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90757 f_charbig = 'updated by trigger'
90758       WHERE f_int1 = - old.f_int1;
90759 END|
90760 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
90761 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
90762         
90763 # check trigger-6 success:      1
90764 DROP TRIGGER trg_1;
90765 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90766 f_int2 = CAST(f_char1 AS SIGNED INT),
90767 f_charbig = 'just inserted'
90768    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90769 DELETE FROM t0_aux
90770 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90771 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90772 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90773 'just inserted' FROM t0_template
90774 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90775 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
90776 BEGIN
90777 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90778 f_charbig = 'updated by trigger'
90779       WHERE f_int1 = - old.f_int1;
90780 END|
90781 DELETE FROM t0_aux
90782 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
90783         
90784 # check trigger-7 success:      1
90785 DROP TRIGGER trg_1;
90786 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90787 f_int2 = CAST(f_char1 AS SIGNED INT),
90788 f_charbig = 'just inserted'
90789    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90790 DELETE FROM t0_aux
90791 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90792 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
90793 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
90794 'just inserted' FROM t0_template
90795 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90796 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
90797 BEGIN
90798 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
90799 f_charbig = 'updated by trigger'
90800       WHERE f_int1 = - old.f_int1;
90801 END|
90802 DELETE FROM t0_aux
90803 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
90804         
90805 # check trigger-8 success:      1
90806 DROP TRIGGER trg_1;
90807 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90808 f_int2 = CAST(f_char1 AS SIGNED INT),
90809 f_charbig = 'just inserted'
90810    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
90811 DELETE FROM t0_aux
90812 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90813 DELETE FROM t1
90814 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
90815 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
90816 BEGIN
90817 SET new.f_int1 = old.f_int1 + @max_row,
90818 new.f_int2 = old.f_int2 - @max_row,
90819 new.f_charbig = '####updated per update trigger####';
90820 END|
90821 UPDATE t1
90822 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
90823 f_charbig = '####updated per update statement itself####';
90824         
90825 # check trigger-9 success:      1
90826 DROP TRIGGER trg_2;
90827 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90828 f_int2 = CAST(f_char1 AS SIGNED INT),
90829 f_charbig = CONCAT('===',f_char1,'===');
90830 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
90831 BEGIN
90832 SET new.f_int1 = new.f_int1 + @max_row,
90833 new.f_int2 = new.f_int2 - @max_row,
90834 new.f_charbig = '####updated per update trigger####';
90835 END|
90836 UPDATE t1
90837 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
90838 f_charbig = '####updated per update statement itself####';
90839         
90840 # check trigger-10 success:     1
90841 DROP TRIGGER trg_2;
90842 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
90843 f_int2 = CAST(f_char1 AS SIGNED INT),
90844 f_charbig = CONCAT('===',f_char1,'===');
90845 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
90846 BEGIN
90847 SET new.f_int1 = @my_max1 + @counter,
90848 new.f_int2 = @my_min2 - @counter,
90849 new.f_charbig = '####updated per insert trigger####';
90850 SET @counter = @counter + 1;
90851 END|
90852 SET @counter = 1;
90853 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
90854 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
90855 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
90856 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
90857 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
90858 ORDER BY f_int1;
90859 DROP TRIGGER trg_3;
90860         
90861 # check trigger-11 success:     1
90862 DELETE FROM t1
90863 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
90864 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
90865 AND f_charbig = '####updated per insert trigger####';
90866 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
90867 BEGIN
90868 SET new.f_int1 = @my_max1 + @counter,
90869 new.f_int2 = @my_min2 - @counter,
90870 new.f_charbig = '####updated per insert trigger####';
90871 SET @counter = @counter + 1;
90872 END|
90873 SET @counter = 1;
90874 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
90875 INSERT INTO t1 (f_char1, f_char2, f_charbig)
90876 SELECT CAST(f_int1 AS CHAR),
90877 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
90878 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
90879 ORDER BY f_int1;
90880 DROP TRIGGER trg_3;
90881         
90882 # check trigger-12 success:     1
90883 DELETE FROM t1
90884 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
90885 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
90886 AND f_charbig = '####updated per insert trigger####';
90887 ANALYZE  TABLE t1;
90888 Table   Op      Msg_type        Msg_text
90889 test.t1 analyze status  OK
90890 CHECK    TABLE t1 EXTENDED;
90891 Table   Op      Msg_type        Msg_text
90892 test.t1 check   status  OK
90893 CHECKSUM TABLE t1 EXTENDED;
90894 Table   Checksum
90895 test.t1 <some_value>
90896 OPTIMIZE TABLE t1;
90897 Table   Op      Msg_type        Msg_text
90898 test.t1 optimize        status  OK
90899 # check layout success:    1
90900 REPAIR   TABLE t1 EXTENDED;
90901 Table   Op      Msg_type        Msg_text
90902 test.t1 repair  status  OK
90903 # check layout success:    1
90904 TRUNCATE t1;
90905         
90906 # check TRUNCATE success:       1
90907 # check layout success:    1
90908 # End usability test (inc/partition_check.inc)
90909 DROP TABLE t1;
90910 CREATE TABLE t1 (
90911 f_int1 INTEGER,
90912 f_int2 INTEGER,
90913 f_char1 CHAR(20),
90914 f_char2 CHAR(20),
90915 f_charbig VARCHAR(1000)
90918 PARTITION BY LIST(MOD(f_int1,4))
90919 (PARTITION part_3 VALUES IN (-3),
90920 PARTITION part_2 VALUES IN (-2),
90921 PARTITION part_1 VALUES IN (-1),
90922 PARTITION part_N VALUES IN (NULL),
90923 PARTITION part0 VALUES IN (0),
90924 PARTITION part1 VALUES IN (1),
90925 PARTITION part2 VALUES IN (2),
90926 PARTITION part3 VALUES IN (3));
90927 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
90928 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
90929 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
90930 ALTER TABLE t1 REMOVE PARTITIONING;
90931 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
90932 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
90933 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
90934 # Start usability test (inc/partition_check.inc)
90935 create_command
90936 SHOW CREATE TABLE t1;
90937 Table   Create Table
90938 t1      CREATE TABLE `t1` (
90939   `f_int1` int(11) DEFAULT NULL,
90940   `f_int2` int(11) DEFAULT NULL,
90941   `f_char1` char(20) DEFAULT NULL,
90942   `f_char2` char(20) DEFAULT NULL,
90943   `f_charbig` varchar(1000) DEFAULT NULL
90944 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
90946 unified filelist
90947 t1.MYD
90948 t1.MYI
90949 t1.frm
90951 # check prerequisites-1 success:    1
90952 # check COUNT(*) success:    1
90953 # check MIN/MAX(f_int1) success:    1
90954 # check MIN/MAX(f_int2) success:    1
90955 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
90956 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
90957 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
90958 WHERE f_int1 IN (2,3);
90959 # check prerequisites-3 success:    1
90960 DELETE FROM t1 WHERE f_charbig = 'delete me';
90961 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
90962 # check read via f_int1 success: 1
90963 # check read via f_int2 success: 1
90964         
90965 # check multiple-1 success:     1
90966 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
90967         
90968 # check multiple-2 success:     1
90969 INSERT INTO t1 SELECT * FROM t0_template
90970 WHERE MOD(f_int1,3) = 0;
90971         
90972 # check multiple-3 success:     1
90973 UPDATE t1 SET f_int1 = f_int1 + @max_row
90974 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
90975 AND @max_row_div2 + @max_row_div4;
90976         
90977 # check multiple-4 success:     1
90978 DELETE FROM t1
90979 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
90980 AND @max_row_div2 + @max_row_div4 + @max_row;
90981         
90982 # check multiple-5 success:     1
90983 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
90984 INSERT INTO t1
90985 SET f_int1 = @cur_value , f_int2 = @cur_value,
90986 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
90987 f_charbig = '#SINGLE#';
90988         
90989 # check single-1 success:       1
90990 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
90991 INSERT INTO t1
90992 SET f_int1 = @cur_value , f_int2 = @cur_value,
90993 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
90994 f_charbig = '#SINGLE#';
90995         
90996 # check single-2 success:       1
90997 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
90998 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
90999 UPDATE t1 SET f_int1 = @cur_value2
91000 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
91001         
91002 # check single-3 success:       1
91003 SET @cur_value1= -1;
91004 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
91005 UPDATE t1 SET f_int1 = @cur_value1
91006 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
91007         
91008 # check single-4 success:       1
91009 SELECT MAX(f_int1) INTO @cur_value FROM t1;
91010 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
91011         
91012 # check single-5 success:       1
91013 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
91014         
91015 # check single-6 success:       1
91016 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
91017         
91018 # check single-7 success:       1
91019 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
91020 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
91021 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
91022 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
91023 f_charbig = '#NULL#';
91024 INSERT INTO t1
91025 SET f_int1 = NULL , f_int2 = -@max_row,
91026 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
91027 f_charbig = '#NULL#';
91028 # check null success:    1
91029         
91030 # check null-1 success:         1
91031 UPDATE t1 SET f_int1 = -@max_row
91032 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
91033 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
91034         
91035 # check null-2 success:         1
91036 UPDATE t1 SET f_int1 = NULL
91037 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
91038 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
91039         
91040 # check null-3 success:         1
91041 DELETE FROM t1
91042 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
91043 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
91044         
91045 # check null-4 success:         1
91046 DELETE FROM t1
91047 WHERE f_int1 = 0 AND f_int2 = 0
91048 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
91049 AND f_charbig = '#NULL#';
91050 SET AUTOCOMMIT= 0;
91051 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
91052 SELECT f_int1, f_int1, '', '', 'was inserted'
91053 FROM t0_template source_tab
91054 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
91055         
91056 # check transactions-1 success:         1
91057 COMMIT WORK;
91058         
91059 # check transactions-2 success:         1
91060 ROLLBACK WORK;
91061         
91062 # check transactions-3 success:         1
91063 DELETE FROM t1 WHERE f_charbig = 'was inserted';
91064 COMMIT WORK;
91065 ROLLBACK WORK;
91066         
91067 # check transactions-4 success:         1
91068 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
91069 SELECT f_int1, f_int1, '', '', 'was inserted'
91070 FROM t0_template source_tab
91071 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
91072         
91073 # check transactions-5 success:         1
91074 ROLLBACK WORK;
91075 Warnings:
91076 Warning 1196    Some non-transactional changed tables couldn't be rolled back
91077         
91078 # check transactions-6 success:         1
91079 # INFO: Storage engine used for t1 seems to be not transactional.
91080 COMMIT;
91081         
91082 # check transactions-7 success:         1
91083 DELETE FROM t1 WHERE f_charbig = 'was inserted';
91084 COMMIT WORK;
91085 SET @@session.sql_mode = 'traditional';
91086 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
91087 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
91088 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
91089 '', '', 'was inserted' FROM t0_template
91090 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
91091 ERROR 22012: Division by 0
91092 COMMIT;
91093         
91094 # check transactions-8 success:         1
91095 # INFO: Storage engine used for t1 seems to be unable to revert
91096 #       changes made by the failing statement.
91097 SET @@session.sql_mode = '';
91098 SET AUTOCOMMIT= 1;
91099 DELETE FROM t1 WHERE f_charbig = 'was inserted';
91100 COMMIT WORK;
91101 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
91102         
91103 # check special-1 success:      1
91104 UPDATE t1 SET f_charbig = '';
91105         
91106 # check special-2 success:      1
91107 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
91108 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
91109 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
91110 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91111 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91112 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91113 'just inserted' FROM t0_template
91114 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91115 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
91116 BEGIN
91117 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91118 f_charbig = 'updated by trigger'
91119       WHERE f_int1 = new.f_int1;
91120 END|
91121 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91122 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
91123 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91124         
91125 # check trigger-1 success:      1
91126 DROP TRIGGER trg_1;
91127 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91128 f_int2 = CAST(f_char1 AS SIGNED INT),
91129 f_charbig = 'just inserted'
91130    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91131 DELETE FROM t0_aux
91132 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91133 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91134 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91135 'just inserted' FROM t0_template
91136 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91137 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
91138 BEGIN
91139 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91140 f_charbig = 'updated by trigger'
91141       WHERE f_int1 = new.f_int1;
91142 END|
91143 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91144 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
91145 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91146         
91147 # check trigger-2 success:      1
91148 DROP TRIGGER trg_1;
91149 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91150 f_int2 = CAST(f_char1 AS SIGNED INT),
91151 f_charbig = 'just inserted'
91152    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91153 DELETE FROM t0_aux
91154 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91155 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91156 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91157 'just inserted' FROM t0_template
91158 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91159 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
91160 BEGIN
91161 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91162 f_charbig = 'updated by trigger'
91163       WHERE f_int1 = new.f_int1;
91164 END|
91165 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
91166 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
91167         
91168 # check trigger-3 success:      1
91169 DROP TRIGGER trg_1;
91170 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91171 f_int2 = CAST(f_char1 AS SIGNED INT),
91172 f_charbig = 'just inserted'
91173    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91174 DELETE FROM t0_aux
91175 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91176 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91177 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91178 'just inserted' FROM t0_template
91179 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91180 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
91181 BEGIN
91182 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91183 f_charbig = 'updated by trigger'
91184       WHERE f_int1 = - old.f_int1;
91185 END|
91186 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
91187 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
91188         
91189 # check trigger-4 success:      1
91190 DROP TRIGGER trg_1;
91191 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91192 f_int2 = CAST(f_char1 AS SIGNED INT),
91193 f_charbig = 'just inserted'
91194    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91195 DELETE FROM t0_aux
91196 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91197 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91198 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91199 'just inserted' FROM t0_template
91200 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91201 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
91202 BEGIN
91203 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91204 f_charbig = 'updated by trigger'
91205       WHERE f_int1 = new.f_int1;
91206 END|
91207 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
91208 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
91209         
91210 # check trigger-5 success:      1
91211 DROP TRIGGER trg_1;
91212 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91213 f_int2 = CAST(f_char1 AS SIGNED INT),
91214 f_charbig = 'just inserted'
91215    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91216 DELETE FROM t0_aux
91217 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91218 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91219 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91220 'just inserted' FROM t0_template
91221 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91222 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
91223 BEGIN
91224 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91225 f_charbig = 'updated by trigger'
91226       WHERE f_int1 = - old.f_int1;
91227 END|
91228 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
91229 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
91230         
91231 # check trigger-6 success:      1
91232 DROP TRIGGER trg_1;
91233 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91234 f_int2 = CAST(f_char1 AS SIGNED INT),
91235 f_charbig = 'just inserted'
91236    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91237 DELETE FROM t0_aux
91238 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91239 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91240 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91241 'just inserted' FROM t0_template
91242 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91243 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
91244 BEGIN
91245 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91246 f_charbig = 'updated by trigger'
91247       WHERE f_int1 = - old.f_int1;
91248 END|
91249 DELETE FROM t0_aux
91250 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
91251         
91252 # check trigger-7 success:      1
91253 DROP TRIGGER trg_1;
91254 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91255 f_int2 = CAST(f_char1 AS SIGNED INT),
91256 f_charbig = 'just inserted'
91257    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91258 DELETE FROM t0_aux
91259 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91260 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91261 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91262 'just inserted' FROM t0_template
91263 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91264 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
91265 BEGIN
91266 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91267 f_charbig = 'updated by trigger'
91268       WHERE f_int1 = - old.f_int1;
91269 END|
91270 DELETE FROM t0_aux
91271 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
91272         
91273 # check trigger-8 success:      1
91274 DROP TRIGGER trg_1;
91275 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91276 f_int2 = CAST(f_char1 AS SIGNED INT),
91277 f_charbig = 'just inserted'
91278    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91279 DELETE FROM t0_aux
91280 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91281 DELETE FROM t1
91282 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91283 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
91284 BEGIN
91285 SET new.f_int1 = old.f_int1 + @max_row,
91286 new.f_int2 = old.f_int2 - @max_row,
91287 new.f_charbig = '####updated per update trigger####';
91288 END|
91289 UPDATE t1
91290 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
91291 f_charbig = '####updated per update statement itself####';
91292         
91293 # check trigger-9 success:      1
91294 DROP TRIGGER trg_2;
91295 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91296 f_int2 = CAST(f_char1 AS SIGNED INT),
91297 f_charbig = CONCAT('===',f_char1,'===');
91298 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
91299 BEGIN
91300 SET new.f_int1 = new.f_int1 + @max_row,
91301 new.f_int2 = new.f_int2 - @max_row,
91302 new.f_charbig = '####updated per update trigger####';
91303 END|
91304 UPDATE t1
91305 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
91306 f_charbig = '####updated per update statement itself####';
91307         
91308 # check trigger-10 success:     1
91309 DROP TRIGGER trg_2;
91310 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91311 f_int2 = CAST(f_char1 AS SIGNED INT),
91312 f_charbig = CONCAT('===',f_char1,'===');
91313 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
91314 BEGIN
91315 SET new.f_int1 = @my_max1 + @counter,
91316 new.f_int2 = @my_min2 - @counter,
91317 new.f_charbig = '####updated per insert trigger####';
91318 SET @counter = @counter + 1;
91319 END|
91320 SET @counter = 1;
91321 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
91322 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
91323 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
91324 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
91325 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
91326 ORDER BY f_int1;
91327 DROP TRIGGER trg_3;
91328         
91329 # check trigger-11 success:     1
91330 DELETE FROM t1
91331 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
91332 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
91333 AND f_charbig = '####updated per insert trigger####';
91334 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
91335 BEGIN
91336 SET new.f_int1 = @my_max1 + @counter,
91337 new.f_int2 = @my_min2 - @counter,
91338 new.f_charbig = '####updated per insert trigger####';
91339 SET @counter = @counter + 1;
91340 END|
91341 SET @counter = 1;
91342 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
91343 INSERT INTO t1 (f_char1, f_char2, f_charbig)
91344 SELECT CAST(f_int1 AS CHAR),
91345 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
91346 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
91347 ORDER BY f_int1;
91348 DROP TRIGGER trg_3;
91349         
91350 # check trigger-12 success:     1
91351 DELETE FROM t1
91352 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
91353 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
91354 AND f_charbig = '####updated per insert trigger####';
91355 ANALYZE  TABLE t1;
91356 Table   Op      Msg_type        Msg_text
91357 test.t1 analyze status  OK
91358 CHECK    TABLE t1 EXTENDED;
91359 Table   Op      Msg_type        Msg_text
91360 test.t1 check   status  OK
91361 CHECKSUM TABLE t1 EXTENDED;
91362 Table   Checksum
91363 test.t1 <some_value>
91364 OPTIMIZE TABLE t1;
91365 Table   Op      Msg_type        Msg_text
91366 test.t1 optimize        status  OK
91367 # check layout success:    1
91368 REPAIR   TABLE t1 EXTENDED;
91369 Table   Op      Msg_type        Msg_text
91370 test.t1 repair  status  OK
91371 # check layout success:    1
91372 TRUNCATE t1;
91373         
91374 # check TRUNCATE success:       1
91375 # check layout success:    1
91376 # End usability test (inc/partition_check.inc)
91377 DROP TABLE t1;
91378 CREATE TABLE t1 (
91379 f_int1 INTEGER,
91380 f_int2 INTEGER,
91381 f_char1 CHAR(20),
91382 f_char2 CHAR(20),
91383 f_charbig VARCHAR(1000)
91386 PARTITION BY RANGE(f_int1)
91387 (PARTITION parta VALUES LESS THAN (0),
91388 PARTITION part_1 VALUES LESS THAN (5),
91389 PARTITION part_2 VALUES LESS THAN (10),
91390 PARTITION part_3 VALUES LESS THAN (10 + 5),
91391 PARTITION part_4 VALUES LESS THAN (20),
91392 PARTITION part_5 VALUES LESS THAN (2147483646));
91393 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
91394 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
91395 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
91396 ALTER TABLE t1 REMOVE PARTITIONING;
91397 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
91398 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
91399 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
91400 # Start usability test (inc/partition_check.inc)
91401 create_command
91402 SHOW CREATE TABLE t1;
91403 Table   Create Table
91404 t1      CREATE TABLE `t1` (
91405   `f_int1` int(11) DEFAULT NULL,
91406   `f_int2` int(11) DEFAULT NULL,
91407   `f_char1` char(20) DEFAULT NULL,
91408   `f_char2` char(20) DEFAULT NULL,
91409   `f_charbig` varchar(1000) DEFAULT NULL
91410 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
91412 unified filelist
91413 t1.MYD
91414 t1.MYI
91415 t1.frm
91417 # check prerequisites-1 success:    1
91418 # check COUNT(*) success:    1
91419 # check MIN/MAX(f_int1) success:    1
91420 # check MIN/MAX(f_int2) success:    1
91421 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
91422 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
91423 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
91424 WHERE f_int1 IN (2,3);
91425 # check prerequisites-3 success:    1
91426 DELETE FROM t1 WHERE f_charbig = 'delete me';
91427 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
91428 # check read via f_int1 success: 1
91429 # check read via f_int2 success: 1
91430         
91431 # check multiple-1 success:     1
91432 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
91433         
91434 # check multiple-2 success:     1
91435 INSERT INTO t1 SELECT * FROM t0_template
91436 WHERE MOD(f_int1,3) = 0;
91437         
91438 # check multiple-3 success:     1
91439 UPDATE t1 SET f_int1 = f_int1 + @max_row
91440 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
91441 AND @max_row_div2 + @max_row_div4;
91442         
91443 # check multiple-4 success:     1
91444 DELETE FROM t1
91445 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
91446 AND @max_row_div2 + @max_row_div4 + @max_row;
91447         
91448 # check multiple-5 success:     1
91449 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
91450 INSERT INTO t1
91451 SET f_int1 = @cur_value , f_int2 = @cur_value,
91452 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
91453 f_charbig = '#SINGLE#';
91454         
91455 # check single-1 success:       1
91456 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
91457 INSERT INTO t1
91458 SET f_int1 = @cur_value , f_int2 = @cur_value,
91459 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
91460 f_charbig = '#SINGLE#';
91461         
91462 # check single-2 success:       1
91463 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
91464 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
91465 UPDATE t1 SET f_int1 = @cur_value2
91466 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
91467         
91468 # check single-3 success:       1
91469 SET @cur_value1= -1;
91470 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
91471 UPDATE t1 SET f_int1 = @cur_value1
91472 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
91473         
91474 # check single-4 success:       1
91475 SELECT MAX(f_int1) INTO @cur_value FROM t1;
91476 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
91477         
91478 # check single-5 success:       1
91479 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
91480         
91481 # check single-6 success:       1
91482 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
91483         
91484 # check single-7 success:       1
91485 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
91486 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
91487 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
91488 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
91489 f_charbig = '#NULL#';
91490 INSERT INTO t1
91491 SET f_int1 = NULL , f_int2 = -@max_row,
91492 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
91493 f_charbig = '#NULL#';
91494 # check null success:    1
91495         
91496 # check null-1 success:         1
91497 UPDATE t1 SET f_int1 = -@max_row
91498 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
91499 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
91500         
91501 # check null-2 success:         1
91502 UPDATE t1 SET f_int1 = NULL
91503 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
91504 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
91505         
91506 # check null-3 success:         1
91507 DELETE FROM t1
91508 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
91509 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
91510         
91511 # check null-4 success:         1
91512 DELETE FROM t1
91513 WHERE f_int1 = 0 AND f_int2 = 0
91514 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
91515 AND f_charbig = '#NULL#';
91516 SET AUTOCOMMIT= 0;
91517 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
91518 SELECT f_int1, f_int1, '', '', 'was inserted'
91519 FROM t0_template source_tab
91520 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
91521         
91522 # check transactions-1 success:         1
91523 COMMIT WORK;
91524         
91525 # check transactions-2 success:         1
91526 ROLLBACK WORK;
91527         
91528 # check transactions-3 success:         1
91529 DELETE FROM t1 WHERE f_charbig = 'was inserted';
91530 COMMIT WORK;
91531 ROLLBACK WORK;
91532         
91533 # check transactions-4 success:         1
91534 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
91535 SELECT f_int1, f_int1, '', '', 'was inserted'
91536 FROM t0_template source_tab
91537 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
91538         
91539 # check transactions-5 success:         1
91540 ROLLBACK WORK;
91541 Warnings:
91542 Warning 1196    Some non-transactional changed tables couldn't be rolled back
91543         
91544 # check transactions-6 success:         1
91545 # INFO: Storage engine used for t1 seems to be not transactional.
91546 COMMIT;
91547         
91548 # check transactions-7 success:         1
91549 DELETE FROM t1 WHERE f_charbig = 'was inserted';
91550 COMMIT WORK;
91551 SET @@session.sql_mode = 'traditional';
91552 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
91553 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
91554 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
91555 '', '', 'was inserted' FROM t0_template
91556 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
91557 ERROR 22012: Division by 0
91558 COMMIT;
91559         
91560 # check transactions-8 success:         1
91561 # INFO: Storage engine used for t1 seems to be unable to revert
91562 #       changes made by the failing statement.
91563 SET @@session.sql_mode = '';
91564 SET AUTOCOMMIT= 1;
91565 DELETE FROM t1 WHERE f_charbig = 'was inserted';
91566 COMMIT WORK;
91567 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
91568         
91569 # check special-1 success:      1
91570 UPDATE t1 SET f_charbig = '';
91571         
91572 # check special-2 success:      1
91573 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
91574 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
91575 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
91576 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91577 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91578 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91579 'just inserted' FROM t0_template
91580 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91581 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
91582 BEGIN
91583 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91584 f_charbig = 'updated by trigger'
91585       WHERE f_int1 = new.f_int1;
91586 END|
91587 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91588 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
91589 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91590         
91591 # check trigger-1 success:      1
91592 DROP TRIGGER trg_1;
91593 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91594 f_int2 = CAST(f_char1 AS SIGNED INT),
91595 f_charbig = 'just inserted'
91596    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91597 DELETE FROM t0_aux
91598 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91599 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91600 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91601 'just inserted' FROM t0_template
91602 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91603 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
91604 BEGIN
91605 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91606 f_charbig = 'updated by trigger'
91607       WHERE f_int1 = new.f_int1;
91608 END|
91609 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91610 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
91611 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91612         
91613 # check trigger-2 success:      1
91614 DROP TRIGGER trg_1;
91615 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91616 f_int2 = CAST(f_char1 AS SIGNED INT),
91617 f_charbig = 'just inserted'
91618    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91619 DELETE FROM t0_aux
91620 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91621 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91622 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91623 'just inserted' FROM t0_template
91624 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91625 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
91626 BEGIN
91627 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91628 f_charbig = 'updated by trigger'
91629       WHERE f_int1 = new.f_int1;
91630 END|
91631 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
91632 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
91633         
91634 # check trigger-3 success:      1
91635 DROP TRIGGER trg_1;
91636 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91637 f_int2 = CAST(f_char1 AS SIGNED INT),
91638 f_charbig = 'just inserted'
91639    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91640 DELETE FROM t0_aux
91641 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91642 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91643 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91644 'just inserted' FROM t0_template
91645 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91646 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
91647 BEGIN
91648 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91649 f_charbig = 'updated by trigger'
91650       WHERE f_int1 = - old.f_int1;
91651 END|
91652 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
91653 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
91654         
91655 # check trigger-4 success:      1
91656 DROP TRIGGER trg_1;
91657 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91658 f_int2 = CAST(f_char1 AS SIGNED INT),
91659 f_charbig = 'just inserted'
91660    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91661 DELETE FROM t0_aux
91662 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91663 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91664 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91665 'just inserted' FROM t0_template
91666 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91667 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
91668 BEGIN
91669 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91670 f_charbig = 'updated by trigger'
91671       WHERE f_int1 = new.f_int1;
91672 END|
91673 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
91674 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
91675         
91676 # check trigger-5 success:      1
91677 DROP TRIGGER trg_1;
91678 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91679 f_int2 = CAST(f_char1 AS SIGNED INT),
91680 f_charbig = 'just inserted'
91681    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91682 DELETE FROM t0_aux
91683 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91684 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91685 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91686 'just inserted' FROM t0_template
91687 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91688 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
91689 BEGIN
91690 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91691 f_charbig = 'updated by trigger'
91692       WHERE f_int1 = - old.f_int1;
91693 END|
91694 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
91695 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
91696         
91697 # check trigger-6 success:      1
91698 DROP TRIGGER trg_1;
91699 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91700 f_int2 = CAST(f_char1 AS SIGNED INT),
91701 f_charbig = 'just inserted'
91702    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91703 DELETE FROM t0_aux
91704 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91705 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91706 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91707 'just inserted' FROM t0_template
91708 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91709 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
91710 BEGIN
91711 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91712 f_charbig = 'updated by trigger'
91713       WHERE f_int1 = - old.f_int1;
91714 END|
91715 DELETE FROM t0_aux
91716 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
91717         
91718 # check trigger-7 success:      1
91719 DROP TRIGGER trg_1;
91720 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91721 f_int2 = CAST(f_char1 AS SIGNED INT),
91722 f_charbig = 'just inserted'
91723    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91724 DELETE FROM t0_aux
91725 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91726 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
91727 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
91728 'just inserted' FROM t0_template
91729 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91730 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
91731 BEGIN
91732 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
91733 f_charbig = 'updated by trigger'
91734       WHERE f_int1 = - old.f_int1;
91735 END|
91736 DELETE FROM t0_aux
91737 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
91738         
91739 # check trigger-8 success:      1
91740 DROP TRIGGER trg_1;
91741 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91742 f_int2 = CAST(f_char1 AS SIGNED INT),
91743 f_charbig = 'just inserted'
91744    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
91745 DELETE FROM t0_aux
91746 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91747 DELETE FROM t1
91748 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
91749 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
91750 BEGIN
91751 SET new.f_int1 = old.f_int1 + @max_row,
91752 new.f_int2 = old.f_int2 - @max_row,
91753 new.f_charbig = '####updated per update trigger####';
91754 END|
91755 UPDATE t1
91756 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
91757 f_charbig = '####updated per update statement itself####';
91758         
91759 # check trigger-9 success:      1
91760 DROP TRIGGER trg_2;
91761 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91762 f_int2 = CAST(f_char1 AS SIGNED INT),
91763 f_charbig = CONCAT('===',f_char1,'===');
91764 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
91765 BEGIN
91766 SET new.f_int1 = new.f_int1 + @max_row,
91767 new.f_int2 = new.f_int2 - @max_row,
91768 new.f_charbig = '####updated per update trigger####';
91769 END|
91770 UPDATE t1
91771 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
91772 f_charbig = '####updated per update statement itself####';
91773         
91774 # check trigger-10 success:     1
91775 DROP TRIGGER trg_2;
91776 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
91777 f_int2 = CAST(f_char1 AS SIGNED INT),
91778 f_charbig = CONCAT('===',f_char1,'===');
91779 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
91780 BEGIN
91781 SET new.f_int1 = @my_max1 + @counter,
91782 new.f_int2 = @my_min2 - @counter,
91783 new.f_charbig = '####updated per insert trigger####';
91784 SET @counter = @counter + 1;
91785 END|
91786 SET @counter = 1;
91787 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
91788 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
91789 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
91790 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
91791 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
91792 ORDER BY f_int1;
91793 DROP TRIGGER trg_3;
91794         
91795 # check trigger-11 success:     1
91796 DELETE FROM t1
91797 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
91798 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
91799 AND f_charbig = '####updated per insert trigger####';
91800 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
91801 BEGIN
91802 SET new.f_int1 = @my_max1 + @counter,
91803 new.f_int2 = @my_min2 - @counter,
91804 new.f_charbig = '####updated per insert trigger####';
91805 SET @counter = @counter + 1;
91806 END|
91807 SET @counter = 1;
91808 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
91809 INSERT INTO t1 (f_char1, f_char2, f_charbig)
91810 SELECT CAST(f_int1 AS CHAR),
91811 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
91812 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
91813 ORDER BY f_int1;
91814 DROP TRIGGER trg_3;
91815         
91816 # check trigger-12 success:     1
91817 DELETE FROM t1
91818 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
91819 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
91820 AND f_charbig = '####updated per insert trigger####';
91821 ANALYZE  TABLE t1;
91822 Table   Op      Msg_type        Msg_text
91823 test.t1 analyze status  OK
91824 CHECK    TABLE t1 EXTENDED;
91825 Table   Op      Msg_type        Msg_text
91826 test.t1 check   status  OK
91827 CHECKSUM TABLE t1 EXTENDED;
91828 Table   Checksum
91829 test.t1 <some_value>
91830 OPTIMIZE TABLE t1;
91831 Table   Op      Msg_type        Msg_text
91832 test.t1 optimize        status  OK
91833 # check layout success:    1
91834 REPAIR   TABLE t1 EXTENDED;
91835 Table   Op      Msg_type        Msg_text
91836 test.t1 repair  status  OK
91837 # check layout success:    1
91838 TRUNCATE t1;
91839         
91840 # check TRUNCATE success:       1
91841 # check layout success:    1
91842 # End usability test (inc/partition_check.inc)
91843 DROP TABLE t1;
91844 CREATE TABLE t1 (
91845 f_int1 INTEGER,
91846 f_int2 INTEGER,
91847 f_char1 CHAR(20),
91848 f_char2 CHAR(20),
91849 f_charbig VARCHAR(1000)
91852 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
91853 (PARTITION part_1 VALUES LESS THAN (0),
91854 PARTITION part_2 VALUES LESS THAN (5),
91855 PARTITION part_3 VALUES LESS THAN (10),
91856 PARTITION part_4 VALUES LESS THAN (2147483646));
91857 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
91858 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
91859 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
91860 ALTER TABLE t1 REMOVE PARTITIONING;
91861 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
91862 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
91863 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
91864 # Start usability test (inc/partition_check.inc)
91865 create_command
91866 SHOW CREATE TABLE t1;
91867 Table   Create Table
91868 t1      CREATE TABLE `t1` (
91869   `f_int1` int(11) DEFAULT NULL,
91870   `f_int2` int(11) DEFAULT NULL,
91871   `f_char1` char(20) DEFAULT NULL,
91872   `f_char2` char(20) DEFAULT NULL,
91873   `f_charbig` varchar(1000) DEFAULT NULL
91874 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
91876 unified filelist
91877 t1.MYD
91878 t1.MYI
91879 t1.frm
91881 # check prerequisites-1 success:    1
91882 # check COUNT(*) success:    1
91883 # check MIN/MAX(f_int1) success:    1
91884 # check MIN/MAX(f_int2) success:    1
91885 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
91886 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
91887 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
91888 WHERE f_int1 IN (2,3);
91889 # check prerequisites-3 success:    1
91890 DELETE FROM t1 WHERE f_charbig = 'delete me';
91891 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
91892 # check read via f_int1 success: 1
91893 # check read via f_int2 success: 1
91894         
91895 # check multiple-1 success:     1
91896 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
91897         
91898 # check multiple-2 success:     1
91899 INSERT INTO t1 SELECT * FROM t0_template
91900 WHERE MOD(f_int1,3) = 0;
91901         
91902 # check multiple-3 success:     1
91903 UPDATE t1 SET f_int1 = f_int1 + @max_row
91904 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
91905 AND @max_row_div2 + @max_row_div4;
91906         
91907 # check multiple-4 success:     1
91908 DELETE FROM t1
91909 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
91910 AND @max_row_div2 + @max_row_div4 + @max_row;
91911         
91912 # check multiple-5 success:     1
91913 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
91914 INSERT INTO t1
91915 SET f_int1 = @cur_value , f_int2 = @cur_value,
91916 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
91917 f_charbig = '#SINGLE#';
91918         
91919 # check single-1 success:       1
91920 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
91921 INSERT INTO t1
91922 SET f_int1 = @cur_value , f_int2 = @cur_value,
91923 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
91924 f_charbig = '#SINGLE#';
91925         
91926 # check single-2 success:       1
91927 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
91928 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
91929 UPDATE t1 SET f_int1 = @cur_value2
91930 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
91931         
91932 # check single-3 success:       1
91933 SET @cur_value1= -1;
91934 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
91935 UPDATE t1 SET f_int1 = @cur_value1
91936 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
91937         
91938 # check single-4 success:       1
91939 SELECT MAX(f_int1) INTO @cur_value FROM t1;
91940 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
91941         
91942 # check single-5 success:       1
91943 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
91944         
91945 # check single-6 success:       1
91946 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
91947         
91948 # check single-7 success:       1
91949 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
91950 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
91951 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
91952 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
91953 f_charbig = '#NULL#';
91954 INSERT INTO t1
91955 SET f_int1 = NULL , f_int2 = -@max_row,
91956 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
91957 f_charbig = '#NULL#';
91958 # check null success:    1
91959         
91960 # check null-1 success:         1
91961 UPDATE t1 SET f_int1 = -@max_row
91962 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
91963 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
91964         
91965 # check null-2 success:         1
91966 UPDATE t1 SET f_int1 = NULL
91967 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
91968 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
91969         
91970 # check null-3 success:         1
91971 DELETE FROM t1
91972 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
91973 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
91974         
91975 # check null-4 success:         1
91976 DELETE FROM t1
91977 WHERE f_int1 = 0 AND f_int2 = 0
91978 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
91979 AND f_charbig = '#NULL#';
91980 SET AUTOCOMMIT= 0;
91981 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
91982 SELECT f_int1, f_int1, '', '', 'was inserted'
91983 FROM t0_template source_tab
91984 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
91985         
91986 # check transactions-1 success:         1
91987 COMMIT WORK;
91988         
91989 # check transactions-2 success:         1
91990 ROLLBACK WORK;
91991         
91992 # check transactions-3 success:         1
91993 DELETE FROM t1 WHERE f_charbig = 'was inserted';
91994 COMMIT WORK;
91995 ROLLBACK WORK;
91996         
91997 # check transactions-4 success:         1
91998 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
91999 SELECT f_int1, f_int1, '', '', 'was inserted'
92000 FROM t0_template source_tab
92001 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
92002         
92003 # check transactions-5 success:         1
92004 ROLLBACK WORK;
92005 Warnings:
92006 Warning 1196    Some non-transactional changed tables couldn't be rolled back
92007         
92008 # check transactions-6 success:         1
92009 # INFO: Storage engine used for t1 seems to be not transactional.
92010 COMMIT;
92011         
92012 # check transactions-7 success:         1
92013 DELETE FROM t1 WHERE f_charbig = 'was inserted';
92014 COMMIT WORK;
92015 SET @@session.sql_mode = 'traditional';
92016 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
92017 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
92018 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
92019 '', '', 'was inserted' FROM t0_template
92020 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
92021 ERROR 22012: Division by 0
92022 COMMIT;
92023         
92024 # check transactions-8 success:         1
92025 # INFO: Storage engine used for t1 seems to be unable to revert
92026 #       changes made by the failing statement.
92027 SET @@session.sql_mode = '';
92028 SET AUTOCOMMIT= 1;
92029 DELETE FROM t1 WHERE f_charbig = 'was inserted';
92030 COMMIT WORK;
92031 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
92032         
92033 # check special-1 success:      1
92034 UPDATE t1 SET f_charbig = '';
92035         
92036 # check special-2 success:      1
92037 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
92038 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
92039 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
92040 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92041 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92042 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92043 'just inserted' FROM t0_template
92044 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92045 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
92046 BEGIN
92047 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92048 f_charbig = 'updated by trigger'
92049       WHERE f_int1 = new.f_int1;
92050 END|
92051 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92052 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
92053 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92054         
92055 # check trigger-1 success:      1
92056 DROP TRIGGER trg_1;
92057 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92058 f_int2 = CAST(f_char1 AS SIGNED INT),
92059 f_charbig = 'just inserted'
92060    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92061 DELETE FROM t0_aux
92062 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92063 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92064 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92065 'just inserted' FROM t0_template
92066 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92067 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
92068 BEGIN
92069 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92070 f_charbig = 'updated by trigger'
92071       WHERE f_int1 = new.f_int1;
92072 END|
92073 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92074 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
92075 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92076         
92077 # check trigger-2 success:      1
92078 DROP TRIGGER trg_1;
92079 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92080 f_int2 = CAST(f_char1 AS SIGNED INT),
92081 f_charbig = 'just inserted'
92082    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92083 DELETE FROM t0_aux
92084 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92085 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92086 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92087 'just inserted' FROM t0_template
92088 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92089 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
92090 BEGIN
92091 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92092 f_charbig = 'updated by trigger'
92093       WHERE f_int1 = new.f_int1;
92094 END|
92095 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
92096 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
92097         
92098 # check trigger-3 success:      1
92099 DROP TRIGGER trg_1;
92100 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92101 f_int2 = CAST(f_char1 AS SIGNED INT),
92102 f_charbig = 'just inserted'
92103    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92104 DELETE FROM t0_aux
92105 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92106 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92107 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92108 'just inserted' FROM t0_template
92109 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92110 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
92111 BEGIN
92112 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92113 f_charbig = 'updated by trigger'
92114       WHERE f_int1 = - old.f_int1;
92115 END|
92116 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
92117 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
92118         
92119 # check trigger-4 success:      1
92120 DROP TRIGGER trg_1;
92121 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92122 f_int2 = CAST(f_char1 AS SIGNED INT),
92123 f_charbig = 'just inserted'
92124    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92125 DELETE FROM t0_aux
92126 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92127 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92128 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92129 'just inserted' FROM t0_template
92130 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92131 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
92132 BEGIN
92133 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92134 f_charbig = 'updated by trigger'
92135       WHERE f_int1 = new.f_int1;
92136 END|
92137 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
92138 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
92139         
92140 # check trigger-5 success:      1
92141 DROP TRIGGER trg_1;
92142 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92143 f_int2 = CAST(f_char1 AS SIGNED INT),
92144 f_charbig = 'just inserted'
92145    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92146 DELETE FROM t0_aux
92147 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92148 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92149 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92150 'just inserted' FROM t0_template
92151 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92152 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
92153 BEGIN
92154 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92155 f_charbig = 'updated by trigger'
92156       WHERE f_int1 = - old.f_int1;
92157 END|
92158 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
92159 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
92160         
92161 # check trigger-6 success:      1
92162 DROP TRIGGER trg_1;
92163 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92164 f_int2 = CAST(f_char1 AS SIGNED INT),
92165 f_charbig = 'just inserted'
92166    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92167 DELETE FROM t0_aux
92168 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92169 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92170 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92171 'just inserted' FROM t0_template
92172 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92173 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
92174 BEGIN
92175 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92176 f_charbig = 'updated by trigger'
92177       WHERE f_int1 = - old.f_int1;
92178 END|
92179 DELETE FROM t0_aux
92180 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
92181         
92182 # check trigger-7 success:      1
92183 DROP TRIGGER trg_1;
92184 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92185 f_int2 = CAST(f_char1 AS SIGNED INT),
92186 f_charbig = 'just inserted'
92187    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92188 DELETE FROM t0_aux
92189 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92190 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92191 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92192 'just inserted' FROM t0_template
92193 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92194 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
92195 BEGIN
92196 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92197 f_charbig = 'updated by trigger'
92198       WHERE f_int1 = - old.f_int1;
92199 END|
92200 DELETE FROM t0_aux
92201 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
92202         
92203 # check trigger-8 success:      1
92204 DROP TRIGGER trg_1;
92205 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92206 f_int2 = CAST(f_char1 AS SIGNED INT),
92207 f_charbig = 'just inserted'
92208    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92209 DELETE FROM t0_aux
92210 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92211 DELETE FROM t1
92212 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92213 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
92214 BEGIN
92215 SET new.f_int1 = old.f_int1 + @max_row,
92216 new.f_int2 = old.f_int2 - @max_row,
92217 new.f_charbig = '####updated per update trigger####';
92218 END|
92219 UPDATE t1
92220 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
92221 f_charbig = '####updated per update statement itself####';
92222         
92223 # check trigger-9 success:      1
92224 DROP TRIGGER trg_2;
92225 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92226 f_int2 = CAST(f_char1 AS SIGNED INT),
92227 f_charbig = CONCAT('===',f_char1,'===');
92228 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
92229 BEGIN
92230 SET new.f_int1 = new.f_int1 + @max_row,
92231 new.f_int2 = new.f_int2 - @max_row,
92232 new.f_charbig = '####updated per update trigger####';
92233 END|
92234 UPDATE t1
92235 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
92236 f_charbig = '####updated per update statement itself####';
92237         
92238 # check trigger-10 success:     1
92239 DROP TRIGGER trg_2;
92240 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92241 f_int2 = CAST(f_char1 AS SIGNED INT),
92242 f_charbig = CONCAT('===',f_char1,'===');
92243 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
92244 BEGIN
92245 SET new.f_int1 = @my_max1 + @counter,
92246 new.f_int2 = @my_min2 - @counter,
92247 new.f_charbig = '####updated per insert trigger####';
92248 SET @counter = @counter + 1;
92249 END|
92250 SET @counter = 1;
92251 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
92252 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
92253 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
92254 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
92255 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
92256 ORDER BY f_int1;
92257 DROP TRIGGER trg_3;
92258         
92259 # check trigger-11 success:     1
92260 DELETE FROM t1
92261 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
92262 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
92263 AND f_charbig = '####updated per insert trigger####';
92264 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
92265 BEGIN
92266 SET new.f_int1 = @my_max1 + @counter,
92267 new.f_int2 = @my_min2 - @counter,
92268 new.f_charbig = '####updated per insert trigger####';
92269 SET @counter = @counter + 1;
92270 END|
92271 SET @counter = 1;
92272 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
92273 INSERT INTO t1 (f_char1, f_char2, f_charbig)
92274 SELECT CAST(f_int1 AS CHAR),
92275 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
92276 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
92277 ORDER BY f_int1;
92278 DROP TRIGGER trg_3;
92279         
92280 # check trigger-12 success:     1
92281 DELETE FROM t1
92282 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
92283 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
92284 AND f_charbig = '####updated per insert trigger####';
92285 ANALYZE  TABLE t1;
92286 Table   Op      Msg_type        Msg_text
92287 test.t1 analyze status  OK
92288 CHECK    TABLE t1 EXTENDED;
92289 Table   Op      Msg_type        Msg_text
92290 test.t1 check   status  OK
92291 CHECKSUM TABLE t1 EXTENDED;
92292 Table   Checksum
92293 test.t1 <some_value>
92294 OPTIMIZE TABLE t1;
92295 Table   Op      Msg_type        Msg_text
92296 test.t1 optimize        status  OK
92297 # check layout success:    1
92298 REPAIR   TABLE t1 EXTENDED;
92299 Table   Op      Msg_type        Msg_text
92300 test.t1 repair  status  OK
92301 # check layout success:    1
92302 TRUNCATE t1;
92303         
92304 # check TRUNCATE success:       1
92305 # check layout success:    1
92306 # End usability test (inc/partition_check.inc)
92307 DROP TABLE t1;
92308 CREATE TABLE t1 (
92309 f_int1 INTEGER,
92310 f_int2 INTEGER,
92311 f_char1 CHAR(20),
92312 f_char2 CHAR(20),
92313 f_charbig VARCHAR(1000)
92316 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
92317 (PARTITION part_1 VALUES LESS THAN (0)
92318 (SUBPARTITION subpart11, SUBPARTITION subpart12),
92319 PARTITION part_2 VALUES LESS THAN (5)
92320 (SUBPARTITION subpart21, SUBPARTITION subpart22),
92321 PARTITION part_3 VALUES LESS THAN (10)
92322 (SUBPARTITION subpart31, SUBPARTITION subpart32),
92323 PARTITION part_4 VALUES LESS THAN (2147483646)
92324 (SUBPARTITION subpart41, SUBPARTITION subpart42));
92325 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
92326 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
92327 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
92328 ALTER TABLE t1 REMOVE PARTITIONING;
92329 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
92330 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
92331 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
92332 # Start usability test (inc/partition_check.inc)
92333 create_command
92334 SHOW CREATE TABLE t1;
92335 Table   Create Table
92336 t1      CREATE TABLE `t1` (
92337   `f_int1` int(11) DEFAULT NULL,
92338   `f_int2` int(11) DEFAULT NULL,
92339   `f_char1` char(20) DEFAULT NULL,
92340   `f_char2` char(20) DEFAULT NULL,
92341   `f_charbig` varchar(1000) DEFAULT NULL
92342 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
92344 unified filelist
92345 t1.MYD
92346 t1.MYI
92347 t1.frm
92349 # check prerequisites-1 success:    1
92350 # check COUNT(*) success:    1
92351 # check MIN/MAX(f_int1) success:    1
92352 # check MIN/MAX(f_int2) success:    1
92353 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
92354 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
92355 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
92356 WHERE f_int1 IN (2,3);
92357 # check prerequisites-3 success:    1
92358 DELETE FROM t1 WHERE f_charbig = 'delete me';
92359 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
92360 # check read via f_int1 success: 1
92361 # check read via f_int2 success: 1
92362         
92363 # check multiple-1 success:     1
92364 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
92365         
92366 # check multiple-2 success:     1
92367 INSERT INTO t1 SELECT * FROM t0_template
92368 WHERE MOD(f_int1,3) = 0;
92369         
92370 # check multiple-3 success:     1
92371 UPDATE t1 SET f_int1 = f_int1 + @max_row
92372 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
92373 AND @max_row_div2 + @max_row_div4;
92374         
92375 # check multiple-4 success:     1
92376 DELETE FROM t1
92377 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
92378 AND @max_row_div2 + @max_row_div4 + @max_row;
92379         
92380 # check multiple-5 success:     1
92381 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
92382 INSERT INTO t1
92383 SET f_int1 = @cur_value , f_int2 = @cur_value,
92384 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
92385 f_charbig = '#SINGLE#';
92386         
92387 # check single-1 success:       1
92388 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
92389 INSERT INTO t1
92390 SET f_int1 = @cur_value , f_int2 = @cur_value,
92391 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
92392 f_charbig = '#SINGLE#';
92393         
92394 # check single-2 success:       1
92395 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
92396 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
92397 UPDATE t1 SET f_int1 = @cur_value2
92398 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
92399         
92400 # check single-3 success:       1
92401 SET @cur_value1= -1;
92402 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
92403 UPDATE t1 SET f_int1 = @cur_value1
92404 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
92405         
92406 # check single-4 success:       1
92407 SELECT MAX(f_int1) INTO @cur_value FROM t1;
92408 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
92409         
92410 # check single-5 success:       1
92411 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
92412         
92413 # check single-6 success:       1
92414 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
92415         
92416 # check single-7 success:       1
92417 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
92418 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
92419 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
92420 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
92421 f_charbig = '#NULL#';
92422 INSERT INTO t1
92423 SET f_int1 = NULL , f_int2 = -@max_row,
92424 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
92425 f_charbig = '#NULL#';
92426 # check null success:    1
92427         
92428 # check null-1 success:         1
92429 UPDATE t1 SET f_int1 = -@max_row
92430 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
92431 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
92432         
92433 # check null-2 success:         1
92434 UPDATE t1 SET f_int1 = NULL
92435 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
92436 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
92437         
92438 # check null-3 success:         1
92439 DELETE FROM t1
92440 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
92441 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
92442         
92443 # check null-4 success:         1
92444 DELETE FROM t1
92445 WHERE f_int1 = 0 AND f_int2 = 0
92446 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
92447 AND f_charbig = '#NULL#';
92448 SET AUTOCOMMIT= 0;
92449 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
92450 SELECT f_int1, f_int1, '', '', 'was inserted'
92451 FROM t0_template source_tab
92452 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
92453         
92454 # check transactions-1 success:         1
92455 COMMIT WORK;
92456         
92457 # check transactions-2 success:         1
92458 ROLLBACK WORK;
92459         
92460 # check transactions-3 success:         1
92461 DELETE FROM t1 WHERE f_charbig = 'was inserted';
92462 COMMIT WORK;
92463 ROLLBACK WORK;
92464         
92465 # check transactions-4 success:         1
92466 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
92467 SELECT f_int1, f_int1, '', '', 'was inserted'
92468 FROM t0_template source_tab
92469 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
92470         
92471 # check transactions-5 success:         1
92472 ROLLBACK WORK;
92473 Warnings:
92474 Warning 1196    Some non-transactional changed tables couldn't be rolled back
92475         
92476 # check transactions-6 success:         1
92477 # INFO: Storage engine used for t1 seems to be not transactional.
92478 COMMIT;
92479         
92480 # check transactions-7 success:         1
92481 DELETE FROM t1 WHERE f_charbig = 'was inserted';
92482 COMMIT WORK;
92483 SET @@session.sql_mode = 'traditional';
92484 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
92485 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
92486 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
92487 '', '', 'was inserted' FROM t0_template
92488 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
92489 ERROR 22012: Division by 0
92490 COMMIT;
92491         
92492 # check transactions-8 success:         1
92493 # INFO: Storage engine used for t1 seems to be unable to revert
92494 #       changes made by the failing statement.
92495 SET @@session.sql_mode = '';
92496 SET AUTOCOMMIT= 1;
92497 DELETE FROM t1 WHERE f_charbig = 'was inserted';
92498 COMMIT WORK;
92499 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
92500         
92501 # check special-1 success:      1
92502 UPDATE t1 SET f_charbig = '';
92503         
92504 # check special-2 success:      1
92505 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
92506 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
92507 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
92508 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92509 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92510 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92511 'just inserted' FROM t0_template
92512 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92513 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
92514 BEGIN
92515 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92516 f_charbig = 'updated by trigger'
92517       WHERE f_int1 = new.f_int1;
92518 END|
92519 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92520 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
92521 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92522         
92523 # check trigger-1 success:      1
92524 DROP TRIGGER trg_1;
92525 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92526 f_int2 = CAST(f_char1 AS SIGNED INT),
92527 f_charbig = 'just inserted'
92528    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92529 DELETE FROM t0_aux
92530 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92531 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92532 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92533 'just inserted' FROM t0_template
92534 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92535 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
92536 BEGIN
92537 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92538 f_charbig = 'updated by trigger'
92539       WHERE f_int1 = new.f_int1;
92540 END|
92541 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92542 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
92543 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92544         
92545 # check trigger-2 success:      1
92546 DROP TRIGGER trg_1;
92547 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92548 f_int2 = CAST(f_char1 AS SIGNED INT),
92549 f_charbig = 'just inserted'
92550    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92551 DELETE FROM t0_aux
92552 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92553 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92554 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92555 'just inserted' FROM t0_template
92556 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92557 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
92558 BEGIN
92559 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92560 f_charbig = 'updated by trigger'
92561       WHERE f_int1 = new.f_int1;
92562 END|
92563 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
92564 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
92565         
92566 # check trigger-3 success:      1
92567 DROP TRIGGER trg_1;
92568 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92569 f_int2 = CAST(f_char1 AS SIGNED INT),
92570 f_charbig = 'just inserted'
92571    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92572 DELETE FROM t0_aux
92573 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92574 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92575 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92576 'just inserted' FROM t0_template
92577 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92578 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
92579 BEGIN
92580 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92581 f_charbig = 'updated by trigger'
92582       WHERE f_int1 = - old.f_int1;
92583 END|
92584 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
92585 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
92586         
92587 # check trigger-4 success:      1
92588 DROP TRIGGER trg_1;
92589 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92590 f_int2 = CAST(f_char1 AS SIGNED INT),
92591 f_charbig = 'just inserted'
92592    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92593 DELETE FROM t0_aux
92594 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92595 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92596 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92597 'just inserted' FROM t0_template
92598 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92599 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
92600 BEGIN
92601 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92602 f_charbig = 'updated by trigger'
92603       WHERE f_int1 = new.f_int1;
92604 END|
92605 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
92606 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
92607         
92608 # check trigger-5 success:      1
92609 DROP TRIGGER trg_1;
92610 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92611 f_int2 = CAST(f_char1 AS SIGNED INT),
92612 f_charbig = 'just inserted'
92613    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92614 DELETE FROM t0_aux
92615 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92616 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92617 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92618 'just inserted' FROM t0_template
92619 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92620 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
92621 BEGIN
92622 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92623 f_charbig = 'updated by trigger'
92624       WHERE f_int1 = - old.f_int1;
92625 END|
92626 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
92627 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
92628         
92629 # check trigger-6 success:      1
92630 DROP TRIGGER trg_1;
92631 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92632 f_int2 = CAST(f_char1 AS SIGNED INT),
92633 f_charbig = 'just inserted'
92634    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92635 DELETE FROM t0_aux
92636 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92637 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92638 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92639 'just inserted' FROM t0_template
92640 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92641 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
92642 BEGIN
92643 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92644 f_charbig = 'updated by trigger'
92645       WHERE f_int1 = - old.f_int1;
92646 END|
92647 DELETE FROM t0_aux
92648 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
92649         
92650 # check trigger-7 success:      1
92651 DROP TRIGGER trg_1;
92652 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92653 f_int2 = CAST(f_char1 AS SIGNED INT),
92654 f_charbig = 'just inserted'
92655    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92656 DELETE FROM t0_aux
92657 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92658 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92659 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92660 'just inserted' FROM t0_template
92661 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92662 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
92663 BEGIN
92664 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92665 f_charbig = 'updated by trigger'
92666       WHERE f_int1 = - old.f_int1;
92667 END|
92668 DELETE FROM t0_aux
92669 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
92670         
92671 # check trigger-8 success:      1
92672 DROP TRIGGER trg_1;
92673 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92674 f_int2 = CAST(f_char1 AS SIGNED INT),
92675 f_charbig = 'just inserted'
92676    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92677 DELETE FROM t0_aux
92678 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92679 DELETE FROM t1
92680 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92681 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
92682 BEGIN
92683 SET new.f_int1 = old.f_int1 + @max_row,
92684 new.f_int2 = old.f_int2 - @max_row,
92685 new.f_charbig = '####updated per update trigger####';
92686 END|
92687 UPDATE t1
92688 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
92689 f_charbig = '####updated per update statement itself####';
92690         
92691 # check trigger-9 success:      1
92692 DROP TRIGGER trg_2;
92693 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92694 f_int2 = CAST(f_char1 AS SIGNED INT),
92695 f_charbig = CONCAT('===',f_char1,'===');
92696 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
92697 BEGIN
92698 SET new.f_int1 = new.f_int1 + @max_row,
92699 new.f_int2 = new.f_int2 - @max_row,
92700 new.f_charbig = '####updated per update trigger####';
92701 END|
92702 UPDATE t1
92703 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
92704 f_charbig = '####updated per update statement itself####';
92705         
92706 # check trigger-10 success:     1
92707 DROP TRIGGER trg_2;
92708 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92709 f_int2 = CAST(f_char1 AS SIGNED INT),
92710 f_charbig = CONCAT('===',f_char1,'===');
92711 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
92712 BEGIN
92713 SET new.f_int1 = @my_max1 + @counter,
92714 new.f_int2 = @my_min2 - @counter,
92715 new.f_charbig = '####updated per insert trigger####';
92716 SET @counter = @counter + 1;
92717 END|
92718 SET @counter = 1;
92719 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
92720 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
92721 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
92722 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
92723 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
92724 ORDER BY f_int1;
92725 DROP TRIGGER trg_3;
92726         
92727 # check trigger-11 success:     1
92728 DELETE FROM t1
92729 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
92730 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
92731 AND f_charbig = '####updated per insert trigger####';
92732 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
92733 BEGIN
92734 SET new.f_int1 = @my_max1 + @counter,
92735 new.f_int2 = @my_min2 - @counter,
92736 new.f_charbig = '####updated per insert trigger####';
92737 SET @counter = @counter + 1;
92738 END|
92739 SET @counter = 1;
92740 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
92741 INSERT INTO t1 (f_char1, f_char2, f_charbig)
92742 SELECT CAST(f_int1 AS CHAR),
92743 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
92744 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
92745 ORDER BY f_int1;
92746 DROP TRIGGER trg_3;
92747         
92748 # check trigger-12 success:     1
92749 DELETE FROM t1
92750 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
92751 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
92752 AND f_charbig = '####updated per insert trigger####';
92753 ANALYZE  TABLE t1;
92754 Table   Op      Msg_type        Msg_text
92755 test.t1 analyze status  OK
92756 CHECK    TABLE t1 EXTENDED;
92757 Table   Op      Msg_type        Msg_text
92758 test.t1 check   status  OK
92759 CHECKSUM TABLE t1 EXTENDED;
92760 Table   Checksum
92761 test.t1 <some_value>
92762 OPTIMIZE TABLE t1;
92763 Table   Op      Msg_type        Msg_text
92764 test.t1 optimize        status  OK
92765 # check layout success:    1
92766 REPAIR   TABLE t1 EXTENDED;
92767 Table   Op      Msg_type        Msg_text
92768 test.t1 repair  status  OK
92769 # check layout success:    1
92770 TRUNCATE t1;
92771         
92772 # check TRUNCATE success:       1
92773 # check layout success:    1
92774 # End usability test (inc/partition_check.inc)
92775 DROP TABLE t1;
92776 CREATE TABLE t1 (
92777 f_int1 INTEGER,
92778 f_int2 INTEGER,
92779 f_char1 CHAR(20),
92780 f_char2 CHAR(20),
92781 f_charbig VARCHAR(1000)
92784 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
92785 (PARTITION part_1 VALUES IN (0)
92786 (SUBPARTITION sp11, SUBPARTITION sp12),
92787 PARTITION part_2 VALUES IN (1)
92788 (SUBPARTITION sp21, SUBPARTITION sp22),
92789 PARTITION part_3 VALUES IN (2)
92790 (SUBPARTITION sp31, SUBPARTITION sp32),
92791 PARTITION part_4 VALUES IN (NULL)
92792 (SUBPARTITION sp41, SUBPARTITION sp42));
92793 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
92794 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
92795 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
92796 ALTER TABLE t1 REMOVE PARTITIONING;
92797 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
92798 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
92799 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
92800 # Start usability test (inc/partition_check.inc)
92801 create_command
92802 SHOW CREATE TABLE t1;
92803 Table   Create Table
92804 t1      CREATE TABLE `t1` (
92805   `f_int1` int(11) DEFAULT NULL,
92806   `f_int2` int(11) DEFAULT NULL,
92807   `f_char1` char(20) DEFAULT NULL,
92808   `f_char2` char(20) DEFAULT NULL,
92809   `f_charbig` varchar(1000) DEFAULT NULL
92810 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
92812 unified filelist
92813 t1.MYD
92814 t1.MYI
92815 t1.frm
92817 # check prerequisites-1 success:    1
92818 # check COUNT(*) success:    1
92819 # check MIN/MAX(f_int1) success:    1
92820 # check MIN/MAX(f_int2) success:    1
92821 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
92822 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
92823 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
92824 WHERE f_int1 IN (2,3);
92825 # check prerequisites-3 success:    1
92826 DELETE FROM t1 WHERE f_charbig = 'delete me';
92827 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
92828 # check read via f_int1 success: 1
92829 # check read via f_int2 success: 1
92830         
92831 # check multiple-1 success:     1
92832 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
92833         
92834 # check multiple-2 success:     1
92835 INSERT INTO t1 SELECT * FROM t0_template
92836 WHERE MOD(f_int1,3) = 0;
92837         
92838 # check multiple-3 success:     1
92839 UPDATE t1 SET f_int1 = f_int1 + @max_row
92840 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
92841 AND @max_row_div2 + @max_row_div4;
92842         
92843 # check multiple-4 success:     1
92844 DELETE FROM t1
92845 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
92846 AND @max_row_div2 + @max_row_div4 + @max_row;
92847         
92848 # check multiple-5 success:     1
92849 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
92850 INSERT INTO t1
92851 SET f_int1 = @cur_value , f_int2 = @cur_value,
92852 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
92853 f_charbig = '#SINGLE#';
92854         
92855 # check single-1 success:       1
92856 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
92857 INSERT INTO t1
92858 SET f_int1 = @cur_value , f_int2 = @cur_value,
92859 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
92860 f_charbig = '#SINGLE#';
92861         
92862 # check single-2 success:       1
92863 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
92864 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
92865 UPDATE t1 SET f_int1 = @cur_value2
92866 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
92867         
92868 # check single-3 success:       1
92869 SET @cur_value1= -1;
92870 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
92871 UPDATE t1 SET f_int1 = @cur_value1
92872 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
92873         
92874 # check single-4 success:       1
92875 SELECT MAX(f_int1) INTO @cur_value FROM t1;
92876 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
92877         
92878 # check single-5 success:       1
92879 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
92880         
92881 # check single-6 success:       1
92882 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
92883         
92884 # check single-7 success:       1
92885 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
92886 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
92887 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
92888 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
92889 f_charbig = '#NULL#';
92890 INSERT INTO t1
92891 SET f_int1 = NULL , f_int2 = -@max_row,
92892 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
92893 f_charbig = '#NULL#';
92894 # check null success:    1
92895         
92896 # check null-1 success:         1
92897 UPDATE t1 SET f_int1 = -@max_row
92898 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
92899 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
92900         
92901 # check null-2 success:         1
92902 UPDATE t1 SET f_int1 = NULL
92903 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
92904 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
92905         
92906 # check null-3 success:         1
92907 DELETE FROM t1
92908 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
92909 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
92910         
92911 # check null-4 success:         1
92912 DELETE FROM t1
92913 WHERE f_int1 = 0 AND f_int2 = 0
92914 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
92915 AND f_charbig = '#NULL#';
92916 SET AUTOCOMMIT= 0;
92917 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
92918 SELECT f_int1, f_int1, '', '', 'was inserted'
92919 FROM t0_template source_tab
92920 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
92921         
92922 # check transactions-1 success:         1
92923 COMMIT WORK;
92924         
92925 # check transactions-2 success:         1
92926 ROLLBACK WORK;
92927         
92928 # check transactions-3 success:         1
92929 DELETE FROM t1 WHERE f_charbig = 'was inserted';
92930 COMMIT WORK;
92931 ROLLBACK WORK;
92932         
92933 # check transactions-4 success:         1
92934 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
92935 SELECT f_int1, f_int1, '', '', 'was inserted'
92936 FROM t0_template source_tab
92937 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
92938         
92939 # check transactions-5 success:         1
92940 ROLLBACK WORK;
92941 Warnings:
92942 Warning 1196    Some non-transactional changed tables couldn't be rolled back
92943         
92944 # check transactions-6 success:         1
92945 # INFO: Storage engine used for t1 seems to be not transactional.
92946 COMMIT;
92947         
92948 # check transactions-7 success:         1
92949 DELETE FROM t1 WHERE f_charbig = 'was inserted';
92950 COMMIT WORK;
92951 SET @@session.sql_mode = 'traditional';
92952 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
92953 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
92954 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
92955 '', '', 'was inserted' FROM t0_template
92956 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
92957 ERROR 22012: Division by 0
92958 COMMIT;
92959         
92960 # check transactions-8 success:         1
92961 # INFO: Storage engine used for t1 seems to be unable to revert
92962 #       changes made by the failing statement.
92963 SET @@session.sql_mode = '';
92964 SET AUTOCOMMIT= 1;
92965 DELETE FROM t1 WHERE f_charbig = 'was inserted';
92966 COMMIT WORK;
92967 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
92968         
92969 # check special-1 success:      1
92970 UPDATE t1 SET f_charbig = '';
92971         
92972 # check special-2 success:      1
92973 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
92974 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
92975 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
92976 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92977 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92978 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
92979 'just inserted' FROM t0_template
92980 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92981 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
92982 BEGIN
92983 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
92984 f_charbig = 'updated by trigger'
92985       WHERE f_int1 = new.f_int1;
92986 END|
92987 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
92988 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
92989 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92990         
92991 # check trigger-1 success:      1
92992 DROP TRIGGER trg_1;
92993 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
92994 f_int2 = CAST(f_char1 AS SIGNED INT),
92995 f_charbig = 'just inserted'
92996    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
92997 DELETE FROM t0_aux
92998 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
92999 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93000 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93001 'just inserted' FROM t0_template
93002 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93003 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
93004 BEGIN
93005 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93006 f_charbig = 'updated by trigger'
93007       WHERE f_int1 = new.f_int1;
93008 END|
93009 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93010 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
93011 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93012         
93013 # check trigger-2 success:      1
93014 DROP TRIGGER trg_1;
93015 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93016 f_int2 = CAST(f_char1 AS SIGNED INT),
93017 f_charbig = 'just inserted'
93018    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93019 DELETE FROM t0_aux
93020 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93021 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93022 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93023 'just inserted' FROM t0_template
93024 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93025 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
93026 BEGIN
93027 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93028 f_charbig = 'updated by trigger'
93029       WHERE f_int1 = new.f_int1;
93030 END|
93031 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
93032 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
93033         
93034 # check trigger-3 success:      1
93035 DROP TRIGGER trg_1;
93036 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93037 f_int2 = CAST(f_char1 AS SIGNED INT),
93038 f_charbig = 'just inserted'
93039    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93040 DELETE FROM t0_aux
93041 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93042 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93043 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93044 'just inserted' FROM t0_template
93045 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93046 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
93047 BEGIN
93048 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93049 f_charbig = 'updated by trigger'
93050       WHERE f_int1 = - old.f_int1;
93051 END|
93052 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
93053 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
93054         
93055 # check trigger-4 success:      1
93056 DROP TRIGGER trg_1;
93057 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93058 f_int2 = CAST(f_char1 AS SIGNED INT),
93059 f_charbig = 'just inserted'
93060    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93061 DELETE FROM t0_aux
93062 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93063 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93064 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93065 'just inserted' FROM t0_template
93066 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93067 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
93068 BEGIN
93069 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93070 f_charbig = 'updated by trigger'
93071       WHERE f_int1 = new.f_int1;
93072 END|
93073 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
93074 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
93075         
93076 # check trigger-5 success:      1
93077 DROP TRIGGER trg_1;
93078 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93079 f_int2 = CAST(f_char1 AS SIGNED INT),
93080 f_charbig = 'just inserted'
93081    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93082 DELETE FROM t0_aux
93083 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93084 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93085 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93086 'just inserted' FROM t0_template
93087 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93088 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
93089 BEGIN
93090 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93091 f_charbig = 'updated by trigger'
93092       WHERE f_int1 = - old.f_int1;
93093 END|
93094 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
93095 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
93096         
93097 # check trigger-6 success:      1
93098 DROP TRIGGER trg_1;
93099 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93100 f_int2 = CAST(f_char1 AS SIGNED INT),
93101 f_charbig = 'just inserted'
93102    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93103 DELETE FROM t0_aux
93104 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93105 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93106 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93107 'just inserted' FROM t0_template
93108 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93109 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
93110 BEGIN
93111 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93112 f_charbig = 'updated by trigger'
93113       WHERE f_int1 = - old.f_int1;
93114 END|
93115 DELETE FROM t0_aux
93116 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
93117         
93118 # check trigger-7 success:      1
93119 DROP TRIGGER trg_1;
93120 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93121 f_int2 = CAST(f_char1 AS SIGNED INT),
93122 f_charbig = 'just inserted'
93123    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93124 DELETE FROM t0_aux
93125 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93126 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93127 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93128 'just inserted' FROM t0_template
93129 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93130 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
93131 BEGIN
93132 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93133 f_charbig = 'updated by trigger'
93134       WHERE f_int1 = - old.f_int1;
93135 END|
93136 DELETE FROM t0_aux
93137 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
93138         
93139 # check trigger-8 success:      1
93140 DROP TRIGGER trg_1;
93141 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93142 f_int2 = CAST(f_char1 AS SIGNED INT),
93143 f_charbig = 'just inserted'
93144    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93145 DELETE FROM t0_aux
93146 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93147 DELETE FROM t1
93148 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93149 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
93150 BEGIN
93151 SET new.f_int1 = old.f_int1 + @max_row,
93152 new.f_int2 = old.f_int2 - @max_row,
93153 new.f_charbig = '####updated per update trigger####';
93154 END|
93155 UPDATE t1
93156 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
93157 f_charbig = '####updated per update statement itself####';
93158         
93159 # check trigger-9 success:      1
93160 DROP TRIGGER trg_2;
93161 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93162 f_int2 = CAST(f_char1 AS SIGNED INT),
93163 f_charbig = CONCAT('===',f_char1,'===');
93164 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
93165 BEGIN
93166 SET new.f_int1 = new.f_int1 + @max_row,
93167 new.f_int2 = new.f_int2 - @max_row,
93168 new.f_charbig = '####updated per update trigger####';
93169 END|
93170 UPDATE t1
93171 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
93172 f_charbig = '####updated per update statement itself####';
93173         
93174 # check trigger-10 success:     1
93175 DROP TRIGGER trg_2;
93176 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93177 f_int2 = CAST(f_char1 AS SIGNED INT),
93178 f_charbig = CONCAT('===',f_char1,'===');
93179 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
93180 BEGIN
93181 SET new.f_int1 = @my_max1 + @counter,
93182 new.f_int2 = @my_min2 - @counter,
93183 new.f_charbig = '####updated per insert trigger####';
93184 SET @counter = @counter + 1;
93185 END|
93186 SET @counter = 1;
93187 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
93188 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
93189 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
93190 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
93191 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
93192 ORDER BY f_int1;
93193 DROP TRIGGER trg_3;
93194         
93195 # check trigger-11 success:     1
93196 DELETE FROM t1
93197 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
93198 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
93199 AND f_charbig = '####updated per insert trigger####';
93200 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
93201 BEGIN
93202 SET new.f_int1 = @my_max1 + @counter,
93203 new.f_int2 = @my_min2 - @counter,
93204 new.f_charbig = '####updated per insert trigger####';
93205 SET @counter = @counter + 1;
93206 END|
93207 SET @counter = 1;
93208 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
93209 INSERT INTO t1 (f_char1, f_char2, f_charbig)
93210 SELECT CAST(f_int1 AS CHAR),
93211 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
93212 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
93213 ORDER BY f_int1;
93214 DROP TRIGGER trg_3;
93215         
93216 # check trigger-12 success:     1
93217 DELETE FROM t1
93218 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
93219 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
93220 AND f_charbig = '####updated per insert trigger####';
93221 ANALYZE  TABLE t1;
93222 Table   Op      Msg_type        Msg_text
93223 test.t1 analyze status  OK
93224 CHECK    TABLE t1 EXTENDED;
93225 Table   Op      Msg_type        Msg_text
93226 test.t1 check   status  OK
93227 CHECKSUM TABLE t1 EXTENDED;
93228 Table   Checksum
93229 test.t1 <some_value>
93230 OPTIMIZE TABLE t1;
93231 Table   Op      Msg_type        Msg_text
93232 test.t1 optimize        status  OK
93233 # check layout success:    1
93234 REPAIR   TABLE t1 EXTENDED;
93235 Table   Op      Msg_type        Msg_text
93236 test.t1 repair  status  OK
93237 # check layout success:    1
93238 TRUNCATE t1;
93239         
93240 # check TRUNCATE success:       1
93241 # check layout success:    1
93242 # End usability test (inc/partition_check.inc)
93243 DROP TABLE t1;
93244 CREATE TABLE t1 (
93245 f_int1 INTEGER,
93246 f_int2 INTEGER,
93247 f_char1 CHAR(20),
93248 f_char2 CHAR(20),
93249 f_charbig VARCHAR(1000)
93252 PARTITION BY LIST(ABS(MOD(f_int1,2)))
93253 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
93254 (PARTITION part_1 VALUES IN (0),
93255  PARTITION part_2 VALUES IN (1),
93256  PARTITION part_3 VALUES IN (NULL));
93257 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
93258 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
93259 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
93260 ALTER TABLE t1 REMOVE PARTITIONING;
93261 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
93262 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
93263 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
93264 # Start usability test (inc/partition_check.inc)
93265 create_command
93266 SHOW CREATE TABLE t1;
93267 Table   Create Table
93268 t1      CREATE TABLE `t1` (
93269   `f_int1` int(11) DEFAULT NULL,
93270   `f_int2` int(11) DEFAULT NULL,
93271   `f_char1` char(20) DEFAULT NULL,
93272   `f_char2` char(20) DEFAULT NULL,
93273   `f_charbig` varchar(1000) DEFAULT NULL
93274 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
93276 unified filelist
93277 t1.MYD
93278 t1.MYI
93279 t1.frm
93281 # check prerequisites-1 success:    1
93282 # check COUNT(*) success:    1
93283 # check MIN/MAX(f_int1) success:    1
93284 # check MIN/MAX(f_int2) success:    1
93285 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
93286 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
93287 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
93288 WHERE f_int1 IN (2,3);
93289 # check prerequisites-3 success:    1
93290 DELETE FROM t1 WHERE f_charbig = 'delete me';
93291 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
93292 # check read via f_int1 success: 1
93293 # check read via f_int2 success: 1
93294         
93295 # check multiple-1 success:     1
93296 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
93297         
93298 # check multiple-2 success:     1
93299 INSERT INTO t1 SELECT * FROM t0_template
93300 WHERE MOD(f_int1,3) = 0;
93301         
93302 # check multiple-3 success:     1
93303 UPDATE t1 SET f_int1 = f_int1 + @max_row
93304 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
93305 AND @max_row_div2 + @max_row_div4;
93306         
93307 # check multiple-4 success:     1
93308 DELETE FROM t1
93309 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
93310 AND @max_row_div2 + @max_row_div4 + @max_row;
93311         
93312 # check multiple-5 success:     1
93313 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
93314 INSERT INTO t1
93315 SET f_int1 = @cur_value , f_int2 = @cur_value,
93316 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
93317 f_charbig = '#SINGLE#';
93318         
93319 # check single-1 success:       1
93320 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
93321 INSERT INTO t1
93322 SET f_int1 = @cur_value , f_int2 = @cur_value,
93323 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
93324 f_charbig = '#SINGLE#';
93325         
93326 # check single-2 success:       1
93327 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
93328 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
93329 UPDATE t1 SET f_int1 = @cur_value2
93330 WHERE  f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
93331         
93332 # check single-3 success:       1
93333 SET @cur_value1= -1;
93334 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
93335 UPDATE t1 SET f_int1 = @cur_value1
93336 WHERE  f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
93337         
93338 # check single-4 success:       1
93339 SELECT MAX(f_int1) INTO @cur_value FROM t1;
93340 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
93341         
93342 # check single-5 success:       1
93343 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
93344         
93345 # check single-6 success:       1
93346 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
93347         
93348 # check single-7 success:       1
93349 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
93350 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
93351 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
93352 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
93353 f_charbig = '#NULL#';
93354 INSERT INTO t1
93355 SET f_int1 = NULL , f_int2 = -@max_row,
93356 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
93357 f_charbig = '#NULL#';
93358 # check null success:    1
93359         
93360 # check null-1 success:         1
93361 UPDATE t1 SET f_int1 = -@max_row
93362 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
93363 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
93364         
93365 # check null-2 success:         1
93366 UPDATE t1 SET f_int1 = NULL
93367 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
93368 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
93369         
93370 # check null-3 success:         1
93371 DELETE FROM t1
93372 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
93373 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
93374         
93375 # check null-4 success:         1
93376 DELETE FROM t1
93377 WHERE f_int1 = 0 AND f_int2 = 0
93378 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
93379 AND f_charbig = '#NULL#';
93380 SET AUTOCOMMIT= 0;
93381 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
93382 SELECT f_int1, f_int1, '', '', 'was inserted'
93383 FROM t0_template source_tab
93384 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
93385         
93386 # check transactions-1 success:         1
93387 COMMIT WORK;
93388         
93389 # check transactions-2 success:         1
93390 ROLLBACK WORK;
93391         
93392 # check transactions-3 success:         1
93393 DELETE FROM t1 WHERE f_charbig = 'was inserted';
93394 COMMIT WORK;
93395 ROLLBACK WORK;
93396         
93397 # check transactions-4 success:         1
93398 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
93399 SELECT f_int1, f_int1, '', '', 'was inserted'
93400 FROM t0_template source_tab
93401 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
93402         
93403 # check transactions-5 success:         1
93404 ROLLBACK WORK;
93405 Warnings:
93406 Warning 1196    Some non-transactional changed tables couldn't be rolled back
93407         
93408 # check transactions-6 success:         1
93409 # INFO: Storage engine used for t1 seems to be not transactional.
93410 COMMIT;
93411         
93412 # check transactions-7 success:         1
93413 DELETE FROM t1 WHERE f_charbig = 'was inserted';
93414 COMMIT WORK;
93415 SET @@session.sql_mode = 'traditional';
93416 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
93417 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
93418 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
93419 '', '', 'was inserted' FROM t0_template
93420 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
93421 ERROR 22012: Division by 0
93422 COMMIT;
93423         
93424 # check transactions-8 success:         1
93425 # INFO: Storage engine used for t1 seems to be unable to revert
93426 #       changes made by the failing statement.
93427 SET @@session.sql_mode = '';
93428 SET AUTOCOMMIT= 1;
93429 DELETE FROM t1 WHERE f_charbig = 'was inserted';
93430 COMMIT WORK;
93431 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
93432         
93433 # check special-1 success:      1
93434 UPDATE t1 SET f_charbig = '';
93435         
93436 # check special-2 success:      1
93437 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
93438 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
93439 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
93440 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93441 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93442 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93443 'just inserted' FROM t0_template
93444 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93445 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
93446 BEGIN
93447 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93448 f_charbig = 'updated by trigger'
93449       WHERE f_int1 = new.f_int1;
93450 END|
93451 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93452 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
93453 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93454         
93455 # check trigger-1 success:      1
93456 DROP TRIGGER trg_1;
93457 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93458 f_int2 = CAST(f_char1 AS SIGNED INT),
93459 f_charbig = 'just inserted'
93460    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93461 DELETE FROM t0_aux
93462 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93463 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93464 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93465 'just inserted' FROM t0_template
93466 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93467 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
93468 BEGIN
93469 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93470 f_charbig = 'updated by trigger'
93471       WHERE f_int1 = new.f_int1;
93472 END|
93473 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93474 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
93475 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93476         
93477 # check trigger-2 success:      1
93478 DROP TRIGGER trg_1;
93479 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93480 f_int2 = CAST(f_char1 AS SIGNED INT),
93481 f_charbig = 'just inserted'
93482    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93483 DELETE FROM t0_aux
93484 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93485 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93486 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93487 'just inserted' FROM t0_template
93488 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93489 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
93490 BEGIN
93491 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93492 f_charbig = 'updated by trigger'
93493       WHERE f_int1 = new.f_int1;
93494 END|
93495 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
93496 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
93497         
93498 # check trigger-3 success:      1
93499 DROP TRIGGER trg_1;
93500 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93501 f_int2 = CAST(f_char1 AS SIGNED INT),
93502 f_charbig = 'just inserted'
93503    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93504 DELETE FROM t0_aux
93505 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93506 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93507 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93508 'just inserted' FROM t0_template
93509 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93510 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
93511 BEGIN
93512 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93513 f_charbig = 'updated by trigger'
93514       WHERE f_int1 = - old.f_int1;
93515 END|
93516 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
93517 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
93518         
93519 # check trigger-4 success:      1
93520 DROP TRIGGER trg_1;
93521 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93522 f_int2 = CAST(f_char1 AS SIGNED INT),
93523 f_charbig = 'just inserted'
93524    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93525 DELETE FROM t0_aux
93526 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93527 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93528 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93529 'just inserted' FROM t0_template
93530 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93531 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
93532 BEGIN
93533 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93534 f_charbig = 'updated by trigger'
93535       WHERE f_int1 = new.f_int1;
93536 END|
93537 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
93538 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
93539         
93540 # check trigger-5 success:      1
93541 DROP TRIGGER trg_1;
93542 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93543 f_int2 = CAST(f_char1 AS SIGNED INT),
93544 f_charbig = 'just inserted'
93545    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93546 DELETE FROM t0_aux
93547 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93548 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93549 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93550 'just inserted' FROM t0_template
93551 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93552 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
93553 BEGIN
93554 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93555 f_charbig = 'updated by trigger'
93556       WHERE f_int1 = - old.f_int1;
93557 END|
93558 UPDATE t0_aux SET f_int1 =  - f_int1, f_int2 = - f_int2
93559 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
93560         
93561 # check trigger-6 success:      1
93562 DROP TRIGGER trg_1;
93563 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93564 f_int2 = CAST(f_char1 AS SIGNED INT),
93565 f_charbig = 'just inserted'
93566    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93567 DELETE FROM t0_aux
93568 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93569 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93570 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93571 'just inserted' FROM t0_template
93572 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93573 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
93574 BEGIN
93575 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93576 f_charbig = 'updated by trigger'
93577       WHERE f_int1 = - old.f_int1;
93578 END|
93579 DELETE FROM t0_aux
93580 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
93581         
93582 # check trigger-7 success:      1
93583 DROP TRIGGER trg_1;
93584 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93585 f_int2 = CAST(f_char1 AS SIGNED INT),
93586 f_charbig = 'just inserted'
93587    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93588 DELETE FROM t0_aux
93589 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93590 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
93591 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
93592 'just inserted' FROM t0_template
93593 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93594 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
93595 BEGIN
93596 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
93597 f_charbig = 'updated by trigger'
93598       WHERE f_int1 = - old.f_int1;
93599 END|
93600 DELETE FROM t0_aux
93601 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
93602         
93603 # check trigger-8 success:      1
93604 DROP TRIGGER trg_1;
93605 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93606 f_int2 = CAST(f_char1 AS SIGNED INT),
93607 f_charbig = 'just inserted'
93608    WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
93609 DELETE FROM t0_aux
93610 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93611 DELETE FROM t1
93612 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
93613 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
93614 BEGIN
93615 SET new.f_int1 = old.f_int1 + @max_row,
93616 new.f_int2 = old.f_int2 - @max_row,
93617 new.f_charbig = '####updated per update trigger####';
93618 END|
93619 UPDATE t1
93620 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
93621 f_charbig = '####updated per update statement itself####';
93622         
93623 # check trigger-9 success:      1
93624 DROP TRIGGER trg_2;
93625 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93626 f_int2 = CAST(f_char1 AS SIGNED INT),
93627 f_charbig = CONCAT('===',f_char1,'===');
93628 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
93629 BEGIN
93630 SET new.f_int1 = new.f_int1 + @max_row,
93631 new.f_int2 = new.f_int2 - @max_row,
93632 new.f_charbig = '####updated per update trigger####';
93633 END|
93634 UPDATE t1
93635 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
93636 f_charbig = '####updated per update statement itself####';
93637         
93638 # check trigger-10 success:     1
93639 DROP TRIGGER trg_2;
93640 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
93641 f_int2 = CAST(f_char1 AS SIGNED INT),
93642 f_charbig = CONCAT('===',f_char1,'===');
93643 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
93644 BEGIN
93645 SET new.f_int1 = @my_max1 + @counter,
93646 new.f_int2 = @my_min2 - @counter,
93647 new.f_charbig = '####updated per insert trigger####';
93648 SET @counter = @counter + 1;
93649 END|
93650 SET @counter = 1;
93651 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
93652 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
93653 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
93654 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
93655 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
93656 ORDER BY f_int1;
93657 DROP TRIGGER trg_3;
93658         
93659 # check trigger-11 success:     1
93660 DELETE FROM t1
93661 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
93662 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
93663 AND f_charbig = '####updated per insert trigger####';
93664 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
93665 BEGIN
93666 SET new.f_int1 = @my_max1 + @counter,
93667 new.f_int2 = @my_min2 - @counter,
93668 new.f_charbig = '####updated per insert trigger####';
93669 SET @counter = @counter + 1;
93670 END|
93671 SET @counter = 1;
93672 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
93673 INSERT INTO t1 (f_char1, f_char2, f_charbig)
93674 SELECT CAST(f_int1 AS CHAR),
93675 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
93676 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
93677 ORDER BY f_int1;
93678 DROP TRIGGER trg_3;
93679         
93680 # check trigger-12 success:     1
93681 DELETE FROM t1
93682 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
93683 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
93684 AND f_charbig = '####updated per insert trigger####';
93685 ANALYZE  TABLE t1;
93686 Table   Op      Msg_type        Msg_text
93687 test.t1 analyze status  OK
93688 CHECK    TABLE t1 EXTENDED;
93689 Table   Op      Msg_type        Msg_text
93690 test.t1 check   status  OK
93691 CHECKSUM TABLE t1 EXTENDED;
93692 Table   Checksum
93693 test.t1 <some_value>
93694 OPTIMIZE TABLE t1;
93695 Table   Op      Msg_type        Msg_text
93696 test.t1 optimize        status  OK
93697 # check layout success:    1
93698 REPAIR   TABLE t1 EXTENDED;
93699 Table   Op      Msg_type        Msg_text
93700 test.t1 repair  status  OK
93701 # check layout success:    1
93702 TRUNCATE t1;
93703         
93704 # check TRUNCATE success:       1
93705 # check layout success:    1
93706 # End usability test (inc/partition_check.inc)
93707 DROP TABLE t1;
93708 DROP VIEW  IF EXISTS v1;
93709 DROP TABLE IF EXISTS t1;
93710 DROP TABLE IF EXISTS t0_aux;
93711 DROP TABLE IF EXISTS t0_definition;
93712 DROP TABLE IF EXISTS t0_template;