2 SET @@session.storage_engine = 'InnoDB';
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 (
18 f_charbig VARCHAR(1000) ,
21 # Logging of <max_row> INSERTs into t0_template suppressed
22 DROP TABLE IF EXISTS t0_definition;
23 CREATE TABLE t0_definition (
25 create_command VARBINARY(5000),
26 file_list VARBINARY(10000),
29 DROP TABLE IF EXISTS t0_aux;
30 CREATE TABLE t0_aux ( f_int1 INTEGER,
34 f_charbig VARCHAR(1000) )
37 SET @@session.sql_mode= '';
38 # End of basic preparations needed for all tests
39 #-----------------------------------------------
41 #========================================================================
42 # 2 Decrease the size of the column used in the partitioning
43 # function and/or PRIMARY KEY and/or UNIQUE INDEX
44 #========================================================================
45 #------------------------------------------------------------------------
46 # 2.1 ALTER column f_int2 not used in partitioning function
47 #------------------------------------------------------------------------
48 # 2.1.1 no PRIMARY KEY or UNIQUE INDEX exists
49 DROP TABLE IF EXISTS t1;
55 f_charbig VARCHAR(1000)
58 PARTITION BY HASH(f_int1) PARTITIONS 2;
59 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
60 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
61 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
62 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
63 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
64 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
65 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
66 # Start usability test (inc/partition_check.inc)
70 t1 CREATE TABLE `t1` (
71 `f_int1` int(11) DEFAULT NULL,
72 `f_int2` mediumint(9) DEFAULT NULL,
73 `f_char1` char(20) DEFAULT NULL,
74 `f_char2` char(20) DEFAULT NULL,
75 `f_charbig` varchar(1000) DEFAULT NULL
76 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
77 /*!50100 PARTITION BY HASH (f_int1)
80 # check prerequisites-1 success: 1
81 # check COUNT(*) success: 1
82 # check MIN/MAX(f_int1) success: 1
83 # check MIN/MAX(f_int2) success: 1
84 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
85 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
86 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
87 WHERE f_int1 IN (2,3);
88 # check prerequisites-3 success: 1
89 DELETE FROM t1 WHERE f_charbig = 'delete me';
90 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
91 # check read via f_int1 success: 1
92 # check read via f_int2 success: 1
94 # check multiple-1 success: 1
95 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
97 # check multiple-2 success: 1
98 INSERT INTO t1 SELECT * FROM t0_template
99 WHERE MOD(f_int1,3) = 0;
101 # check multiple-3 success: 1
102 UPDATE t1 SET f_int1 = f_int1 + @max_row
103 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
104 AND @max_row_div2 + @max_row_div4;
106 # check multiple-4 success: 1
108 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
109 AND @max_row_div2 + @max_row_div4 + @max_row;
111 # check multiple-5 success: 1
112 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
114 SET f_int1 = @cur_value , f_int2 = @cur_value,
115 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
116 f_charbig = '#SINGLE#';
118 # check single-1 success: 1
119 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
121 SET f_int1 = @cur_value , f_int2 = @cur_value,
122 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
123 f_charbig = '#SINGLE#';
125 # check single-2 success: 1
126 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
127 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
128 UPDATE t1 SET f_int1 = @cur_value2
129 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
131 # check single-3 success: 1
133 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
134 UPDATE t1 SET f_int1 = @cur_value1
135 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
137 # check single-4 success: 1
138 SELECT MAX(f_int1) INTO @cur_value FROM t1;
139 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
141 # check single-5 success: 1
142 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
144 # check single-6 success: 1
145 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
147 Warning 1264 Out of range value for column 'f_int2' at row 1
149 # check single-7 success: 1
150 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
151 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
152 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
153 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
154 f_charbig = '#NULL#';
156 SET f_int1 = NULL , f_int2 = -@max_row,
157 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
158 f_charbig = '#NULL#';
159 # check null success: 1
161 # check null-1 success: 1
162 UPDATE t1 SET f_int1 = -@max_row
163 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
164 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
166 # check null-2 success: 1
167 UPDATE t1 SET f_int1 = NULL
168 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
169 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
171 # check null-3 success: 1
173 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
174 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
176 # check null-4 success: 1
178 WHERE f_int1 = 0 AND f_int2 = 0
179 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
180 AND f_charbig = '#NULL#';
182 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
183 SELECT f_int1, f_int1, '', '', 'was inserted'
184 FROM t0_template source_tab
185 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
187 # check transactions-1 success: 1
190 # check transactions-2 success: 1
193 # check transactions-3 success: 1
194 DELETE FROM t1 WHERE f_charbig = 'was inserted';
198 # check transactions-4 success: 1
199 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
200 SELECT f_int1, f_int1, '', '', 'was inserted'
201 FROM t0_template source_tab
202 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
204 # check transactions-5 success: 1
207 # check transactions-6 success: 1
208 # INFO: Storage engine used for t1 seems to be transactional.
211 # check transactions-7 success: 1
212 DELETE FROM t1 WHERE f_charbig = 'was inserted';
214 SET @@session.sql_mode = 'traditional';
215 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
216 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
217 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
218 '', '', 'was inserted' FROM t0_template
219 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
220 ERROR 22012: Division by 0
223 # check transactions-8 success: 1
224 # INFO: Storage engine used for t1 seems to be able to revert
225 # changes made by the failing statement.
226 SET @@session.sql_mode = '';
228 DELETE FROM t1 WHERE f_charbig = 'was inserted';
230 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
232 # check special-1 success: 1
233 UPDATE t1 SET f_charbig = '';
235 # check special-2 success: 1
236 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
237 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
238 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
239 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
240 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
241 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
242 'just inserted' FROM t0_template
243 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
244 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
246 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
247 f_charbig = 'updated by trigger'
248 WHERE f_int1 = new.f_int1;
250 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
251 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
252 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
254 # check trigger-1 success: 1
256 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
257 f_int2 = CAST(f_char1 AS SIGNED INT),
258 f_charbig = 'just inserted'
259 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
261 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
262 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
263 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
264 'just inserted' FROM t0_template
265 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
266 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
268 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
269 f_charbig = 'updated by trigger'
270 WHERE f_int1 = new.f_int1;
272 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
273 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
274 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
276 # check trigger-2 success: 1
278 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
279 f_int2 = CAST(f_char1 AS SIGNED INT),
280 f_charbig = 'just inserted'
281 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
283 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
284 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
285 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
286 'just inserted' FROM t0_template
287 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
288 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
290 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
291 f_charbig = 'updated by trigger'
292 WHERE f_int1 = new.f_int1;
294 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
295 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
297 # check trigger-3 success: 1
299 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
300 f_int2 = CAST(f_char1 AS SIGNED INT),
301 f_charbig = 'just inserted'
302 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
304 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
305 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
306 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
307 'just inserted' FROM t0_template
308 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
309 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
311 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
312 f_charbig = 'updated by trigger'
313 WHERE f_int1 = - old.f_int1;
315 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
316 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
318 # check trigger-4 success: 1
320 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
321 f_int2 = CAST(f_char1 AS SIGNED INT),
322 f_charbig = 'just inserted'
323 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
325 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
326 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
327 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
328 'just inserted' FROM t0_template
329 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
330 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
332 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
333 f_charbig = 'updated by trigger'
334 WHERE f_int1 = new.f_int1;
336 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
337 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
339 # check trigger-5 success: 1
341 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
342 f_int2 = CAST(f_char1 AS SIGNED INT),
343 f_charbig = 'just inserted'
344 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
346 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
347 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
348 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
349 'just inserted' FROM t0_template
350 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
351 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
353 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
354 f_charbig = 'updated by trigger'
355 WHERE f_int1 = - old.f_int1;
357 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
358 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
360 # check trigger-6 success: 1
362 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
363 f_int2 = CAST(f_char1 AS SIGNED INT),
364 f_charbig = 'just inserted'
365 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
367 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
368 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
369 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
370 'just inserted' FROM t0_template
371 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
372 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
374 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
375 f_charbig = 'updated by trigger'
376 WHERE f_int1 = - old.f_int1;
379 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
381 # check trigger-7 success: 1
383 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
384 f_int2 = CAST(f_char1 AS SIGNED INT),
385 f_charbig = 'just inserted'
386 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
388 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
389 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
390 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
391 'just inserted' FROM t0_template
392 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
393 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
395 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
396 f_charbig = 'updated by trigger'
397 WHERE f_int1 = - old.f_int1;
400 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
402 # check trigger-8 success: 1
404 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
405 f_int2 = CAST(f_char1 AS SIGNED INT),
406 f_charbig = 'just inserted'
407 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
409 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
411 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
412 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
414 SET new.f_int1 = old.f_int1 + @max_row,
415 new.f_int2 = old.f_int2 - @max_row,
416 new.f_charbig = '####updated per update trigger####';
419 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
420 f_charbig = '####updated per update statement itself####';
422 # check trigger-9 success: 1
424 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
425 f_int2 = CAST(f_char1 AS SIGNED INT),
426 f_charbig = CONCAT('===',f_char1,'===');
427 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
429 SET new.f_int1 = new.f_int1 + @max_row,
430 new.f_int2 = new.f_int2 - @max_row,
431 new.f_charbig = '####updated per update trigger####';
434 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
435 f_charbig = '####updated per update statement itself####';
437 # check trigger-10 success: 1
439 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
440 f_int2 = CAST(f_char1 AS SIGNED INT),
441 f_charbig = CONCAT('===',f_char1,'===');
442 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
444 SET new.f_int1 = @my_max1 + @counter,
445 new.f_int2 = @my_min2 - @counter,
446 new.f_charbig = '####updated per insert trigger####';
447 SET @counter = @counter + 1;
450 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
451 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
452 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
453 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
454 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
458 # check trigger-11 success: 1
460 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
461 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
462 AND f_charbig = '####updated per insert trigger####';
463 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
465 SET new.f_int1 = @my_max1 + @counter,
466 new.f_int2 = @my_min2 - @counter,
467 new.f_charbig = '####updated per insert trigger####';
468 SET @counter = @counter + 1;
471 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
472 INSERT INTO t1 (f_char1, f_char2, f_charbig)
473 SELECT CAST(f_int1 AS CHAR),
474 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
475 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
479 # check trigger-12 success: 1
481 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
482 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
483 AND f_charbig = '####updated per insert trigger####';
485 Table Op Msg_type Msg_text
486 test.t1 analyze status OK
487 CHECK TABLE t1 EXTENDED;
488 Table Op Msg_type Msg_text
489 test.t1 check status OK
490 CHECKSUM TABLE t1 EXTENDED;
494 Table Op Msg_type Msg_text
495 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
496 test.t1 optimize status OK
497 # check layout success: 1
498 REPAIR TABLE t1 EXTENDED;
499 Table Op Msg_type Msg_text
500 test.t1 repair note The storage engine for the table doesn't support repair
501 # check layout success: 1
504 # check TRUNCATE success: 1
505 # check layout success: 1
506 # End usability test (inc/partition_check.inc)
513 f_charbig VARCHAR(1000)
516 PARTITION BY KEY(f_int1) PARTITIONS 5;
517 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
518 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
519 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
520 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
521 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
522 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
523 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
524 # Start usability test (inc/partition_check.inc)
526 SHOW CREATE TABLE t1;
528 t1 CREATE TABLE `t1` (
529 `f_int1` int(11) DEFAULT NULL,
530 `f_int2` mediumint(9) DEFAULT NULL,
531 `f_char1` char(20) DEFAULT NULL,
532 `f_char2` char(20) DEFAULT NULL,
533 `f_charbig` varchar(1000) DEFAULT NULL
534 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
535 /*!50100 PARTITION BY KEY (f_int1)
538 # check prerequisites-1 success: 1
539 # check COUNT(*) success: 1
540 # check MIN/MAX(f_int1) success: 1
541 # check MIN/MAX(f_int2) success: 1
542 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
543 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
544 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
545 WHERE f_int1 IN (2,3);
546 # check prerequisites-3 success: 1
547 DELETE FROM t1 WHERE f_charbig = 'delete me';
548 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
549 # check read via f_int1 success: 1
550 # check read via f_int2 success: 1
552 # check multiple-1 success: 1
553 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
555 # check multiple-2 success: 1
556 INSERT INTO t1 SELECT * FROM t0_template
557 WHERE MOD(f_int1,3) = 0;
559 # check multiple-3 success: 1
560 UPDATE t1 SET f_int1 = f_int1 + @max_row
561 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
562 AND @max_row_div2 + @max_row_div4;
564 # check multiple-4 success: 1
566 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
567 AND @max_row_div2 + @max_row_div4 + @max_row;
569 # check multiple-5 success: 1
570 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
572 SET f_int1 = @cur_value , f_int2 = @cur_value,
573 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
574 f_charbig = '#SINGLE#';
576 # check single-1 success: 1
577 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
579 SET f_int1 = @cur_value , f_int2 = @cur_value,
580 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
581 f_charbig = '#SINGLE#';
583 # check single-2 success: 1
584 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
585 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
586 UPDATE t1 SET f_int1 = @cur_value2
587 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
589 # check single-3 success: 1
591 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
592 UPDATE t1 SET f_int1 = @cur_value1
593 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
595 # check single-4 success: 1
596 SELECT MAX(f_int1) INTO @cur_value FROM t1;
597 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
599 # check single-5 success: 1
600 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
602 # check single-6 success: 1
603 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
605 Warning 1264 Out of range value for column 'f_int2' at row 1
607 # check single-7 success: 1
608 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
609 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
610 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
611 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
612 f_charbig = '#NULL#';
614 SET f_int1 = NULL , f_int2 = -@max_row,
615 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
616 f_charbig = '#NULL#';
617 # check null success: 1
619 # check null-1 success: 1
620 UPDATE t1 SET f_int1 = -@max_row
621 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
622 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
624 # check null-2 success: 1
625 UPDATE t1 SET f_int1 = NULL
626 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
627 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
629 # check null-3 success: 1
631 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
632 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
634 # check null-4 success: 1
636 WHERE f_int1 = 0 AND f_int2 = 0
637 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
638 AND f_charbig = '#NULL#';
640 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
641 SELECT f_int1, f_int1, '', '', 'was inserted'
642 FROM t0_template source_tab
643 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
645 # check transactions-1 success: 1
648 # check transactions-2 success: 1
651 # check transactions-3 success: 1
652 DELETE FROM t1 WHERE f_charbig = 'was inserted';
656 # check transactions-4 success: 1
657 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
658 SELECT f_int1, f_int1, '', '', 'was inserted'
659 FROM t0_template source_tab
660 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
662 # check transactions-5 success: 1
665 # check transactions-6 success: 1
666 # INFO: Storage engine used for t1 seems to be transactional.
669 # check transactions-7 success: 1
670 DELETE FROM t1 WHERE f_charbig = 'was inserted';
672 SET @@session.sql_mode = 'traditional';
673 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
674 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
675 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
676 '', '', 'was inserted' FROM t0_template
677 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
678 ERROR 22012: Division by 0
681 # check transactions-8 success: 1
682 # INFO: Storage engine used for t1 seems to be able to revert
683 # changes made by the failing statement.
684 SET @@session.sql_mode = '';
686 DELETE FROM t1 WHERE f_charbig = 'was inserted';
688 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
690 # check special-1 success: 1
691 UPDATE t1 SET f_charbig = '';
693 # check special-2 success: 1
694 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
695 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
696 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
697 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
698 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
699 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
700 'just inserted' FROM t0_template
701 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
702 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
704 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
705 f_charbig = 'updated by trigger'
706 WHERE f_int1 = new.f_int1;
708 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
709 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
710 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
712 # check trigger-1 success: 1
714 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
715 f_int2 = CAST(f_char1 AS SIGNED INT),
716 f_charbig = 'just inserted'
717 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
719 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
720 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
721 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
722 'just inserted' FROM t0_template
723 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
724 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
726 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
727 f_charbig = 'updated by trigger'
728 WHERE f_int1 = new.f_int1;
730 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
731 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
732 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
734 # check trigger-2 success: 1
736 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
737 f_int2 = CAST(f_char1 AS SIGNED INT),
738 f_charbig = 'just inserted'
739 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
741 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
742 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
743 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
744 'just inserted' FROM t0_template
745 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
746 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
748 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
749 f_charbig = 'updated by trigger'
750 WHERE f_int1 = new.f_int1;
752 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
753 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
755 # check trigger-3 success: 1
757 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
758 f_int2 = CAST(f_char1 AS SIGNED INT),
759 f_charbig = 'just inserted'
760 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
762 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
763 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
764 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
765 'just inserted' FROM t0_template
766 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
767 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
769 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
770 f_charbig = 'updated by trigger'
771 WHERE f_int1 = - old.f_int1;
773 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
774 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
776 # check trigger-4 success: 1
778 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
779 f_int2 = CAST(f_char1 AS SIGNED INT),
780 f_charbig = 'just inserted'
781 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
783 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
784 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
785 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
786 'just inserted' FROM t0_template
787 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
788 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
790 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
791 f_charbig = 'updated by trigger'
792 WHERE f_int1 = new.f_int1;
794 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
795 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
797 # check trigger-5 success: 1
799 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
800 f_int2 = CAST(f_char1 AS SIGNED INT),
801 f_charbig = 'just inserted'
802 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
804 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
805 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
806 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
807 'just inserted' FROM t0_template
808 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
809 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
811 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
812 f_charbig = 'updated by trigger'
813 WHERE f_int1 = - old.f_int1;
815 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
816 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
818 # check trigger-6 success: 1
820 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
821 f_int2 = CAST(f_char1 AS SIGNED INT),
822 f_charbig = 'just inserted'
823 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
825 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
826 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
827 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
828 'just inserted' FROM t0_template
829 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
830 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
832 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
833 f_charbig = 'updated by trigger'
834 WHERE f_int1 = - old.f_int1;
837 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
839 # check trigger-7 success: 1
841 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
842 f_int2 = CAST(f_char1 AS SIGNED INT),
843 f_charbig = 'just inserted'
844 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
846 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
847 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
848 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
849 'just inserted' FROM t0_template
850 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
851 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
853 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
854 f_charbig = 'updated by trigger'
855 WHERE f_int1 = - old.f_int1;
858 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
860 # check trigger-8 success: 1
862 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
863 f_int2 = CAST(f_char1 AS SIGNED INT),
864 f_charbig = 'just inserted'
865 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
867 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
869 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
870 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
872 SET new.f_int1 = old.f_int1 + @max_row,
873 new.f_int2 = old.f_int2 - @max_row,
874 new.f_charbig = '####updated per update trigger####';
877 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
878 f_charbig = '####updated per update statement itself####';
880 # check trigger-9 success: 1
882 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
883 f_int2 = CAST(f_char1 AS SIGNED INT),
884 f_charbig = CONCAT('===',f_char1,'===');
885 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
887 SET new.f_int1 = new.f_int1 + @max_row,
888 new.f_int2 = new.f_int2 - @max_row,
889 new.f_charbig = '####updated per update trigger####';
892 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
893 f_charbig = '####updated per update statement itself####';
895 # check trigger-10 success: 1
897 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
898 f_int2 = CAST(f_char1 AS SIGNED INT),
899 f_charbig = CONCAT('===',f_char1,'===');
900 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
902 SET new.f_int1 = @my_max1 + @counter,
903 new.f_int2 = @my_min2 - @counter,
904 new.f_charbig = '####updated per insert trigger####';
905 SET @counter = @counter + 1;
908 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
909 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
910 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
911 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
912 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
916 # check trigger-11 success: 1
918 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
919 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
920 AND f_charbig = '####updated per insert trigger####';
921 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
923 SET new.f_int1 = @my_max1 + @counter,
924 new.f_int2 = @my_min2 - @counter,
925 new.f_charbig = '####updated per insert trigger####';
926 SET @counter = @counter + 1;
929 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
930 INSERT INTO t1 (f_char1, f_char2, f_charbig)
931 SELECT CAST(f_int1 AS CHAR),
932 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
933 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
937 # check trigger-12 success: 1
939 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
940 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
941 AND f_charbig = '####updated per insert trigger####';
943 Table Op Msg_type Msg_text
944 test.t1 analyze status OK
945 CHECK TABLE t1 EXTENDED;
946 Table Op Msg_type Msg_text
947 test.t1 check status OK
948 CHECKSUM TABLE t1 EXTENDED;
952 Table Op Msg_type Msg_text
953 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
954 test.t1 optimize status OK
955 # check layout success: 1
956 REPAIR TABLE t1 EXTENDED;
957 Table Op Msg_type Msg_text
958 test.t1 repair note The storage engine for the table doesn't support repair
959 # check layout success: 1
962 # check TRUNCATE success: 1
963 # check layout success: 1
964 # End usability test (inc/partition_check.inc)
971 f_charbig VARCHAR(1000)
974 PARTITION BY LIST(MOD(f_int1,4))
975 (PARTITION part_3 VALUES IN (-3),
976 PARTITION part_2 VALUES IN (-2),
977 PARTITION part_1 VALUES IN (-1),
978 PARTITION part_N VALUES IN (NULL),
979 PARTITION part0 VALUES IN (0),
980 PARTITION part1 VALUES IN (1),
981 PARTITION part2 VALUES IN (2),
982 PARTITION part3 VALUES IN (3));
983 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
984 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
985 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
986 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
987 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
988 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
989 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
990 # Start usability test (inc/partition_check.inc)
992 SHOW CREATE TABLE t1;
994 t1 CREATE TABLE `t1` (
995 `f_int1` int(11) DEFAULT NULL,
996 `f_int2` mediumint(9) DEFAULT NULL,
997 `f_char1` char(20) DEFAULT NULL,
998 `f_char2` char(20) DEFAULT NULL,
999 `f_charbig` varchar(1000) DEFAULT NULL
1000 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
1001 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
1002 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
1003 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
1004 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
1005 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
1006 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
1007 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
1008 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
1009 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
1011 # check prerequisites-1 success: 1
1012 # check COUNT(*) success: 1
1013 # check MIN/MAX(f_int1) success: 1
1014 # check MIN/MAX(f_int2) success: 1
1015 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1016 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1017 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1018 WHERE f_int1 IN (2,3);
1019 # check prerequisites-3 success: 1
1020 DELETE FROM t1 WHERE f_charbig = 'delete me';
1021 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1022 # check read via f_int1 success: 1
1023 # check read via f_int2 success: 1
1025 # check multiple-1 success: 1
1026 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1028 # check multiple-2 success: 1
1029 INSERT INTO t1 SELECT * FROM t0_template
1030 WHERE MOD(f_int1,3) = 0;
1032 # check multiple-3 success: 1
1033 UPDATE t1 SET f_int1 = f_int1 + @max_row
1034 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1035 AND @max_row_div2 + @max_row_div4;
1037 # check multiple-4 success: 1
1039 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1040 AND @max_row_div2 + @max_row_div4 + @max_row;
1042 # check multiple-5 success: 1
1043 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1045 SET f_int1 = @cur_value , f_int2 = @cur_value,
1046 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1047 f_charbig = '#SINGLE#';
1049 # check single-1 success: 1
1050 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1052 SET f_int1 = @cur_value , f_int2 = @cur_value,
1053 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1054 f_charbig = '#SINGLE#';
1056 # check single-2 success: 1
1057 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1058 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1059 UPDATE t1 SET f_int1 = @cur_value2
1060 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1062 # check single-3 success: 1
1063 SET @cur_value1= -1;
1064 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1065 UPDATE t1 SET f_int1 = @cur_value1
1066 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1068 # check single-4 success: 1
1069 SELECT MAX(f_int1) INTO @cur_value FROM t1;
1070 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1072 # check single-5 success: 1
1073 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1075 # check single-6 success: 1
1076 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1078 Warning 1264 Out of range value for column 'f_int2' at row 1
1080 # check single-7 success: 1
1081 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1082 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1083 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1084 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1085 f_charbig = '#NULL#';
1087 SET f_int1 = NULL , f_int2 = -@max_row,
1088 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1089 f_charbig = '#NULL#';
1090 # check null success: 1
1092 # check null-1 success: 1
1093 UPDATE t1 SET f_int1 = -@max_row
1094 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1095 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1097 # check null-2 success: 1
1098 UPDATE t1 SET f_int1 = NULL
1099 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1100 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1102 # check null-3 success: 1
1104 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1105 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1107 # check null-4 success: 1
1109 WHERE f_int1 = 0 AND f_int2 = 0
1110 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1111 AND f_charbig = '#NULL#';
1113 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1114 SELECT f_int1, f_int1, '', '', 'was inserted'
1115 FROM t0_template source_tab
1116 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1118 # check transactions-1 success: 1
1121 # check transactions-2 success: 1
1124 # check transactions-3 success: 1
1125 DELETE FROM t1 WHERE f_charbig = 'was inserted';
1129 # check transactions-4 success: 1
1130 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1131 SELECT f_int1, f_int1, '', '', 'was inserted'
1132 FROM t0_template source_tab
1133 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1135 # check transactions-5 success: 1
1138 # check transactions-6 success: 1
1139 # INFO: Storage engine used for t1 seems to be transactional.
1142 # check transactions-7 success: 1
1143 DELETE FROM t1 WHERE f_charbig = 'was inserted';
1145 SET @@session.sql_mode = 'traditional';
1146 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1147 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1148 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1149 '', '', 'was inserted' FROM t0_template
1150 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1151 ERROR 22012: Division by 0
1154 # check transactions-8 success: 1
1155 # INFO: Storage engine used for t1 seems to be able to revert
1156 # changes made by the failing statement.
1157 SET @@session.sql_mode = '';
1159 DELETE FROM t1 WHERE f_charbig = 'was inserted';
1161 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1163 # check special-1 success: 1
1164 UPDATE t1 SET f_charbig = '';
1166 # check special-2 success: 1
1167 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1168 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1169 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1170 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1171 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1172 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1173 'just inserted' FROM t0_template
1174 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1175 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1177 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1178 f_charbig = 'updated by trigger'
1179 WHERE f_int1 = new.f_int1;
1181 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1182 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1183 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1185 # check trigger-1 success: 1
1187 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1188 f_int2 = CAST(f_char1 AS SIGNED INT),
1189 f_charbig = 'just inserted'
1190 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1192 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1193 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1194 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1195 'just inserted' FROM t0_template
1196 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1197 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1199 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1200 f_charbig = 'updated by trigger'
1201 WHERE f_int1 = new.f_int1;
1203 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1204 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1205 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1207 # check trigger-2 success: 1
1209 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1210 f_int2 = CAST(f_char1 AS SIGNED INT),
1211 f_charbig = 'just inserted'
1212 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1214 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1215 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1216 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1217 'just inserted' FROM t0_template
1218 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1219 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1221 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1222 f_charbig = 'updated by trigger'
1223 WHERE f_int1 = new.f_int1;
1225 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1226 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1228 # check trigger-3 success: 1
1230 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1231 f_int2 = CAST(f_char1 AS SIGNED INT),
1232 f_charbig = 'just inserted'
1233 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1235 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1236 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1237 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1238 'just inserted' FROM t0_template
1239 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1240 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1242 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1243 f_charbig = 'updated by trigger'
1244 WHERE f_int1 = - old.f_int1;
1246 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1247 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1249 # check trigger-4 success: 1
1251 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1252 f_int2 = CAST(f_char1 AS SIGNED INT),
1253 f_charbig = 'just inserted'
1254 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1256 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1257 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1258 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1259 'just inserted' FROM t0_template
1260 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1261 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1263 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1264 f_charbig = 'updated by trigger'
1265 WHERE f_int1 = new.f_int1;
1267 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1268 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1270 # check trigger-5 success: 1
1272 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1273 f_int2 = CAST(f_char1 AS SIGNED INT),
1274 f_charbig = 'just inserted'
1275 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1277 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1278 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1279 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1280 'just inserted' FROM t0_template
1281 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1282 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1284 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1285 f_charbig = 'updated by trigger'
1286 WHERE f_int1 = - old.f_int1;
1288 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1289 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1291 # check trigger-6 success: 1
1293 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1294 f_int2 = CAST(f_char1 AS SIGNED INT),
1295 f_charbig = 'just inserted'
1296 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1298 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1299 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1300 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1301 'just inserted' FROM t0_template
1302 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1303 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1305 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1306 f_charbig = 'updated by trigger'
1307 WHERE f_int1 = - old.f_int1;
1310 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1312 # check trigger-7 success: 1
1314 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1315 f_int2 = CAST(f_char1 AS SIGNED INT),
1316 f_charbig = 'just inserted'
1317 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1319 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1320 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1321 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1322 'just inserted' FROM t0_template
1323 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1324 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1326 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1327 f_charbig = 'updated by trigger'
1328 WHERE f_int1 = - old.f_int1;
1331 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1333 # check trigger-8 success: 1
1335 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1336 f_int2 = CAST(f_char1 AS SIGNED INT),
1337 f_charbig = 'just inserted'
1338 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1340 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1342 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1343 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1345 SET new.f_int1 = old.f_int1 + @max_row,
1346 new.f_int2 = old.f_int2 - @max_row,
1347 new.f_charbig = '####updated per update trigger####';
1350 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1351 f_charbig = '####updated per update statement itself####';
1353 # check trigger-9 success: 1
1355 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1356 f_int2 = CAST(f_char1 AS SIGNED INT),
1357 f_charbig = CONCAT('===',f_char1,'===');
1358 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1360 SET new.f_int1 = new.f_int1 + @max_row,
1361 new.f_int2 = new.f_int2 - @max_row,
1362 new.f_charbig = '####updated per update trigger####';
1365 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1366 f_charbig = '####updated per update statement itself####';
1368 # check trigger-10 success: 1
1370 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1371 f_int2 = CAST(f_char1 AS SIGNED INT),
1372 f_charbig = CONCAT('===',f_char1,'===');
1373 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1375 SET new.f_int1 = @my_max1 + @counter,
1376 new.f_int2 = @my_min2 - @counter,
1377 new.f_charbig = '####updated per insert trigger####';
1378 SET @counter = @counter + 1;
1381 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1382 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1383 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1384 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1385 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1389 # check trigger-11 success: 1
1391 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1392 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1393 AND f_charbig = '####updated per insert trigger####';
1394 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1396 SET new.f_int1 = @my_max1 + @counter,
1397 new.f_int2 = @my_min2 - @counter,
1398 new.f_charbig = '####updated per insert trigger####';
1399 SET @counter = @counter + 1;
1402 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1403 INSERT INTO t1 (f_char1, f_char2, f_charbig)
1404 SELECT CAST(f_int1 AS CHAR),
1405 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1406 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1410 # check trigger-12 success: 1
1412 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1413 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1414 AND f_charbig = '####updated per insert trigger####';
1416 Table Op Msg_type Msg_text
1417 test.t1 analyze status OK
1418 CHECK TABLE t1 EXTENDED;
1419 Table Op Msg_type Msg_text
1420 test.t1 check status OK
1421 CHECKSUM TABLE t1 EXTENDED;
1423 test.t1 <some_value>
1425 Table Op Msg_type Msg_text
1426 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
1427 test.t1 optimize status OK
1428 # check layout success: 1
1429 REPAIR TABLE t1 EXTENDED;
1430 Table Op Msg_type Msg_text
1431 test.t1 repair note The storage engine for the table doesn't support repair
1432 # check layout success: 1
1435 # check TRUNCATE success: 1
1436 # check layout success: 1
1437 # End usability test (inc/partition_check.inc)
1444 f_charbig VARCHAR(1000)
1447 PARTITION BY RANGE(f_int1)
1448 (PARTITION parta VALUES LESS THAN (0),
1449 PARTITION partb VALUES LESS THAN (5),
1450 PARTITION partc VALUES LESS THAN (10),
1451 PARTITION partd VALUES LESS THAN (10 + 5),
1452 PARTITION parte VALUES LESS THAN (20),
1453 PARTITION partf VALUES LESS THAN (2147483646));
1454 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1455 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1456 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1457 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
1458 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1459 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1460 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1461 # Start usability test (inc/partition_check.inc)
1463 SHOW CREATE TABLE t1;
1465 t1 CREATE TABLE `t1` (
1466 `f_int1` int(11) DEFAULT NULL,
1467 `f_int2` mediumint(9) DEFAULT NULL,
1468 `f_char1` char(20) DEFAULT NULL,
1469 `f_char2` char(20) DEFAULT NULL,
1470 `f_charbig` varchar(1000) DEFAULT NULL
1471 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
1472 /*!50100 PARTITION BY RANGE (f_int1)
1473 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
1474 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
1475 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
1476 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
1477 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
1478 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
1480 # check prerequisites-1 success: 1
1481 # check COUNT(*) success: 1
1482 # check MIN/MAX(f_int1) success: 1
1483 # check MIN/MAX(f_int2) success: 1
1484 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1485 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1486 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1487 WHERE f_int1 IN (2,3);
1488 # check prerequisites-3 success: 1
1489 DELETE FROM t1 WHERE f_charbig = 'delete me';
1490 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1491 # check read via f_int1 success: 1
1492 # check read via f_int2 success: 1
1494 # check multiple-1 success: 1
1495 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1497 # check multiple-2 success: 1
1498 INSERT INTO t1 SELECT * FROM t0_template
1499 WHERE MOD(f_int1,3) = 0;
1501 # check multiple-3 success: 1
1502 UPDATE t1 SET f_int1 = f_int1 + @max_row
1503 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1504 AND @max_row_div2 + @max_row_div4;
1506 # check multiple-4 success: 1
1508 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1509 AND @max_row_div2 + @max_row_div4 + @max_row;
1511 # check multiple-5 success: 1
1512 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1514 SET f_int1 = @cur_value , f_int2 = @cur_value,
1515 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1516 f_charbig = '#SINGLE#';
1518 # check single-1 success: 1
1519 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1521 SET f_int1 = @cur_value , f_int2 = @cur_value,
1522 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1523 f_charbig = '#SINGLE#';
1525 # check single-2 success: 1
1526 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1527 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1528 UPDATE t1 SET f_int1 = @cur_value2
1529 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1531 # check single-3 success: 1
1532 SET @cur_value1= -1;
1533 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1534 UPDATE t1 SET f_int1 = @cur_value1
1535 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1537 # check single-4 success: 1
1538 SELECT MAX(f_int1) INTO @cur_value FROM t1;
1539 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1541 # check single-5 success: 1
1542 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1544 # check single-6 success: 1
1545 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1546 ERROR HY000: Table has no partition for value 2147483647
1547 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1548 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1549 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1550 f_charbig = '#NULL#';
1552 SET f_int1 = NULL , f_int2 = -@max_row,
1553 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1554 f_charbig = '#NULL#';
1555 # check null success: 1
1557 # check null-1 success: 1
1558 UPDATE t1 SET f_int1 = -@max_row
1559 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1560 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1562 # check null-2 success: 1
1563 UPDATE t1 SET f_int1 = NULL
1564 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1565 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1567 # check null-3 success: 1
1569 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1570 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1572 # check null-4 success: 1
1574 WHERE f_int1 = 0 AND f_int2 = 0
1575 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1576 AND f_charbig = '#NULL#';
1578 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1579 SELECT f_int1, f_int1, '', '', 'was inserted'
1580 FROM t0_template source_tab
1581 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1583 # check transactions-1 success: 1
1586 # check transactions-2 success: 1
1589 # check transactions-3 success: 1
1590 DELETE FROM t1 WHERE f_charbig = 'was inserted';
1594 # check transactions-4 success: 1
1595 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1596 SELECT f_int1, f_int1, '', '', 'was inserted'
1597 FROM t0_template source_tab
1598 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1600 # check transactions-5 success: 1
1603 # check transactions-6 success: 1
1604 # INFO: Storage engine used for t1 seems to be transactional.
1607 # check transactions-7 success: 1
1608 DELETE FROM t1 WHERE f_charbig = 'was inserted';
1610 SET @@session.sql_mode = 'traditional';
1611 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1612 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1613 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1614 '', '', 'was inserted' FROM t0_template
1615 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1616 ERROR 22012: Division by 0
1619 # check transactions-8 success: 1
1620 # INFO: Storage engine used for t1 seems to be able to revert
1621 # changes made by the failing statement.
1622 SET @@session.sql_mode = '';
1624 DELETE FROM t1 WHERE f_charbig = 'was inserted';
1626 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1628 # check special-1 success: 1
1629 UPDATE t1 SET f_charbig = '';
1631 # check special-2 success: 1
1632 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1633 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1634 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1635 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1636 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1637 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1638 'just inserted' FROM t0_template
1639 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1640 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1642 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1643 f_charbig = 'updated by trigger'
1644 WHERE f_int1 = new.f_int1;
1646 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1647 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1648 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1650 # check trigger-1 success: 1
1652 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1653 f_int2 = CAST(f_char1 AS SIGNED INT),
1654 f_charbig = 'just inserted'
1655 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1657 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1658 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1659 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1660 'just inserted' FROM t0_template
1661 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1662 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1664 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1665 f_charbig = 'updated by trigger'
1666 WHERE f_int1 = new.f_int1;
1668 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1669 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1670 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1672 # check trigger-2 success: 1
1674 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1675 f_int2 = CAST(f_char1 AS SIGNED INT),
1676 f_charbig = 'just inserted'
1677 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1679 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1680 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1681 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1682 'just inserted' FROM t0_template
1683 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1684 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1686 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1687 f_charbig = 'updated by trigger'
1688 WHERE f_int1 = new.f_int1;
1690 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1691 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1693 # check trigger-3 success: 1
1695 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1696 f_int2 = CAST(f_char1 AS SIGNED INT),
1697 f_charbig = 'just inserted'
1698 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1700 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1701 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1702 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1703 'just inserted' FROM t0_template
1704 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1705 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1707 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1708 f_charbig = 'updated by trigger'
1709 WHERE f_int1 = - old.f_int1;
1711 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1712 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1714 # check trigger-4 success: 1
1716 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1717 f_int2 = CAST(f_char1 AS SIGNED INT),
1718 f_charbig = 'just inserted'
1719 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1721 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1722 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1723 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1724 'just inserted' FROM t0_template
1725 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1726 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1728 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1729 f_charbig = 'updated by trigger'
1730 WHERE f_int1 = new.f_int1;
1732 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1733 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1735 # check trigger-5 success: 1
1737 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1738 f_int2 = CAST(f_char1 AS SIGNED INT),
1739 f_charbig = 'just inserted'
1740 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1742 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1743 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1744 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1745 'just inserted' FROM t0_template
1746 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1747 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1749 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1750 f_charbig = 'updated by trigger'
1751 WHERE f_int1 = - old.f_int1;
1753 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1754 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1756 # check trigger-6 success: 1
1758 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1759 f_int2 = CAST(f_char1 AS SIGNED INT),
1760 f_charbig = 'just inserted'
1761 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1763 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1764 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1765 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1766 'just inserted' FROM t0_template
1767 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1768 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1770 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1771 f_charbig = 'updated by trigger'
1772 WHERE f_int1 = - old.f_int1;
1775 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1777 # check trigger-7 success: 1
1779 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1780 f_int2 = CAST(f_char1 AS SIGNED INT),
1781 f_charbig = 'just inserted'
1782 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1784 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1785 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1786 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1787 'just inserted' FROM t0_template
1788 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1789 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1791 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1792 f_charbig = 'updated by trigger'
1793 WHERE f_int1 = - old.f_int1;
1796 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1798 # check trigger-8 success: 1
1800 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1801 f_int2 = CAST(f_char1 AS SIGNED INT),
1802 f_charbig = 'just inserted'
1803 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1805 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1807 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1808 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1810 SET new.f_int1 = old.f_int1 + @max_row,
1811 new.f_int2 = old.f_int2 - @max_row,
1812 new.f_charbig = '####updated per update trigger####';
1815 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1816 f_charbig = '####updated per update statement itself####';
1818 # check trigger-9 success: 1
1820 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1821 f_int2 = CAST(f_char1 AS SIGNED INT),
1822 f_charbig = CONCAT('===',f_char1,'===');
1823 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1825 SET new.f_int1 = new.f_int1 + @max_row,
1826 new.f_int2 = new.f_int2 - @max_row,
1827 new.f_charbig = '####updated per update trigger####';
1830 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1831 f_charbig = '####updated per update statement itself####';
1833 # check trigger-10 success: 1
1835 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1836 f_int2 = CAST(f_char1 AS SIGNED INT),
1837 f_charbig = CONCAT('===',f_char1,'===');
1838 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1840 SET new.f_int1 = @my_max1 + @counter,
1841 new.f_int2 = @my_min2 - @counter,
1842 new.f_charbig = '####updated per insert trigger####';
1843 SET @counter = @counter + 1;
1846 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1847 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1848 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1849 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1850 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1854 # check trigger-11 success: 1
1856 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1857 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1858 AND f_charbig = '####updated per insert trigger####';
1859 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1861 SET new.f_int1 = @my_max1 + @counter,
1862 new.f_int2 = @my_min2 - @counter,
1863 new.f_charbig = '####updated per insert trigger####';
1864 SET @counter = @counter + 1;
1867 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1868 INSERT INTO t1 (f_char1, f_char2, f_charbig)
1869 SELECT CAST(f_int1 AS CHAR),
1870 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1871 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1875 # check trigger-12 success: 1
1877 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1878 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1879 AND f_charbig = '####updated per insert trigger####';
1881 Table Op Msg_type Msg_text
1882 test.t1 analyze status OK
1883 CHECK TABLE t1 EXTENDED;
1884 Table Op Msg_type Msg_text
1885 test.t1 check status OK
1886 CHECKSUM TABLE t1 EXTENDED;
1888 test.t1 <some_value>
1890 Table Op Msg_type Msg_text
1891 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
1892 test.t1 optimize status OK
1893 # check layout success: 1
1894 REPAIR TABLE t1 EXTENDED;
1895 Table Op Msg_type Msg_text
1896 test.t1 repair note The storage engine for the table doesn't support repair
1897 # check layout success: 1
1900 # check TRUNCATE success: 1
1901 # check layout success: 1
1902 # End usability test (inc/partition_check.inc)
1909 f_charbig VARCHAR(1000)
1912 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
1913 (PARTITION parta VALUES LESS THAN (0),
1914 PARTITION partb VALUES LESS THAN (5),
1915 PARTITION partc VALUES LESS THAN (10),
1916 PARTITION partd VALUES LESS THAN (2147483646));
1917 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1918 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1919 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1920 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
1921 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1922 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1923 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1924 # Start usability test (inc/partition_check.inc)
1926 SHOW CREATE TABLE t1;
1928 t1 CREATE TABLE `t1` (
1929 `f_int1` int(11) DEFAULT NULL,
1930 `f_int2` mediumint(9) DEFAULT NULL,
1931 `f_char1` char(20) DEFAULT NULL,
1932 `f_char2` char(20) DEFAULT NULL,
1933 `f_charbig` varchar(1000) DEFAULT NULL
1934 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
1935 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
1936 SUBPARTITION BY HASH (f_int1)
1938 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
1939 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
1940 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
1941 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
1943 # check prerequisites-1 success: 1
1944 # check COUNT(*) success: 1
1945 # check MIN/MAX(f_int1) success: 1
1946 # check MIN/MAX(f_int2) success: 1
1947 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1948 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1949 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1950 WHERE f_int1 IN (2,3);
1951 # check prerequisites-3 success: 1
1952 DELETE FROM t1 WHERE f_charbig = 'delete me';
1953 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1954 # check read via f_int1 success: 1
1955 # check read via f_int2 success: 1
1957 # check multiple-1 success: 1
1958 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1960 # check multiple-2 success: 1
1961 INSERT INTO t1 SELECT * FROM t0_template
1962 WHERE MOD(f_int1,3) = 0;
1964 # check multiple-3 success: 1
1965 UPDATE t1 SET f_int1 = f_int1 + @max_row
1966 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1967 AND @max_row_div2 + @max_row_div4;
1969 # check multiple-4 success: 1
1971 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1972 AND @max_row_div2 + @max_row_div4 + @max_row;
1974 # check multiple-5 success: 1
1975 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1977 SET f_int1 = @cur_value , f_int2 = @cur_value,
1978 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1979 f_charbig = '#SINGLE#';
1981 # check single-1 success: 1
1982 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1984 SET f_int1 = @cur_value , f_int2 = @cur_value,
1985 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1986 f_charbig = '#SINGLE#';
1988 # check single-2 success: 1
1989 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1990 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1991 UPDATE t1 SET f_int1 = @cur_value2
1992 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1994 # check single-3 success: 1
1995 SET @cur_value1= -1;
1996 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1997 UPDATE t1 SET f_int1 = @cur_value1
1998 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2000 # check single-4 success: 1
2001 SELECT MAX(f_int1) INTO @cur_value FROM t1;
2002 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2004 # check single-5 success: 1
2005 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2007 # check single-6 success: 1
2008 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2010 Warning 1264 Out of range value for column 'f_int2' at row 1
2012 # check single-7 success: 1
2013 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
2014 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2015 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2016 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2017 f_charbig = '#NULL#';
2019 SET f_int1 = NULL , f_int2 = -@max_row,
2020 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2021 f_charbig = '#NULL#';
2022 # check null success: 1
2024 # check null-1 success: 1
2025 UPDATE t1 SET f_int1 = -@max_row
2026 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2027 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2029 # check null-2 success: 1
2030 UPDATE t1 SET f_int1 = NULL
2031 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2032 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2034 # check null-3 success: 1
2036 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2037 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2039 # check null-4 success: 1
2041 WHERE f_int1 = 0 AND f_int2 = 0
2042 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2043 AND f_charbig = '#NULL#';
2045 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2046 SELECT f_int1, f_int1, '', '', 'was inserted'
2047 FROM t0_template source_tab
2048 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2050 # check transactions-1 success: 1
2053 # check transactions-2 success: 1
2056 # check transactions-3 success: 1
2057 DELETE FROM t1 WHERE f_charbig = 'was inserted';
2061 # check transactions-4 success: 1
2062 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2063 SELECT f_int1, f_int1, '', '', 'was inserted'
2064 FROM t0_template source_tab
2065 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2067 # check transactions-5 success: 1
2070 # check transactions-6 success: 1
2071 # INFO: Storage engine used for t1 seems to be transactional.
2074 # check transactions-7 success: 1
2075 DELETE FROM t1 WHERE f_charbig = 'was inserted';
2077 SET @@session.sql_mode = 'traditional';
2078 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2079 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2080 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2081 '', '', 'was inserted' FROM t0_template
2082 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2083 ERROR 22012: Division by 0
2086 # check transactions-8 success: 1
2087 # INFO: Storage engine used for t1 seems to be able to revert
2088 # changes made by the failing statement.
2089 SET @@session.sql_mode = '';
2091 DELETE FROM t1 WHERE f_charbig = 'was inserted';
2093 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2095 # check special-1 success: 1
2096 UPDATE t1 SET f_charbig = '';
2098 # check special-2 success: 1
2099 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2100 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2101 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2102 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2103 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2104 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2105 'just inserted' FROM t0_template
2106 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2107 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2109 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2110 f_charbig = 'updated by trigger'
2111 WHERE f_int1 = new.f_int1;
2113 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2114 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2115 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2117 # check trigger-1 success: 1
2119 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2120 f_int2 = CAST(f_char1 AS SIGNED INT),
2121 f_charbig = 'just inserted'
2122 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2124 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2125 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2126 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2127 'just inserted' FROM t0_template
2128 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2129 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2131 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2132 f_charbig = 'updated by trigger'
2133 WHERE f_int1 = new.f_int1;
2135 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2136 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2137 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2139 # check trigger-2 success: 1
2141 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2142 f_int2 = CAST(f_char1 AS SIGNED INT),
2143 f_charbig = 'just inserted'
2144 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2146 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2147 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2148 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2149 'just inserted' FROM t0_template
2150 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2151 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2153 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2154 f_charbig = 'updated by trigger'
2155 WHERE f_int1 = new.f_int1;
2157 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2158 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2160 # check trigger-3 success: 1
2162 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2163 f_int2 = CAST(f_char1 AS SIGNED INT),
2164 f_charbig = 'just inserted'
2165 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2167 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2168 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2169 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2170 'just inserted' FROM t0_template
2171 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2172 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2174 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2175 f_charbig = 'updated by trigger'
2176 WHERE f_int1 = - old.f_int1;
2178 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2179 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2181 # check trigger-4 success: 1
2183 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2184 f_int2 = CAST(f_char1 AS SIGNED INT),
2185 f_charbig = 'just inserted'
2186 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2188 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2189 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2190 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2191 'just inserted' FROM t0_template
2192 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2193 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2195 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2196 f_charbig = 'updated by trigger'
2197 WHERE f_int1 = new.f_int1;
2199 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2200 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2202 # check trigger-5 success: 1
2204 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2205 f_int2 = CAST(f_char1 AS SIGNED INT),
2206 f_charbig = 'just inserted'
2207 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2209 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2210 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2211 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2212 'just inserted' FROM t0_template
2213 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2214 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2216 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2217 f_charbig = 'updated by trigger'
2218 WHERE f_int1 = - old.f_int1;
2220 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2221 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2223 # check trigger-6 success: 1
2225 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2226 f_int2 = CAST(f_char1 AS SIGNED INT),
2227 f_charbig = 'just inserted'
2228 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2230 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2231 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2232 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2233 'just inserted' FROM t0_template
2234 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2235 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2237 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2238 f_charbig = 'updated by trigger'
2239 WHERE f_int1 = - old.f_int1;
2242 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2244 # check trigger-7 success: 1
2246 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2247 f_int2 = CAST(f_char1 AS SIGNED INT),
2248 f_charbig = 'just inserted'
2249 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2251 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2252 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2253 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2254 'just inserted' FROM t0_template
2255 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2256 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2258 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2259 f_charbig = 'updated by trigger'
2260 WHERE f_int1 = - old.f_int1;
2263 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2265 # check trigger-8 success: 1
2267 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2268 f_int2 = CAST(f_char1 AS SIGNED INT),
2269 f_charbig = 'just inserted'
2270 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2272 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2274 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2275 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2277 SET new.f_int1 = old.f_int1 + @max_row,
2278 new.f_int2 = old.f_int2 - @max_row,
2279 new.f_charbig = '####updated per update trigger####';
2282 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2283 f_charbig = '####updated per update statement itself####';
2285 # check trigger-9 success: 1
2287 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2288 f_int2 = CAST(f_char1 AS SIGNED INT),
2289 f_charbig = CONCAT('===',f_char1,'===');
2290 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2292 SET new.f_int1 = new.f_int1 + @max_row,
2293 new.f_int2 = new.f_int2 - @max_row,
2294 new.f_charbig = '####updated per update trigger####';
2297 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2298 f_charbig = '####updated per update statement itself####';
2300 # check trigger-10 success: 1
2302 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2303 f_int2 = CAST(f_char1 AS SIGNED INT),
2304 f_charbig = CONCAT('===',f_char1,'===');
2305 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2307 SET new.f_int1 = @my_max1 + @counter,
2308 new.f_int2 = @my_min2 - @counter,
2309 new.f_charbig = '####updated per insert trigger####';
2310 SET @counter = @counter + 1;
2313 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2314 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2315 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2316 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2317 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2321 # check trigger-11 success: 1
2323 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2324 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2325 AND f_charbig = '####updated per insert trigger####';
2326 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2328 SET new.f_int1 = @my_max1 + @counter,
2329 new.f_int2 = @my_min2 - @counter,
2330 new.f_charbig = '####updated per insert trigger####';
2331 SET @counter = @counter + 1;
2334 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2335 INSERT INTO t1 (f_char1, f_char2, f_charbig)
2336 SELECT CAST(f_int1 AS CHAR),
2337 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2338 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2342 # check trigger-12 success: 1
2344 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2345 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2346 AND f_charbig = '####updated per insert trigger####';
2348 Table Op Msg_type Msg_text
2349 test.t1 analyze status OK
2350 CHECK TABLE t1 EXTENDED;
2351 Table Op Msg_type Msg_text
2352 test.t1 check status OK
2353 CHECKSUM TABLE t1 EXTENDED;
2355 test.t1 <some_value>
2357 Table Op Msg_type Msg_text
2358 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
2359 test.t1 optimize status OK
2360 # check layout success: 1
2361 REPAIR TABLE t1 EXTENDED;
2362 Table Op Msg_type Msg_text
2363 test.t1 repair note The storage engine for the table doesn't support repair
2364 # check layout success: 1
2367 # check TRUNCATE success: 1
2368 # check layout success: 1
2369 # End usability test (inc/partition_check.inc)
2376 f_charbig VARCHAR(1000)
2379 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
2380 (PARTITION part1 VALUES LESS THAN (0)
2381 (SUBPARTITION subpart11, SUBPARTITION subpart12),
2382 PARTITION part2 VALUES LESS THAN (5)
2383 (SUBPARTITION subpart21, SUBPARTITION subpart22),
2384 PARTITION part3 VALUES LESS THAN (10)
2385 (SUBPARTITION subpart31, SUBPARTITION subpart32),
2386 PARTITION part4 VALUES LESS THAN (2147483646)
2387 (SUBPARTITION subpart41, SUBPARTITION subpart42));
2388 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2389 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2390 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2391 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
2392 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2393 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2394 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2395 # Start usability test (inc/partition_check.inc)
2397 SHOW CREATE TABLE t1;
2399 t1 CREATE TABLE `t1` (
2400 `f_int1` int(11) DEFAULT NULL,
2401 `f_int2` mediumint(9) DEFAULT NULL,
2402 `f_char1` char(20) DEFAULT NULL,
2403 `f_char2` char(20) DEFAULT NULL,
2404 `f_charbig` varchar(1000) DEFAULT NULL
2405 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
2406 /*!50100 PARTITION BY RANGE (f_int1)
2407 SUBPARTITION BY KEY (f_int1)
2408 (PARTITION part1 VALUES LESS THAN (0)
2409 (SUBPARTITION subpart11 ENGINE = InnoDB,
2410 SUBPARTITION subpart12 ENGINE = InnoDB),
2411 PARTITION part2 VALUES LESS THAN (5)
2412 (SUBPARTITION subpart21 ENGINE = InnoDB,
2413 SUBPARTITION subpart22 ENGINE = InnoDB),
2414 PARTITION part3 VALUES LESS THAN (10)
2415 (SUBPARTITION subpart31 ENGINE = InnoDB,
2416 SUBPARTITION subpart32 ENGINE = InnoDB),
2417 PARTITION part4 VALUES LESS THAN (2147483646)
2418 (SUBPARTITION subpart41 ENGINE = InnoDB,
2419 SUBPARTITION subpart42 ENGINE = InnoDB)) */
2421 # check prerequisites-1 success: 1
2422 # check COUNT(*) success: 1
2423 # check MIN/MAX(f_int1) success: 1
2424 # check MIN/MAX(f_int2) success: 1
2425 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2426 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2427 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2428 WHERE f_int1 IN (2,3);
2429 # check prerequisites-3 success: 1
2430 DELETE FROM t1 WHERE f_charbig = 'delete me';
2431 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2432 # check read via f_int1 success: 1
2433 # check read via f_int2 success: 1
2435 # check multiple-1 success: 1
2436 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2438 # check multiple-2 success: 1
2439 INSERT INTO t1 SELECT * FROM t0_template
2440 WHERE MOD(f_int1,3) = 0;
2442 # check multiple-3 success: 1
2443 UPDATE t1 SET f_int1 = f_int1 + @max_row
2444 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2445 AND @max_row_div2 + @max_row_div4;
2447 # check multiple-4 success: 1
2449 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2450 AND @max_row_div2 + @max_row_div4 + @max_row;
2452 # check multiple-5 success: 1
2453 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2455 SET f_int1 = @cur_value , f_int2 = @cur_value,
2456 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2457 f_charbig = '#SINGLE#';
2459 # check single-1 success: 1
2460 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2462 SET f_int1 = @cur_value , f_int2 = @cur_value,
2463 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2464 f_charbig = '#SINGLE#';
2466 # check single-2 success: 1
2467 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2468 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2469 UPDATE t1 SET f_int1 = @cur_value2
2470 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2472 # check single-3 success: 1
2473 SET @cur_value1= -1;
2474 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2475 UPDATE t1 SET f_int1 = @cur_value1
2476 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2478 # check single-4 success: 1
2479 SELECT MAX(f_int1) INTO @cur_value FROM t1;
2480 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2482 # check single-5 success: 1
2483 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2485 # check single-6 success: 1
2486 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2487 ERROR HY000: Table has no partition for value 2147483647
2488 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2489 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2490 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2491 f_charbig = '#NULL#';
2493 SET f_int1 = NULL , f_int2 = -@max_row,
2494 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2495 f_charbig = '#NULL#';
2496 # check null success: 1
2498 # check null-1 success: 1
2499 UPDATE t1 SET f_int1 = -@max_row
2500 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2501 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2503 # check null-2 success: 1
2504 UPDATE t1 SET f_int1 = NULL
2505 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2506 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2508 # check null-3 success: 1
2510 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2511 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2513 # check null-4 success: 1
2515 WHERE f_int1 = 0 AND f_int2 = 0
2516 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2517 AND f_charbig = '#NULL#';
2519 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2520 SELECT f_int1, f_int1, '', '', 'was inserted'
2521 FROM t0_template source_tab
2522 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2524 # check transactions-1 success: 1
2527 # check transactions-2 success: 1
2530 # check transactions-3 success: 1
2531 DELETE FROM t1 WHERE f_charbig = 'was inserted';
2535 # check transactions-4 success: 1
2536 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2537 SELECT f_int1, f_int1, '', '', 'was inserted'
2538 FROM t0_template source_tab
2539 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2541 # check transactions-5 success: 1
2544 # check transactions-6 success: 1
2545 # INFO: Storage engine used for t1 seems to be transactional.
2548 # check transactions-7 success: 1
2549 DELETE FROM t1 WHERE f_charbig = 'was inserted';
2551 SET @@session.sql_mode = 'traditional';
2552 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2553 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2554 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2555 '', '', 'was inserted' FROM t0_template
2556 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2557 ERROR 22012: Division by 0
2560 # check transactions-8 success: 1
2561 # INFO: Storage engine used for t1 seems to be able to revert
2562 # changes made by the failing statement.
2563 SET @@session.sql_mode = '';
2565 DELETE FROM t1 WHERE f_charbig = 'was inserted';
2567 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2569 # check special-1 success: 1
2570 UPDATE t1 SET f_charbig = '';
2572 # check special-2 success: 1
2573 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2574 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2575 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2576 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2577 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2578 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2579 'just inserted' FROM t0_template
2580 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2581 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2583 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2584 f_charbig = 'updated by trigger'
2585 WHERE f_int1 = new.f_int1;
2587 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2588 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2589 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2591 # check trigger-1 success: 1
2593 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2594 f_int2 = CAST(f_char1 AS SIGNED INT),
2595 f_charbig = 'just inserted'
2596 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2598 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2599 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2600 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2601 'just inserted' FROM t0_template
2602 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2603 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2605 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2606 f_charbig = 'updated by trigger'
2607 WHERE f_int1 = new.f_int1;
2609 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2610 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2611 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2613 # check trigger-2 success: 1
2615 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2616 f_int2 = CAST(f_char1 AS SIGNED INT),
2617 f_charbig = 'just inserted'
2618 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2620 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2621 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2622 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2623 'just inserted' FROM t0_template
2624 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2625 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2627 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2628 f_charbig = 'updated by trigger'
2629 WHERE f_int1 = new.f_int1;
2631 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2632 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2634 # check trigger-3 success: 1
2636 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2637 f_int2 = CAST(f_char1 AS SIGNED INT),
2638 f_charbig = 'just inserted'
2639 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2641 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2642 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2643 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2644 'just inserted' FROM t0_template
2645 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2646 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2648 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2649 f_charbig = 'updated by trigger'
2650 WHERE f_int1 = - old.f_int1;
2652 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2653 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2655 # check trigger-4 success: 1
2657 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2658 f_int2 = CAST(f_char1 AS SIGNED INT),
2659 f_charbig = 'just inserted'
2660 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2662 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2663 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2664 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2665 'just inserted' FROM t0_template
2666 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2667 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2669 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2670 f_charbig = 'updated by trigger'
2671 WHERE f_int1 = new.f_int1;
2673 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2674 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2676 # check trigger-5 success: 1
2678 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2679 f_int2 = CAST(f_char1 AS SIGNED INT),
2680 f_charbig = 'just inserted'
2681 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2683 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2684 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2685 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2686 'just inserted' FROM t0_template
2687 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2688 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2690 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2691 f_charbig = 'updated by trigger'
2692 WHERE f_int1 = - old.f_int1;
2694 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2695 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2697 # check trigger-6 success: 1
2699 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2700 f_int2 = CAST(f_char1 AS SIGNED INT),
2701 f_charbig = 'just inserted'
2702 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2704 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2705 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2706 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2707 'just inserted' FROM t0_template
2708 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2709 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2711 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2712 f_charbig = 'updated by trigger'
2713 WHERE f_int1 = - old.f_int1;
2716 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2718 # check trigger-7 success: 1
2720 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2721 f_int2 = CAST(f_char1 AS SIGNED INT),
2722 f_charbig = 'just inserted'
2723 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2725 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2726 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2727 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2728 'just inserted' FROM t0_template
2729 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2730 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2732 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2733 f_charbig = 'updated by trigger'
2734 WHERE f_int1 = - old.f_int1;
2737 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2739 # check trigger-8 success: 1
2741 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2742 f_int2 = CAST(f_char1 AS SIGNED INT),
2743 f_charbig = 'just inserted'
2744 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2746 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2748 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2749 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2751 SET new.f_int1 = old.f_int1 + @max_row,
2752 new.f_int2 = old.f_int2 - @max_row,
2753 new.f_charbig = '####updated per update trigger####';
2756 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2757 f_charbig = '####updated per update statement itself####';
2759 # check trigger-9 success: 1
2761 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2762 f_int2 = CAST(f_char1 AS SIGNED INT),
2763 f_charbig = CONCAT('===',f_char1,'===');
2764 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2766 SET new.f_int1 = new.f_int1 + @max_row,
2767 new.f_int2 = new.f_int2 - @max_row,
2768 new.f_charbig = '####updated per update trigger####';
2771 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2772 f_charbig = '####updated per update statement itself####';
2774 # check trigger-10 success: 1
2776 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2777 f_int2 = CAST(f_char1 AS SIGNED INT),
2778 f_charbig = CONCAT('===',f_char1,'===');
2779 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2781 SET new.f_int1 = @my_max1 + @counter,
2782 new.f_int2 = @my_min2 - @counter,
2783 new.f_charbig = '####updated per insert trigger####';
2784 SET @counter = @counter + 1;
2787 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2788 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2789 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2790 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2791 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2795 # check trigger-11 success: 1
2797 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2798 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2799 AND f_charbig = '####updated per insert trigger####';
2800 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2802 SET new.f_int1 = @my_max1 + @counter,
2803 new.f_int2 = @my_min2 - @counter,
2804 new.f_charbig = '####updated per insert trigger####';
2805 SET @counter = @counter + 1;
2808 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2809 INSERT INTO t1 (f_char1, f_char2, f_charbig)
2810 SELECT CAST(f_int1 AS CHAR),
2811 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2812 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2816 # check trigger-12 success: 1
2818 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2819 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2820 AND f_charbig = '####updated per insert trigger####';
2822 Table Op Msg_type Msg_text
2823 test.t1 analyze status OK
2824 CHECK TABLE t1 EXTENDED;
2825 Table Op Msg_type Msg_text
2826 test.t1 check status OK
2827 CHECKSUM TABLE t1 EXTENDED;
2829 test.t1 <some_value>
2831 Table Op Msg_type Msg_text
2832 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
2833 test.t1 optimize status OK
2834 # check layout success: 1
2835 REPAIR TABLE t1 EXTENDED;
2836 Table Op Msg_type Msg_text
2837 test.t1 repair note The storage engine for the table doesn't support repair
2838 # check layout success: 1
2841 # check TRUNCATE success: 1
2842 # check layout success: 1
2843 # End usability test (inc/partition_check.inc)
2850 f_charbig VARCHAR(1000)
2853 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
2854 (PARTITION part1 VALUES IN (0)
2855 (SUBPARTITION sp11, SUBPARTITION sp12),
2856 PARTITION part2 VALUES IN (1)
2857 (SUBPARTITION sp21, SUBPARTITION sp22),
2858 PARTITION part3 VALUES IN (2)
2859 (SUBPARTITION sp31, SUBPARTITION sp32),
2860 PARTITION part4 VALUES IN (NULL)
2861 (SUBPARTITION sp41, SUBPARTITION sp42));
2862 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2863 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2864 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2865 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
2866 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2867 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2868 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2869 # Start usability test (inc/partition_check.inc)
2871 SHOW CREATE TABLE t1;
2873 t1 CREATE TABLE `t1` (
2874 `f_int1` int(11) DEFAULT NULL,
2875 `f_int2` mediumint(9) DEFAULT NULL,
2876 `f_char1` char(20) DEFAULT NULL,
2877 `f_char2` char(20) DEFAULT NULL,
2878 `f_charbig` varchar(1000) DEFAULT NULL
2879 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
2880 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
2881 SUBPARTITION BY HASH (f_int1 + 1)
2882 (PARTITION part1 VALUES IN (0)
2883 (SUBPARTITION sp11 ENGINE = InnoDB,
2884 SUBPARTITION sp12 ENGINE = InnoDB),
2885 PARTITION part2 VALUES IN (1)
2886 (SUBPARTITION sp21 ENGINE = InnoDB,
2887 SUBPARTITION sp22 ENGINE = InnoDB),
2888 PARTITION part3 VALUES IN (2)
2889 (SUBPARTITION sp31 ENGINE = InnoDB,
2890 SUBPARTITION sp32 ENGINE = InnoDB),
2891 PARTITION part4 VALUES IN (NULL)
2892 (SUBPARTITION sp41 ENGINE = InnoDB,
2893 SUBPARTITION sp42 ENGINE = InnoDB)) */
2895 # check prerequisites-1 success: 1
2896 # check COUNT(*) success: 1
2897 # check MIN/MAX(f_int1) success: 1
2898 # check MIN/MAX(f_int2) success: 1
2899 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2900 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2901 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2902 WHERE f_int1 IN (2,3);
2903 # check prerequisites-3 success: 1
2904 DELETE FROM t1 WHERE f_charbig = 'delete me';
2905 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2906 # check read via f_int1 success: 1
2907 # check read via f_int2 success: 1
2909 # check multiple-1 success: 1
2910 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2912 # check multiple-2 success: 1
2913 INSERT INTO t1 SELECT * FROM t0_template
2914 WHERE MOD(f_int1,3) = 0;
2916 # check multiple-3 success: 1
2917 UPDATE t1 SET f_int1 = f_int1 + @max_row
2918 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2919 AND @max_row_div2 + @max_row_div4;
2921 # check multiple-4 success: 1
2923 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2924 AND @max_row_div2 + @max_row_div4 + @max_row;
2926 # check multiple-5 success: 1
2927 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2929 SET f_int1 = @cur_value , f_int2 = @cur_value,
2930 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2931 f_charbig = '#SINGLE#';
2933 # check single-1 success: 1
2934 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2936 SET f_int1 = @cur_value , f_int2 = @cur_value,
2937 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2938 f_charbig = '#SINGLE#';
2940 # check single-2 success: 1
2941 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2942 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2943 UPDATE t1 SET f_int1 = @cur_value2
2944 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2946 # check single-3 success: 1
2947 SET @cur_value1= -1;
2948 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2949 UPDATE t1 SET f_int1 = @cur_value1
2950 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2952 # check single-4 success: 1
2953 SELECT MAX(f_int1) INTO @cur_value FROM t1;
2954 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2956 # check single-5 success: 1
2957 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2959 # check single-6 success: 1
2960 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2962 Warning 1264 Out of range value for column 'f_int2' at row 1
2964 # check single-7 success: 1
2965 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
2966 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2967 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2968 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2969 f_charbig = '#NULL#';
2971 SET f_int1 = NULL , f_int2 = -@max_row,
2972 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2973 f_charbig = '#NULL#';
2974 # check null success: 1
2976 # check null-1 success: 1
2977 UPDATE t1 SET f_int1 = -@max_row
2978 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2979 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2981 # check null-2 success: 1
2982 UPDATE t1 SET f_int1 = NULL
2983 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2984 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2986 # check null-3 success: 1
2988 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2989 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2991 # check null-4 success: 1
2993 WHERE f_int1 = 0 AND f_int2 = 0
2994 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2995 AND f_charbig = '#NULL#';
2997 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2998 SELECT f_int1, f_int1, '', '', 'was inserted'
2999 FROM t0_template source_tab
3000 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3002 # check transactions-1 success: 1
3005 # check transactions-2 success: 1
3008 # check transactions-3 success: 1
3009 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3013 # check transactions-4 success: 1
3014 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3015 SELECT f_int1, f_int1, '', '', 'was inserted'
3016 FROM t0_template source_tab
3017 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3019 # check transactions-5 success: 1
3022 # check transactions-6 success: 1
3023 # INFO: Storage engine used for t1 seems to be transactional.
3026 # check transactions-7 success: 1
3027 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3029 SET @@session.sql_mode = 'traditional';
3030 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3031 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3032 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3033 '', '', 'was inserted' FROM t0_template
3034 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3035 ERROR 22012: Division by 0
3038 # check transactions-8 success: 1
3039 # INFO: Storage engine used for t1 seems to be able to revert
3040 # changes made by the failing statement.
3041 SET @@session.sql_mode = '';
3043 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3045 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3047 # check special-1 success: 1
3048 UPDATE t1 SET f_charbig = '';
3050 # check special-2 success: 1
3051 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3052 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3053 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3054 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3055 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3056 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3057 'just inserted' FROM t0_template
3058 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3059 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3061 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3062 f_charbig = 'updated by trigger'
3063 WHERE f_int1 = new.f_int1;
3065 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3066 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3067 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3069 # check trigger-1 success: 1
3071 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3072 f_int2 = CAST(f_char1 AS SIGNED INT),
3073 f_charbig = 'just inserted'
3074 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3076 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3077 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3078 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3079 'just inserted' FROM t0_template
3080 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3081 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3083 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3084 f_charbig = 'updated by trigger'
3085 WHERE f_int1 = new.f_int1;
3087 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3088 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3089 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3091 # check trigger-2 success: 1
3093 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3094 f_int2 = CAST(f_char1 AS SIGNED INT),
3095 f_charbig = 'just inserted'
3096 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3098 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3099 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3100 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3101 'just inserted' FROM t0_template
3102 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3103 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3105 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3106 f_charbig = 'updated by trigger'
3107 WHERE f_int1 = new.f_int1;
3109 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3110 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3112 # check trigger-3 success: 1
3114 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3115 f_int2 = CAST(f_char1 AS SIGNED INT),
3116 f_charbig = 'just inserted'
3117 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3119 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3120 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3121 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3122 'just inserted' FROM t0_template
3123 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3124 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3126 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3127 f_charbig = 'updated by trigger'
3128 WHERE f_int1 = - old.f_int1;
3130 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3131 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3133 # check trigger-4 success: 1
3135 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3136 f_int2 = CAST(f_char1 AS SIGNED INT),
3137 f_charbig = 'just inserted'
3138 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3140 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3141 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3142 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3143 'just inserted' FROM t0_template
3144 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3145 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3147 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3148 f_charbig = 'updated by trigger'
3149 WHERE f_int1 = new.f_int1;
3151 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3152 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3154 # check trigger-5 success: 1
3156 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3157 f_int2 = CAST(f_char1 AS SIGNED INT),
3158 f_charbig = 'just inserted'
3159 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3161 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3162 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3163 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3164 'just inserted' FROM t0_template
3165 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3166 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3168 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3169 f_charbig = 'updated by trigger'
3170 WHERE f_int1 = - old.f_int1;
3172 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3173 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3175 # check trigger-6 success: 1
3177 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3178 f_int2 = CAST(f_char1 AS SIGNED INT),
3179 f_charbig = 'just inserted'
3180 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3182 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3183 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3184 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3185 'just inserted' FROM t0_template
3186 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3187 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3189 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3190 f_charbig = 'updated by trigger'
3191 WHERE f_int1 = - old.f_int1;
3194 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3196 # check trigger-7 success: 1
3198 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3199 f_int2 = CAST(f_char1 AS SIGNED INT),
3200 f_charbig = 'just inserted'
3201 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3203 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3204 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3205 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3206 'just inserted' FROM t0_template
3207 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3208 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3210 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3211 f_charbig = 'updated by trigger'
3212 WHERE f_int1 = - old.f_int1;
3215 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3217 # check trigger-8 success: 1
3219 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3220 f_int2 = CAST(f_char1 AS SIGNED INT),
3221 f_charbig = 'just inserted'
3222 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3224 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3226 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3227 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3229 SET new.f_int1 = old.f_int1 + @max_row,
3230 new.f_int2 = old.f_int2 - @max_row,
3231 new.f_charbig = '####updated per update trigger####';
3234 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3235 f_charbig = '####updated per update statement itself####';
3237 # check trigger-9 success: 1
3239 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3240 f_int2 = CAST(f_char1 AS SIGNED INT),
3241 f_charbig = CONCAT('===',f_char1,'===');
3242 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3244 SET new.f_int1 = new.f_int1 + @max_row,
3245 new.f_int2 = new.f_int2 - @max_row,
3246 new.f_charbig = '####updated per update trigger####';
3249 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3250 f_charbig = '####updated per update statement itself####';
3252 # check trigger-10 success: 1
3254 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3255 f_int2 = CAST(f_char1 AS SIGNED INT),
3256 f_charbig = CONCAT('===',f_char1,'===');
3257 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3259 SET new.f_int1 = @my_max1 + @counter,
3260 new.f_int2 = @my_min2 - @counter,
3261 new.f_charbig = '####updated per insert trigger####';
3262 SET @counter = @counter + 1;
3265 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3266 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3267 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3268 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3269 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3273 # check trigger-11 success: 1
3275 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3276 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3277 AND f_charbig = '####updated per insert trigger####';
3278 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3280 SET new.f_int1 = @my_max1 + @counter,
3281 new.f_int2 = @my_min2 - @counter,
3282 new.f_charbig = '####updated per insert trigger####';
3283 SET @counter = @counter + 1;
3286 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3287 INSERT INTO t1 (f_char1, f_char2, f_charbig)
3288 SELECT CAST(f_int1 AS CHAR),
3289 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3290 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3294 # check trigger-12 success: 1
3296 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3297 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3298 AND f_charbig = '####updated per insert trigger####';
3300 Table Op Msg_type Msg_text
3301 test.t1 analyze status OK
3302 CHECK TABLE t1 EXTENDED;
3303 Table Op Msg_type Msg_text
3304 test.t1 check status OK
3305 CHECKSUM TABLE t1 EXTENDED;
3307 test.t1 <some_value>
3309 Table Op Msg_type Msg_text
3310 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
3311 test.t1 optimize status OK
3312 # check layout success: 1
3313 REPAIR TABLE t1 EXTENDED;
3314 Table Op Msg_type Msg_text
3315 test.t1 repair note The storage engine for the table doesn't support repair
3316 # check layout success: 1
3319 # check TRUNCATE success: 1
3320 # check layout success: 1
3321 # End usability test (inc/partition_check.inc)
3328 f_charbig VARCHAR(1000)
3331 PARTITION BY LIST(ABS(MOD(f_int1,2)))
3332 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
3333 (PARTITION part1 VALUES IN (0),
3334 PARTITION part2 VALUES IN (1),
3335 PARTITION part3 VALUES IN (NULL));
3336 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3337 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3338 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3339 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
3340 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3341 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3342 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3343 # Start usability test (inc/partition_check.inc)
3345 SHOW CREATE TABLE t1;
3347 t1 CREATE TABLE `t1` (
3348 `f_int1` int(11) DEFAULT NULL,
3349 `f_int2` mediumint(9) DEFAULT NULL,
3350 `f_char1` char(20) DEFAULT NULL,
3351 `f_char2` char(20) DEFAULT NULL,
3352 `f_charbig` varchar(1000) DEFAULT NULL
3353 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
3354 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
3355 SUBPARTITION BY KEY (f_int1)
3357 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
3358 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
3359 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
3361 # check prerequisites-1 success: 1
3362 # check COUNT(*) success: 1
3363 # check MIN/MAX(f_int1) success: 1
3364 # check MIN/MAX(f_int2) success: 1
3365 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3366 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3367 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3368 WHERE f_int1 IN (2,3);
3369 # check prerequisites-3 success: 1
3370 DELETE FROM t1 WHERE f_charbig = 'delete me';
3371 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3372 # check read via f_int1 success: 1
3373 # check read via f_int2 success: 1
3375 # check multiple-1 success: 1
3376 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3378 # check multiple-2 success: 1
3379 INSERT INTO t1 SELECT * FROM t0_template
3380 WHERE MOD(f_int1,3) = 0;
3382 # check multiple-3 success: 1
3383 UPDATE t1 SET f_int1 = f_int1 + @max_row
3384 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3385 AND @max_row_div2 + @max_row_div4;
3387 # check multiple-4 success: 1
3389 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3390 AND @max_row_div2 + @max_row_div4 + @max_row;
3392 # check multiple-5 success: 1
3393 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3395 SET f_int1 = @cur_value , f_int2 = @cur_value,
3396 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3397 f_charbig = '#SINGLE#';
3399 # check single-1 success: 1
3400 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3402 SET f_int1 = @cur_value , f_int2 = @cur_value,
3403 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3404 f_charbig = '#SINGLE#';
3406 # check single-2 success: 1
3407 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3408 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3409 UPDATE t1 SET f_int1 = @cur_value2
3410 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3412 # check single-3 success: 1
3413 SET @cur_value1= -1;
3414 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3415 UPDATE t1 SET f_int1 = @cur_value1
3416 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3418 # check single-4 success: 1
3419 SELECT MAX(f_int1) INTO @cur_value FROM t1;
3420 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3422 # check single-5 success: 1
3423 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3425 # check single-6 success: 1
3426 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3428 Warning 1264 Out of range value for column 'f_int2' at row 1
3430 # check single-7 success: 1
3431 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3432 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3433 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3434 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3435 f_charbig = '#NULL#';
3437 SET f_int1 = NULL , f_int2 = -@max_row,
3438 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3439 f_charbig = '#NULL#';
3440 # check null success: 1
3442 # check null-1 success: 1
3443 UPDATE t1 SET f_int1 = -@max_row
3444 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3445 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3447 # check null-2 success: 1
3448 UPDATE t1 SET f_int1 = NULL
3449 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3450 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3452 # check null-3 success: 1
3454 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3455 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3457 # check null-4 success: 1
3459 WHERE f_int1 = 0 AND f_int2 = 0
3460 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3461 AND f_charbig = '#NULL#';
3463 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3464 SELECT f_int1, f_int1, '', '', 'was inserted'
3465 FROM t0_template source_tab
3466 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3468 # check transactions-1 success: 1
3471 # check transactions-2 success: 1
3474 # check transactions-3 success: 1
3475 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3479 # check transactions-4 success: 1
3480 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3481 SELECT f_int1, f_int1, '', '', 'was inserted'
3482 FROM t0_template source_tab
3483 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3485 # check transactions-5 success: 1
3488 # check transactions-6 success: 1
3489 # INFO: Storage engine used for t1 seems to be transactional.
3492 # check transactions-7 success: 1
3493 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3495 SET @@session.sql_mode = 'traditional';
3496 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3497 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3498 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3499 '', '', 'was inserted' FROM t0_template
3500 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3501 ERROR 22012: Division by 0
3504 # check transactions-8 success: 1
3505 # INFO: Storage engine used for t1 seems to be able to revert
3506 # changes made by the failing statement.
3507 SET @@session.sql_mode = '';
3509 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3511 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3513 # check special-1 success: 1
3514 UPDATE t1 SET f_charbig = '';
3516 # check special-2 success: 1
3517 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3518 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3519 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3520 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3521 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3522 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3523 'just inserted' FROM t0_template
3524 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3525 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3527 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3528 f_charbig = 'updated by trigger'
3529 WHERE f_int1 = new.f_int1;
3531 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3532 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3533 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3535 # check trigger-1 success: 1
3537 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3538 f_int2 = CAST(f_char1 AS SIGNED INT),
3539 f_charbig = 'just inserted'
3540 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3542 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3543 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3544 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3545 'just inserted' FROM t0_template
3546 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3547 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3549 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3550 f_charbig = 'updated by trigger'
3551 WHERE f_int1 = new.f_int1;
3553 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3554 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3555 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3557 # check trigger-2 success: 1
3559 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3560 f_int2 = CAST(f_char1 AS SIGNED INT),
3561 f_charbig = 'just inserted'
3562 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3564 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3565 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3566 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3567 'just inserted' FROM t0_template
3568 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3569 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3571 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3572 f_charbig = 'updated by trigger'
3573 WHERE f_int1 = new.f_int1;
3575 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3576 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3578 # check trigger-3 success: 1
3580 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3581 f_int2 = CAST(f_char1 AS SIGNED INT),
3582 f_charbig = 'just inserted'
3583 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3585 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3586 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3587 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3588 'just inserted' FROM t0_template
3589 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3590 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3592 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3593 f_charbig = 'updated by trigger'
3594 WHERE f_int1 = - old.f_int1;
3596 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3597 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3599 # check trigger-4 success: 1
3601 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3602 f_int2 = CAST(f_char1 AS SIGNED INT),
3603 f_charbig = 'just inserted'
3604 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3606 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3607 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3608 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3609 'just inserted' FROM t0_template
3610 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3611 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3613 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3614 f_charbig = 'updated by trigger'
3615 WHERE f_int1 = new.f_int1;
3617 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3618 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3620 # check trigger-5 success: 1
3622 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3623 f_int2 = CAST(f_char1 AS SIGNED INT),
3624 f_charbig = 'just inserted'
3625 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3627 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3628 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3629 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3630 'just inserted' FROM t0_template
3631 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3632 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3634 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3635 f_charbig = 'updated by trigger'
3636 WHERE f_int1 = - old.f_int1;
3638 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3639 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3641 # check trigger-6 success: 1
3643 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3644 f_int2 = CAST(f_char1 AS SIGNED INT),
3645 f_charbig = 'just inserted'
3646 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3648 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3649 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3650 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3651 'just inserted' FROM t0_template
3652 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3653 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3655 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3656 f_charbig = 'updated by trigger'
3657 WHERE f_int1 = - old.f_int1;
3660 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3662 # check trigger-7 success: 1
3664 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3665 f_int2 = CAST(f_char1 AS SIGNED INT),
3666 f_charbig = 'just inserted'
3667 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3669 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3670 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3671 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3672 'just inserted' FROM t0_template
3673 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3674 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3676 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3677 f_charbig = 'updated by trigger'
3678 WHERE f_int1 = - old.f_int1;
3681 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3683 # check trigger-8 success: 1
3685 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3686 f_int2 = CAST(f_char1 AS SIGNED INT),
3687 f_charbig = 'just inserted'
3688 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3690 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3692 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3693 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3695 SET new.f_int1 = old.f_int1 + @max_row,
3696 new.f_int2 = old.f_int2 - @max_row,
3697 new.f_charbig = '####updated per update trigger####';
3700 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3701 f_charbig = '####updated per update statement itself####';
3703 # check trigger-9 success: 1
3705 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3706 f_int2 = CAST(f_char1 AS SIGNED INT),
3707 f_charbig = CONCAT('===',f_char1,'===');
3708 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3710 SET new.f_int1 = new.f_int1 + @max_row,
3711 new.f_int2 = new.f_int2 - @max_row,
3712 new.f_charbig = '####updated per update trigger####';
3715 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3716 f_charbig = '####updated per update statement itself####';
3718 # check trigger-10 success: 1
3720 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3721 f_int2 = CAST(f_char1 AS SIGNED INT),
3722 f_charbig = CONCAT('===',f_char1,'===');
3723 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3725 SET new.f_int1 = @my_max1 + @counter,
3726 new.f_int2 = @my_min2 - @counter,
3727 new.f_charbig = '####updated per insert trigger####';
3728 SET @counter = @counter + 1;
3731 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3732 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3733 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3734 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3735 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3739 # check trigger-11 success: 1
3741 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3742 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3743 AND f_charbig = '####updated per insert trigger####';
3744 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3746 SET new.f_int1 = @my_max1 + @counter,
3747 new.f_int2 = @my_min2 - @counter,
3748 new.f_charbig = '####updated per insert trigger####';
3749 SET @counter = @counter + 1;
3752 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3753 INSERT INTO t1 (f_char1, f_char2, f_charbig)
3754 SELECT CAST(f_int1 AS CHAR),
3755 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3756 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3760 # check trigger-12 success: 1
3762 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3763 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3764 AND f_charbig = '####updated per insert trigger####';
3766 Table Op Msg_type Msg_text
3767 test.t1 analyze status OK
3768 CHECK TABLE t1 EXTENDED;
3769 Table Op Msg_type Msg_text
3770 test.t1 check status OK
3771 CHECKSUM TABLE t1 EXTENDED;
3773 test.t1 <some_value>
3775 Table Op Msg_type Msg_text
3776 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
3777 test.t1 optimize status OK
3778 # check layout success: 1
3779 REPAIR TABLE t1 EXTENDED;
3780 Table Op Msg_type Msg_text
3781 test.t1 repair note The storage engine for the table doesn't support repair
3782 # check layout success: 1
3785 # check TRUNCATE success: 1
3786 # check layout success: 1
3787 # End usability test (inc/partition_check.inc)
3789 DROP TABLE IF EXISTS t1;
3795 f_charbig VARCHAR(1000)
3796 , PRIMARY KEY (f_int1,f_int2)
3798 PARTITION BY HASH(f_int1) PARTITIONS 2;
3799 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3800 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3801 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3802 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
3803 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3804 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3805 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3806 # Start usability test (inc/partition_check.inc)
3808 SHOW CREATE TABLE t1;
3810 t1 CREATE TABLE `t1` (
3811 `f_int1` int(11) NOT NULL DEFAULT '0',
3812 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
3813 `f_char1` char(20) DEFAULT NULL,
3814 `f_char2` char(20) DEFAULT NULL,
3815 `f_charbig` varchar(1000) DEFAULT NULL,
3816 PRIMARY KEY (`f_int1`,`f_int2`)
3817 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
3818 /*!50100 PARTITION BY HASH (f_int1)
3821 # check prerequisites-1 success: 1
3822 # check COUNT(*) success: 1
3823 # check MIN/MAX(f_int1) success: 1
3824 # check MIN/MAX(f_int2) success: 1
3825 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3826 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3827 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3828 WHERE f_int1 IN (2,3);
3829 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
3830 # check prerequisites-3 success: 1
3831 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
3832 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3833 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
3834 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
3835 WHERE f_int1 IN (2,3);
3836 DELETE FROM t1 WHERE f_charbig = 'delete me';
3837 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3838 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
3839 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
3840 WHERE f_int1 IN (2,3);
3841 DELETE FROM t1 WHERE f_charbig = 'delete me';
3842 # check read via f_int1 success: 1
3843 # check read via f_int2 success: 1
3845 # check multiple-1 success: 1
3846 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3848 # check multiple-2 success: 1
3849 INSERT INTO t1 SELECT * FROM t0_template
3850 WHERE MOD(f_int1,3) = 0;
3852 # check multiple-3 success: 1
3853 UPDATE t1 SET f_int1 = f_int1 + @max_row
3854 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3855 AND @max_row_div2 + @max_row_div4;
3857 # check multiple-4 success: 1
3859 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3860 AND @max_row_div2 + @max_row_div4 + @max_row;
3862 # check multiple-5 success: 1
3863 SELECT COUNT(*) INTO @try_count FROM t0_template
3864 WHERE MOD(f_int1,3) = 0
3865 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
3866 SELECT COUNT(*) INTO @clash_count
3867 FROM t1 INNER JOIN t0_template USING(f_int1)
3868 WHERE MOD(f_int1,3) = 0
3869 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
3870 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3872 SET f_int1 = @cur_value , f_int2 = @cur_value,
3873 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3874 f_charbig = '#SINGLE#';
3876 # check single-1 success: 1
3877 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3879 SET f_int1 = @cur_value , f_int2 = @cur_value,
3880 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3881 f_charbig = '#SINGLE#';
3883 # check single-2 success: 1
3884 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3885 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3886 UPDATE t1 SET f_int1 = @cur_value2
3887 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3889 # check single-3 success: 1
3890 SET @cur_value1= -1;
3891 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3892 UPDATE t1 SET f_int1 = @cur_value1
3893 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3895 # check single-4 success: 1
3896 SELECT MAX(f_int1) INTO @cur_value FROM t1;
3897 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3899 # check single-5 success: 1
3900 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3902 # check single-6 success: 1
3903 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3905 Warning 1264 Out of range value for column 'f_int2' at row 1
3907 # check single-7 success: 1
3908 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3909 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3910 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3911 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3912 f_charbig = '#NULL#';
3914 SET f_int1 = NULL , f_int2 = -@max_row,
3915 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3916 f_charbig = '#NULL#';
3917 ERROR 23000: Column 'f_int1' cannot be null
3918 # check null success: 1
3920 WHERE f_int1 = 0 AND f_int2 = 0
3921 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3922 AND f_charbig = '#NULL#';
3923 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3924 SELECT f_int1, f_int1, '', '', 'was inserted'
3925 FROM t0_template source_tab
3926 WHERE MOD(f_int1,3) = 0
3927 AND f_int1 BETWEEN @max_row_div2 AND @max_row
3929 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
3930 f_int2 = 2 * @max_row + source_tab.f_int1,
3931 f_charbig = 'was updated';
3933 # check unique-1-a success: 1
3935 # check unique-1-b success: 1
3936 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3937 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3938 f_int2 = CAST(f_char1 AS SIGNED INT),
3939 f_charbig = CONCAT('===',f_char1,'===')
3940 WHERE f_charbig = 'was updated';
3941 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3942 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
3943 FROM t0_template source_tab
3944 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
3946 # check replace success: 1
3948 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
3950 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
3951 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
3952 UPDATE t1 SET f_int2 = f_int1,
3953 f_char1 = CAST(f_int1 AS CHAR),
3954 f_char2 = CAST(f_int1 AS CHAR),
3955 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
3956 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
3958 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3959 SELECT f_int1, f_int1, '', '', 'was inserted'
3960 FROM t0_template source_tab
3961 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3963 # check transactions-1 success: 1
3966 # check transactions-2 success: 1
3969 # check transactions-3 success: 1
3970 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3974 # check transactions-4 success: 1
3975 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3976 SELECT f_int1, f_int1, '', '', 'was inserted'
3977 FROM t0_template source_tab
3978 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3980 # check transactions-5 success: 1
3983 # check transactions-6 success: 1
3984 # INFO: Storage engine used for t1 seems to be transactional.
3987 # check transactions-7 success: 1
3988 DELETE FROM t1 WHERE f_charbig = 'was inserted';
3990 SET @@session.sql_mode = 'traditional';
3991 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3992 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3993 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3994 '', '', 'was inserted' FROM t0_template
3995 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3996 ERROR 22012: Division by 0
3999 # check transactions-8 success: 1
4000 # INFO: Storage engine used for t1 seems to be able to revert
4001 # changes made by the failing statement.
4002 SET @@session.sql_mode = '';
4004 DELETE FROM t1 WHERE f_charbig = 'was inserted';
4006 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4008 # check special-1 success: 1
4009 UPDATE t1 SET f_charbig = '';
4011 # check special-2 success: 1
4012 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4013 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4014 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4015 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4016 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4017 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4018 'just inserted' FROM t0_template
4019 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4020 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4022 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4023 f_charbig = 'updated by trigger'
4024 WHERE f_int1 = new.f_int1;
4026 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4027 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4028 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4030 # check trigger-1 success: 1
4032 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4033 f_int2 = CAST(f_char1 AS SIGNED INT),
4034 f_charbig = 'just inserted'
4035 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4037 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4038 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4039 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4040 'just inserted' FROM t0_template
4041 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4042 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4044 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4045 f_charbig = 'updated by trigger'
4046 WHERE f_int1 = new.f_int1;
4048 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4049 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4050 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4052 # check trigger-2 success: 1
4054 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4055 f_int2 = CAST(f_char1 AS SIGNED INT),
4056 f_charbig = 'just inserted'
4057 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4059 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4060 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4061 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4062 'just inserted' FROM t0_template
4063 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4064 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4066 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4067 f_charbig = 'updated by trigger'
4068 WHERE f_int1 = new.f_int1;
4070 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4071 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4073 # check trigger-3 success: 1
4075 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4076 f_int2 = CAST(f_char1 AS SIGNED INT),
4077 f_charbig = 'just inserted'
4078 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4080 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4081 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4082 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4083 'just inserted' FROM t0_template
4084 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4085 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4087 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4088 f_charbig = 'updated by trigger'
4089 WHERE f_int1 = - old.f_int1;
4091 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4092 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4094 # check trigger-4 success: 1
4096 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4097 f_int2 = CAST(f_char1 AS SIGNED INT),
4098 f_charbig = 'just inserted'
4099 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4101 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4102 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4103 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4104 'just inserted' FROM t0_template
4105 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4106 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4108 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4109 f_charbig = 'updated by trigger'
4110 WHERE f_int1 = new.f_int1;
4112 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4113 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4115 # check trigger-5 success: 1
4117 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4118 f_int2 = CAST(f_char1 AS SIGNED INT),
4119 f_charbig = 'just inserted'
4120 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4122 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4123 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4124 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4125 'just inserted' FROM t0_template
4126 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4127 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4129 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4130 f_charbig = 'updated by trigger'
4131 WHERE f_int1 = - old.f_int1;
4133 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4134 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4136 # check trigger-6 success: 1
4138 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4139 f_int2 = CAST(f_char1 AS SIGNED INT),
4140 f_charbig = 'just inserted'
4141 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4143 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4144 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4145 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4146 'just inserted' FROM t0_template
4147 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4148 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4150 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4151 f_charbig = 'updated by trigger'
4152 WHERE f_int1 = - old.f_int1;
4155 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4157 # check trigger-7 success: 1
4159 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4160 f_int2 = CAST(f_char1 AS SIGNED INT),
4161 f_charbig = 'just inserted'
4162 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4164 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4165 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4166 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4167 'just inserted' FROM t0_template
4168 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4169 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4171 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4172 f_charbig = 'updated by trigger'
4173 WHERE f_int1 = - old.f_int1;
4176 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4178 # check trigger-8 success: 1
4180 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4181 f_int2 = CAST(f_char1 AS SIGNED INT),
4182 f_charbig = 'just inserted'
4183 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4185 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4187 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4188 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4190 SET new.f_int1 = old.f_int1 + @max_row,
4191 new.f_int2 = old.f_int2 - @max_row,
4192 new.f_charbig = '####updated per update trigger####';
4195 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4196 f_charbig = '####updated per update statement itself####';
4198 # check trigger-9 success: 1
4200 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4201 f_int2 = CAST(f_char1 AS SIGNED INT),
4202 f_charbig = CONCAT('===',f_char1,'===');
4203 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4205 SET new.f_int1 = new.f_int1 + @max_row,
4206 new.f_int2 = new.f_int2 - @max_row,
4207 new.f_charbig = '####updated per update trigger####';
4210 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4211 f_charbig = '####updated per update statement itself####';
4213 # check trigger-10 success: 1
4215 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4216 f_int2 = CAST(f_char1 AS SIGNED INT),
4217 f_charbig = CONCAT('===',f_char1,'===');
4218 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4220 SET new.f_int1 = @my_max1 + @counter,
4221 new.f_int2 = @my_min2 - @counter,
4222 new.f_charbig = '####updated per insert trigger####';
4223 SET @counter = @counter + 1;
4226 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4227 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4228 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4229 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4230 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4234 # check trigger-11 success: 1
4236 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4237 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4238 AND f_charbig = '####updated per insert trigger####';
4239 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4241 SET new.f_int1 = @my_max1 + @counter,
4242 new.f_int2 = @my_min2 - @counter,
4243 new.f_charbig = '####updated per insert trigger####';
4244 SET @counter = @counter + 1;
4247 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4248 INSERT INTO t1 (f_char1, f_char2, f_charbig)
4249 SELECT CAST(f_int1 AS CHAR),
4250 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4251 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4255 # check trigger-12 success: 1
4257 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4258 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4259 AND f_charbig = '####updated per insert trigger####';
4261 Table Op Msg_type Msg_text
4262 test.t1 analyze status OK
4263 CHECK TABLE t1 EXTENDED;
4264 Table Op Msg_type Msg_text
4265 test.t1 check status OK
4266 CHECKSUM TABLE t1 EXTENDED;
4268 test.t1 <some_value>
4270 Table Op Msg_type Msg_text
4271 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
4272 test.t1 optimize status OK
4273 # check layout success: 1
4274 REPAIR TABLE t1 EXTENDED;
4275 Table Op Msg_type Msg_text
4276 test.t1 repair note The storage engine for the table doesn't support repair
4277 # check layout success: 1
4280 # check TRUNCATE success: 1
4281 # check layout success: 1
4282 # End usability test (inc/partition_check.inc)
4289 f_charbig VARCHAR(1000)
4290 , PRIMARY KEY (f_int1,f_int2)
4292 PARTITION BY KEY(f_int1) PARTITIONS 5;
4293 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4294 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4295 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4296 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
4297 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4298 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4299 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4300 # Start usability test (inc/partition_check.inc)
4302 SHOW CREATE TABLE t1;
4304 t1 CREATE TABLE `t1` (
4305 `f_int1` int(11) NOT NULL DEFAULT '0',
4306 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
4307 `f_char1` char(20) DEFAULT NULL,
4308 `f_char2` char(20) DEFAULT NULL,
4309 `f_charbig` varchar(1000) DEFAULT NULL,
4310 PRIMARY KEY (`f_int1`,`f_int2`)
4311 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
4312 /*!50100 PARTITION BY KEY (f_int1)
4315 # check prerequisites-1 success: 1
4316 # check COUNT(*) success: 1
4317 # check MIN/MAX(f_int1) success: 1
4318 # check MIN/MAX(f_int2) success: 1
4319 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4320 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4321 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4322 WHERE f_int1 IN (2,3);
4323 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
4324 # check prerequisites-3 success: 1
4325 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
4326 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4327 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
4328 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
4329 WHERE f_int1 IN (2,3);
4330 DELETE FROM t1 WHERE f_charbig = 'delete me';
4331 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4332 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
4333 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
4334 WHERE f_int1 IN (2,3);
4335 DELETE FROM t1 WHERE f_charbig = 'delete me';
4336 # check read via f_int1 success: 1
4337 # check read via f_int2 success: 1
4339 # check multiple-1 success: 1
4340 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4342 # check multiple-2 success: 1
4343 INSERT INTO t1 SELECT * FROM t0_template
4344 WHERE MOD(f_int1,3) = 0;
4346 # check multiple-3 success: 1
4347 UPDATE t1 SET f_int1 = f_int1 + @max_row
4348 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4349 AND @max_row_div2 + @max_row_div4;
4351 # check multiple-4 success: 1
4353 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4354 AND @max_row_div2 + @max_row_div4 + @max_row;
4356 # check multiple-5 success: 1
4357 SELECT COUNT(*) INTO @try_count FROM t0_template
4358 WHERE MOD(f_int1,3) = 0
4359 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4360 SELECT COUNT(*) INTO @clash_count
4361 FROM t1 INNER JOIN t0_template USING(f_int1)
4362 WHERE MOD(f_int1,3) = 0
4363 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4364 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4366 SET f_int1 = @cur_value , f_int2 = @cur_value,
4367 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4368 f_charbig = '#SINGLE#';
4370 # check single-1 success: 1
4371 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4373 SET f_int1 = @cur_value , f_int2 = @cur_value,
4374 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4375 f_charbig = '#SINGLE#';
4377 # check single-2 success: 1
4378 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4379 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4380 UPDATE t1 SET f_int1 = @cur_value2
4381 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4383 # check single-3 success: 1
4384 SET @cur_value1= -1;
4385 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4386 UPDATE t1 SET f_int1 = @cur_value1
4387 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4389 # check single-4 success: 1
4390 SELECT MAX(f_int1) INTO @cur_value FROM t1;
4391 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4393 # check single-5 success: 1
4394 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4396 # check single-6 success: 1
4397 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4399 Warning 1264 Out of range value for column 'f_int2' at row 1
4401 # check single-7 success: 1
4402 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4403 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4404 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4405 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4406 f_charbig = '#NULL#';
4408 SET f_int1 = NULL , f_int2 = -@max_row,
4409 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4410 f_charbig = '#NULL#';
4411 ERROR 23000: Column 'f_int1' cannot be null
4412 # check null success: 1
4414 WHERE f_int1 = 0 AND f_int2 = 0
4415 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4416 AND f_charbig = '#NULL#';
4417 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4418 SELECT f_int1, f_int1, '', '', 'was inserted'
4419 FROM t0_template source_tab
4420 WHERE MOD(f_int1,3) = 0
4421 AND f_int1 BETWEEN @max_row_div2 AND @max_row
4423 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
4424 f_int2 = 2 * @max_row + source_tab.f_int1,
4425 f_charbig = 'was updated';
4427 # check unique-1-a success: 1
4429 # check unique-1-b success: 1
4430 DELETE FROM t1 WHERE f_charbig = 'was inserted';
4431 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4432 f_int2 = CAST(f_char1 AS SIGNED INT),
4433 f_charbig = CONCAT('===',f_char1,'===')
4434 WHERE f_charbig = 'was updated';
4435 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4436 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
4437 FROM t0_template source_tab
4438 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4440 # check replace success: 1
4442 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
4444 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
4445 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
4446 UPDATE t1 SET f_int2 = f_int1,
4447 f_char1 = CAST(f_int1 AS CHAR),
4448 f_char2 = CAST(f_int1 AS CHAR),
4449 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
4450 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
4452 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4453 SELECT f_int1, f_int1, '', '', 'was inserted'
4454 FROM t0_template source_tab
4455 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4457 # check transactions-1 success: 1
4460 # check transactions-2 success: 1
4463 # check transactions-3 success: 1
4464 DELETE FROM t1 WHERE f_charbig = 'was inserted';
4468 # check transactions-4 success: 1
4469 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4470 SELECT f_int1, f_int1, '', '', 'was inserted'
4471 FROM t0_template source_tab
4472 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4474 # check transactions-5 success: 1
4477 # check transactions-6 success: 1
4478 # INFO: Storage engine used for t1 seems to be transactional.
4481 # check transactions-7 success: 1
4482 DELETE FROM t1 WHERE f_charbig = 'was inserted';
4484 SET @@session.sql_mode = 'traditional';
4485 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4486 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4487 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4488 '', '', 'was inserted' FROM t0_template
4489 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4490 ERROR 22012: Division by 0
4493 # check transactions-8 success: 1
4494 # INFO: Storage engine used for t1 seems to be able to revert
4495 # changes made by the failing statement.
4496 SET @@session.sql_mode = '';
4498 DELETE FROM t1 WHERE f_charbig = 'was inserted';
4500 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4502 # check special-1 success: 1
4503 UPDATE t1 SET f_charbig = '';
4505 # check special-2 success: 1
4506 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4507 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4508 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4509 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4510 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4511 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4512 'just inserted' FROM t0_template
4513 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4514 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4516 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4517 f_charbig = 'updated by trigger'
4518 WHERE f_int1 = new.f_int1;
4520 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4521 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4522 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4524 # check trigger-1 success: 1
4526 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4527 f_int2 = CAST(f_char1 AS SIGNED INT),
4528 f_charbig = 'just inserted'
4529 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4531 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4532 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4533 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4534 'just inserted' FROM t0_template
4535 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4536 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4538 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4539 f_charbig = 'updated by trigger'
4540 WHERE f_int1 = new.f_int1;
4542 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4543 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4544 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4546 # check trigger-2 success: 1
4548 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4549 f_int2 = CAST(f_char1 AS SIGNED INT),
4550 f_charbig = 'just inserted'
4551 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4553 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4554 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4555 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4556 'just inserted' FROM t0_template
4557 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4558 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4560 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4561 f_charbig = 'updated by trigger'
4562 WHERE f_int1 = new.f_int1;
4564 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4565 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4567 # check trigger-3 success: 1
4569 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4570 f_int2 = CAST(f_char1 AS SIGNED INT),
4571 f_charbig = 'just inserted'
4572 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4574 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4575 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4576 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4577 'just inserted' FROM t0_template
4578 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4579 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4581 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4582 f_charbig = 'updated by trigger'
4583 WHERE f_int1 = - old.f_int1;
4585 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4586 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4588 # check trigger-4 success: 1
4590 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4591 f_int2 = CAST(f_char1 AS SIGNED INT),
4592 f_charbig = 'just inserted'
4593 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4595 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4596 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4597 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4598 'just inserted' FROM t0_template
4599 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4600 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4602 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4603 f_charbig = 'updated by trigger'
4604 WHERE f_int1 = new.f_int1;
4606 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4607 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4609 # check trigger-5 success: 1
4611 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4612 f_int2 = CAST(f_char1 AS SIGNED INT),
4613 f_charbig = 'just inserted'
4614 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4616 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4617 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4618 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4619 'just inserted' FROM t0_template
4620 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4621 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4623 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4624 f_charbig = 'updated by trigger'
4625 WHERE f_int1 = - old.f_int1;
4627 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4628 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4630 # check trigger-6 success: 1
4632 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4633 f_int2 = CAST(f_char1 AS SIGNED INT),
4634 f_charbig = 'just inserted'
4635 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4637 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4638 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4639 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4640 'just inserted' FROM t0_template
4641 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4642 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4644 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4645 f_charbig = 'updated by trigger'
4646 WHERE f_int1 = - old.f_int1;
4649 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4651 # check trigger-7 success: 1
4653 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4654 f_int2 = CAST(f_char1 AS SIGNED INT),
4655 f_charbig = 'just inserted'
4656 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4658 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4659 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4660 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4661 'just inserted' FROM t0_template
4662 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4663 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4665 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4666 f_charbig = 'updated by trigger'
4667 WHERE f_int1 = - old.f_int1;
4670 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4672 # check trigger-8 success: 1
4674 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4675 f_int2 = CAST(f_char1 AS SIGNED INT),
4676 f_charbig = 'just inserted'
4677 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4679 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4681 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4682 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4684 SET new.f_int1 = old.f_int1 + @max_row,
4685 new.f_int2 = old.f_int2 - @max_row,
4686 new.f_charbig = '####updated per update trigger####';
4689 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4690 f_charbig = '####updated per update statement itself####';
4692 # check trigger-9 success: 1
4694 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4695 f_int2 = CAST(f_char1 AS SIGNED INT),
4696 f_charbig = CONCAT('===',f_char1,'===');
4697 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4699 SET new.f_int1 = new.f_int1 + @max_row,
4700 new.f_int2 = new.f_int2 - @max_row,
4701 new.f_charbig = '####updated per update trigger####';
4704 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4705 f_charbig = '####updated per update statement itself####';
4707 # check trigger-10 success: 1
4709 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4710 f_int2 = CAST(f_char1 AS SIGNED INT),
4711 f_charbig = CONCAT('===',f_char1,'===');
4712 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4714 SET new.f_int1 = @my_max1 + @counter,
4715 new.f_int2 = @my_min2 - @counter,
4716 new.f_charbig = '####updated per insert trigger####';
4717 SET @counter = @counter + 1;
4720 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4721 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4722 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4723 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4724 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4728 # check trigger-11 success: 1
4730 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4731 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4732 AND f_charbig = '####updated per insert trigger####';
4733 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4735 SET new.f_int1 = @my_max1 + @counter,
4736 new.f_int2 = @my_min2 - @counter,
4737 new.f_charbig = '####updated per insert trigger####';
4738 SET @counter = @counter + 1;
4741 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4742 INSERT INTO t1 (f_char1, f_char2, f_charbig)
4743 SELECT CAST(f_int1 AS CHAR),
4744 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4745 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4749 # check trigger-12 success: 1
4751 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4752 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4753 AND f_charbig = '####updated per insert trigger####';
4755 Table Op Msg_type Msg_text
4756 test.t1 analyze status OK
4757 CHECK TABLE t1 EXTENDED;
4758 Table Op Msg_type Msg_text
4759 test.t1 check status OK
4760 CHECKSUM TABLE t1 EXTENDED;
4762 test.t1 <some_value>
4764 Table Op Msg_type Msg_text
4765 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
4766 test.t1 optimize status OK
4767 # check layout success: 1
4768 REPAIR TABLE t1 EXTENDED;
4769 Table Op Msg_type Msg_text
4770 test.t1 repair note The storage engine for the table doesn't support repair
4771 # check layout success: 1
4774 # check TRUNCATE success: 1
4775 # check layout success: 1
4776 # End usability test (inc/partition_check.inc)
4783 f_charbig VARCHAR(1000)
4784 , PRIMARY KEY (f_int1,f_int2)
4786 PARTITION BY LIST(MOD(f_int1,4))
4787 (PARTITION part_3 VALUES IN (-3),
4788 PARTITION part_2 VALUES IN (-2),
4789 PARTITION part_1 VALUES IN (-1),
4790 PARTITION part_N VALUES IN (NULL),
4791 PARTITION part0 VALUES IN (0),
4792 PARTITION part1 VALUES IN (1),
4793 PARTITION part2 VALUES IN (2),
4794 PARTITION part3 VALUES IN (3));
4795 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4796 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4797 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4798 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
4799 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4800 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4801 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4802 # Start usability test (inc/partition_check.inc)
4804 SHOW CREATE TABLE t1;
4806 t1 CREATE TABLE `t1` (
4807 `f_int1` int(11) NOT NULL DEFAULT '0',
4808 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
4809 `f_char1` char(20) DEFAULT NULL,
4810 `f_char2` char(20) DEFAULT NULL,
4811 `f_charbig` varchar(1000) DEFAULT NULL,
4812 PRIMARY KEY (`f_int1`,`f_int2`)
4813 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
4814 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
4815 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
4816 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
4817 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
4818 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
4819 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
4820 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
4821 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
4822 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
4824 # check prerequisites-1 success: 1
4825 # check COUNT(*) success: 1
4826 # check MIN/MAX(f_int1) success: 1
4827 # check MIN/MAX(f_int2) success: 1
4828 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4829 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4830 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4831 WHERE f_int1 IN (2,3);
4832 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
4833 # check prerequisites-3 success: 1
4834 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
4835 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4836 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
4837 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
4838 WHERE f_int1 IN (2,3);
4839 DELETE FROM t1 WHERE f_charbig = 'delete me';
4840 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4841 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
4842 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
4843 WHERE f_int1 IN (2,3);
4844 DELETE FROM t1 WHERE f_charbig = 'delete me';
4845 # check read via f_int1 success: 1
4846 # check read via f_int2 success: 1
4848 # check multiple-1 success: 1
4849 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4851 # check multiple-2 success: 1
4852 INSERT INTO t1 SELECT * FROM t0_template
4853 WHERE MOD(f_int1,3) = 0;
4855 # check multiple-3 success: 1
4856 UPDATE t1 SET f_int1 = f_int1 + @max_row
4857 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4858 AND @max_row_div2 + @max_row_div4;
4860 # check multiple-4 success: 1
4862 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4863 AND @max_row_div2 + @max_row_div4 + @max_row;
4865 # check multiple-5 success: 1
4866 SELECT COUNT(*) INTO @try_count FROM t0_template
4867 WHERE MOD(f_int1,3) = 0
4868 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4869 SELECT COUNT(*) INTO @clash_count
4870 FROM t1 INNER JOIN t0_template USING(f_int1)
4871 WHERE MOD(f_int1,3) = 0
4872 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4873 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4875 SET f_int1 = @cur_value , f_int2 = @cur_value,
4876 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4877 f_charbig = '#SINGLE#';
4879 # check single-1 success: 1
4880 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4882 SET f_int1 = @cur_value , f_int2 = @cur_value,
4883 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4884 f_charbig = '#SINGLE#';
4886 # check single-2 success: 1
4887 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4888 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4889 UPDATE t1 SET f_int1 = @cur_value2
4890 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4892 # check single-3 success: 1
4893 SET @cur_value1= -1;
4894 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4895 UPDATE t1 SET f_int1 = @cur_value1
4896 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4898 # check single-4 success: 1
4899 SELECT MAX(f_int1) INTO @cur_value FROM t1;
4900 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4902 # check single-5 success: 1
4903 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4905 # check single-6 success: 1
4906 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4908 Warning 1264 Out of range value for column 'f_int2' at row 1
4910 # check single-7 success: 1
4911 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4912 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4913 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4914 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4915 f_charbig = '#NULL#';
4917 SET f_int1 = NULL , f_int2 = -@max_row,
4918 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4919 f_charbig = '#NULL#';
4920 ERROR 23000: Column 'f_int1' cannot be null
4921 # check null success: 1
4923 WHERE f_int1 = 0 AND f_int2 = 0
4924 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4925 AND f_charbig = '#NULL#';
4926 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4927 SELECT f_int1, f_int1, '', '', 'was inserted'
4928 FROM t0_template source_tab
4929 WHERE MOD(f_int1,3) = 0
4930 AND f_int1 BETWEEN @max_row_div2 AND @max_row
4932 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
4933 f_int2 = 2 * @max_row + source_tab.f_int1,
4934 f_charbig = 'was updated';
4936 # check unique-1-a success: 1
4938 # check unique-1-b success: 1
4939 DELETE FROM t1 WHERE f_charbig = 'was inserted';
4940 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4941 f_int2 = CAST(f_char1 AS SIGNED INT),
4942 f_charbig = CONCAT('===',f_char1,'===')
4943 WHERE f_charbig = 'was updated';
4944 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4945 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
4946 FROM t0_template source_tab
4947 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4949 # check replace success: 1
4951 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
4953 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
4954 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
4955 UPDATE t1 SET f_int2 = f_int1,
4956 f_char1 = CAST(f_int1 AS CHAR),
4957 f_char2 = CAST(f_int1 AS CHAR),
4958 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
4959 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
4961 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4962 SELECT f_int1, f_int1, '', '', 'was inserted'
4963 FROM t0_template source_tab
4964 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4966 # check transactions-1 success: 1
4969 # check transactions-2 success: 1
4972 # check transactions-3 success: 1
4973 DELETE FROM t1 WHERE f_charbig = 'was inserted';
4977 # check transactions-4 success: 1
4978 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4979 SELECT f_int1, f_int1, '', '', 'was inserted'
4980 FROM t0_template source_tab
4981 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4983 # check transactions-5 success: 1
4986 # check transactions-6 success: 1
4987 # INFO: Storage engine used for t1 seems to be transactional.
4990 # check transactions-7 success: 1
4991 DELETE FROM t1 WHERE f_charbig = 'was inserted';
4993 SET @@session.sql_mode = 'traditional';
4994 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4995 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4996 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4997 '', '', 'was inserted' FROM t0_template
4998 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4999 ERROR 22012: Division by 0
5002 # check transactions-8 success: 1
5003 # INFO: Storage engine used for t1 seems to be able to revert
5004 # changes made by the failing statement.
5005 SET @@session.sql_mode = '';
5007 DELETE FROM t1 WHERE f_charbig = 'was inserted';
5009 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5011 # check special-1 success: 1
5012 UPDATE t1 SET f_charbig = '';
5014 # check special-2 success: 1
5015 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5016 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5017 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5018 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5019 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5020 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5021 'just inserted' FROM t0_template
5022 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5023 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5025 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5026 f_charbig = 'updated by trigger'
5027 WHERE f_int1 = new.f_int1;
5029 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5030 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5031 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5033 # check trigger-1 success: 1
5035 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5036 f_int2 = CAST(f_char1 AS SIGNED INT),
5037 f_charbig = 'just inserted'
5038 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5040 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5041 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5042 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5043 'just inserted' FROM t0_template
5044 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5045 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5047 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5048 f_charbig = 'updated by trigger'
5049 WHERE f_int1 = new.f_int1;
5051 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5052 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5053 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5055 # check trigger-2 success: 1
5057 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5058 f_int2 = CAST(f_char1 AS SIGNED INT),
5059 f_charbig = 'just inserted'
5060 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5062 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5063 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5064 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5065 'just inserted' FROM t0_template
5066 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5067 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5069 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5070 f_charbig = 'updated by trigger'
5071 WHERE f_int1 = new.f_int1;
5073 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5074 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5076 # check trigger-3 success: 1
5078 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5079 f_int2 = CAST(f_char1 AS SIGNED INT),
5080 f_charbig = 'just inserted'
5081 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5083 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5084 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5085 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5086 'just inserted' FROM t0_template
5087 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5088 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5090 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5091 f_charbig = 'updated by trigger'
5092 WHERE f_int1 = - old.f_int1;
5094 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5095 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5097 # check trigger-4 success: 1
5099 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5100 f_int2 = CAST(f_char1 AS SIGNED INT),
5101 f_charbig = 'just inserted'
5102 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5104 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5105 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5106 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5107 'just inserted' FROM t0_template
5108 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5109 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5111 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5112 f_charbig = 'updated by trigger'
5113 WHERE f_int1 = new.f_int1;
5115 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5116 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5118 # check trigger-5 success: 1
5120 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5121 f_int2 = CAST(f_char1 AS SIGNED INT),
5122 f_charbig = 'just inserted'
5123 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5125 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5126 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5127 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5128 'just inserted' FROM t0_template
5129 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5130 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5132 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5133 f_charbig = 'updated by trigger'
5134 WHERE f_int1 = - old.f_int1;
5136 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5137 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5139 # check trigger-6 success: 1
5141 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5142 f_int2 = CAST(f_char1 AS SIGNED INT),
5143 f_charbig = 'just inserted'
5144 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5146 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5147 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5148 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5149 'just inserted' FROM t0_template
5150 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5151 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5153 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5154 f_charbig = 'updated by trigger'
5155 WHERE f_int1 = - old.f_int1;
5158 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5160 # check trigger-7 success: 1
5162 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5163 f_int2 = CAST(f_char1 AS SIGNED INT),
5164 f_charbig = 'just inserted'
5165 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5167 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5168 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5169 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5170 'just inserted' FROM t0_template
5171 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5172 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5174 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5175 f_charbig = 'updated by trigger'
5176 WHERE f_int1 = - old.f_int1;
5179 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5181 # check trigger-8 success: 1
5183 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5184 f_int2 = CAST(f_char1 AS SIGNED INT),
5185 f_charbig = 'just inserted'
5186 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5188 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5190 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5191 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5193 SET new.f_int1 = old.f_int1 + @max_row,
5194 new.f_int2 = old.f_int2 - @max_row,
5195 new.f_charbig = '####updated per update trigger####';
5198 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5199 f_charbig = '####updated per update statement itself####';
5201 # check trigger-9 success: 1
5203 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5204 f_int2 = CAST(f_char1 AS SIGNED INT),
5205 f_charbig = CONCAT('===',f_char1,'===');
5206 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5208 SET new.f_int1 = new.f_int1 + @max_row,
5209 new.f_int2 = new.f_int2 - @max_row,
5210 new.f_charbig = '####updated per update trigger####';
5213 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5214 f_charbig = '####updated per update statement itself####';
5216 # check trigger-10 success: 1
5218 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5219 f_int2 = CAST(f_char1 AS SIGNED INT),
5220 f_charbig = CONCAT('===',f_char1,'===');
5221 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5223 SET new.f_int1 = @my_max1 + @counter,
5224 new.f_int2 = @my_min2 - @counter,
5225 new.f_charbig = '####updated per insert trigger####';
5226 SET @counter = @counter + 1;
5229 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5230 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5231 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5232 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5233 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5237 # check trigger-11 success: 1
5239 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5240 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5241 AND f_charbig = '####updated per insert trigger####';
5242 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5244 SET new.f_int1 = @my_max1 + @counter,
5245 new.f_int2 = @my_min2 - @counter,
5246 new.f_charbig = '####updated per insert trigger####';
5247 SET @counter = @counter + 1;
5250 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5251 INSERT INTO t1 (f_char1, f_char2, f_charbig)
5252 SELECT CAST(f_int1 AS CHAR),
5253 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5254 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5258 # check trigger-12 success: 1
5260 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5261 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5262 AND f_charbig = '####updated per insert trigger####';
5264 Table Op Msg_type Msg_text
5265 test.t1 analyze status OK
5266 CHECK TABLE t1 EXTENDED;
5267 Table Op Msg_type Msg_text
5268 test.t1 check status OK
5269 CHECKSUM TABLE t1 EXTENDED;
5271 test.t1 <some_value>
5273 Table Op Msg_type Msg_text
5274 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
5275 test.t1 optimize status OK
5276 # check layout success: 1
5277 REPAIR TABLE t1 EXTENDED;
5278 Table Op Msg_type Msg_text
5279 test.t1 repair note The storage engine for the table doesn't support repair
5280 # check layout success: 1
5283 # check TRUNCATE success: 1
5284 # check layout success: 1
5285 # End usability test (inc/partition_check.inc)
5292 f_charbig VARCHAR(1000)
5293 , PRIMARY KEY (f_int1,f_int2)
5295 PARTITION BY RANGE(f_int1)
5296 (PARTITION parta VALUES LESS THAN (0),
5297 PARTITION partb VALUES LESS THAN (5),
5298 PARTITION partc VALUES LESS THAN (10),
5299 PARTITION partd VALUES LESS THAN (10 + 5),
5300 PARTITION parte VALUES LESS THAN (20),
5301 PARTITION partf VALUES LESS THAN (2147483646));
5302 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5303 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5304 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5305 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
5306 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5307 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5308 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5309 # Start usability test (inc/partition_check.inc)
5311 SHOW CREATE TABLE t1;
5313 t1 CREATE TABLE `t1` (
5314 `f_int1` int(11) NOT NULL DEFAULT '0',
5315 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
5316 `f_char1` char(20) DEFAULT NULL,
5317 `f_char2` char(20) DEFAULT NULL,
5318 `f_charbig` varchar(1000) DEFAULT NULL,
5319 PRIMARY KEY (`f_int1`,`f_int2`)
5320 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
5321 /*!50100 PARTITION BY RANGE (f_int1)
5322 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
5323 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
5324 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
5325 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
5326 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
5327 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
5329 # check prerequisites-1 success: 1
5330 # check COUNT(*) success: 1
5331 # check MIN/MAX(f_int1) success: 1
5332 # check MIN/MAX(f_int2) success: 1
5333 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5334 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5335 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5336 WHERE f_int1 IN (2,3);
5337 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
5338 # check prerequisites-3 success: 1
5339 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
5340 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5341 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5342 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5343 WHERE f_int1 IN (2,3);
5344 DELETE FROM t1 WHERE f_charbig = 'delete me';
5345 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5346 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5347 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5348 WHERE f_int1 IN (2,3);
5349 DELETE FROM t1 WHERE f_charbig = 'delete me';
5350 # check read via f_int1 success: 1
5351 # check read via f_int2 success: 1
5353 # check multiple-1 success: 1
5354 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5356 # check multiple-2 success: 1
5357 INSERT INTO t1 SELECT * FROM t0_template
5358 WHERE MOD(f_int1,3) = 0;
5360 # check multiple-3 success: 1
5361 UPDATE t1 SET f_int1 = f_int1 + @max_row
5362 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5363 AND @max_row_div2 + @max_row_div4;
5365 # check multiple-4 success: 1
5367 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5368 AND @max_row_div2 + @max_row_div4 + @max_row;
5370 # check multiple-5 success: 1
5371 SELECT COUNT(*) INTO @try_count FROM t0_template
5372 WHERE MOD(f_int1,3) = 0
5373 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5374 SELECT COUNT(*) INTO @clash_count
5375 FROM t1 INNER JOIN t0_template USING(f_int1)
5376 WHERE MOD(f_int1,3) = 0
5377 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5378 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5380 SET f_int1 = @cur_value , f_int2 = @cur_value,
5381 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5382 f_charbig = '#SINGLE#';
5384 # check single-1 success: 1
5385 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5387 SET f_int1 = @cur_value , f_int2 = @cur_value,
5388 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5389 f_charbig = '#SINGLE#';
5391 # check single-2 success: 1
5392 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5393 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5394 UPDATE t1 SET f_int1 = @cur_value2
5395 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5397 # check single-3 success: 1
5398 SET @cur_value1= -1;
5399 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5400 UPDATE t1 SET f_int1 = @cur_value1
5401 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5403 # check single-4 success: 1
5404 SELECT MAX(f_int1) INTO @cur_value FROM t1;
5405 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5407 # check single-5 success: 1
5408 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5410 # check single-6 success: 1
5411 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5412 ERROR HY000: Table has no partition for value 2147483647
5413 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5414 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5415 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5416 f_charbig = '#NULL#';
5418 SET f_int1 = NULL , f_int2 = -@max_row,
5419 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5420 f_charbig = '#NULL#';
5421 ERROR 23000: Column 'f_int1' cannot be null
5422 # check null success: 1
5424 WHERE f_int1 = 0 AND f_int2 = 0
5425 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5426 AND f_charbig = '#NULL#';
5427 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5428 SELECT f_int1, f_int1, '', '', 'was inserted'
5429 FROM t0_template source_tab
5430 WHERE MOD(f_int1,3) = 0
5431 AND f_int1 BETWEEN @max_row_div2 AND @max_row
5433 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
5434 f_int2 = 2 * @max_row + source_tab.f_int1,
5435 f_charbig = 'was updated';
5437 # check unique-1-a success: 1
5439 # check unique-1-b success: 1
5440 DELETE FROM t1 WHERE f_charbig = 'was inserted';
5441 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5442 f_int2 = CAST(f_char1 AS SIGNED INT),
5443 f_charbig = CONCAT('===',f_char1,'===')
5444 WHERE f_charbig = 'was updated';
5445 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5446 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
5447 FROM t0_template source_tab
5448 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5450 # check replace success: 1
5452 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
5454 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
5455 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
5456 UPDATE t1 SET f_int2 = f_int1,
5457 f_char1 = CAST(f_int1 AS CHAR),
5458 f_char2 = CAST(f_int1 AS CHAR),
5459 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
5460 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
5462 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5463 SELECT f_int1, f_int1, '', '', 'was inserted'
5464 FROM t0_template source_tab
5465 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5467 # check transactions-1 success: 1
5470 # check transactions-2 success: 1
5473 # check transactions-3 success: 1
5474 DELETE FROM t1 WHERE f_charbig = 'was inserted';
5478 # check transactions-4 success: 1
5479 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5480 SELECT f_int1, f_int1, '', '', 'was inserted'
5481 FROM t0_template source_tab
5482 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5484 # check transactions-5 success: 1
5487 # check transactions-6 success: 1
5488 # INFO: Storage engine used for t1 seems to be transactional.
5491 # check transactions-7 success: 1
5492 DELETE FROM t1 WHERE f_charbig = 'was inserted';
5494 SET @@session.sql_mode = 'traditional';
5495 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5496 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5497 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5498 '', '', 'was inserted' FROM t0_template
5499 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5500 ERROR 22012: Division by 0
5503 # check transactions-8 success: 1
5504 # INFO: Storage engine used for t1 seems to be able to revert
5505 # changes made by the failing statement.
5506 SET @@session.sql_mode = '';
5508 DELETE FROM t1 WHERE f_charbig = 'was inserted';
5510 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5512 # check special-1 success: 1
5513 UPDATE t1 SET f_charbig = '';
5515 # check special-2 success: 1
5516 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5517 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5518 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5519 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5520 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5521 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5522 'just inserted' FROM t0_template
5523 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5524 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5526 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5527 f_charbig = 'updated by trigger'
5528 WHERE f_int1 = new.f_int1;
5530 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5531 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5532 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5534 # check trigger-1 success: 1
5536 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5537 f_int2 = CAST(f_char1 AS SIGNED INT),
5538 f_charbig = 'just inserted'
5539 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5541 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5542 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5543 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5544 'just inserted' FROM t0_template
5545 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5546 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5548 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5549 f_charbig = 'updated by trigger'
5550 WHERE f_int1 = new.f_int1;
5552 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5553 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5554 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5556 # check trigger-2 success: 1
5558 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5559 f_int2 = CAST(f_char1 AS SIGNED INT),
5560 f_charbig = 'just inserted'
5561 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5563 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5564 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5565 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5566 'just inserted' FROM t0_template
5567 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5568 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5570 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5571 f_charbig = 'updated by trigger'
5572 WHERE f_int1 = new.f_int1;
5574 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5575 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5577 # check trigger-3 success: 1
5579 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5580 f_int2 = CAST(f_char1 AS SIGNED INT),
5581 f_charbig = 'just inserted'
5582 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5584 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5585 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5586 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5587 'just inserted' FROM t0_template
5588 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5589 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5591 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5592 f_charbig = 'updated by trigger'
5593 WHERE f_int1 = - old.f_int1;
5595 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5596 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5598 # check trigger-4 success: 1
5600 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5601 f_int2 = CAST(f_char1 AS SIGNED INT),
5602 f_charbig = 'just inserted'
5603 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5605 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5606 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5607 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5608 'just inserted' FROM t0_template
5609 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5610 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5612 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5613 f_charbig = 'updated by trigger'
5614 WHERE f_int1 = new.f_int1;
5616 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5617 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5619 # check trigger-5 success: 1
5621 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5622 f_int2 = CAST(f_char1 AS SIGNED INT),
5623 f_charbig = 'just inserted'
5624 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5626 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5627 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5628 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5629 'just inserted' FROM t0_template
5630 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5631 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5633 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5634 f_charbig = 'updated by trigger'
5635 WHERE f_int1 = - old.f_int1;
5637 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5638 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5640 # check trigger-6 success: 1
5642 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5643 f_int2 = CAST(f_char1 AS SIGNED INT),
5644 f_charbig = 'just inserted'
5645 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5647 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5648 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5649 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5650 'just inserted' FROM t0_template
5651 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5652 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5654 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5655 f_charbig = 'updated by trigger'
5656 WHERE f_int1 = - old.f_int1;
5659 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5661 # check trigger-7 success: 1
5663 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5664 f_int2 = CAST(f_char1 AS SIGNED INT),
5665 f_charbig = 'just inserted'
5666 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5668 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5669 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5670 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5671 'just inserted' FROM t0_template
5672 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5673 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5675 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5676 f_charbig = 'updated by trigger'
5677 WHERE f_int1 = - old.f_int1;
5680 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5682 # check trigger-8 success: 1
5684 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5685 f_int2 = CAST(f_char1 AS SIGNED INT),
5686 f_charbig = 'just inserted'
5687 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5689 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5691 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5692 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5694 SET new.f_int1 = old.f_int1 + @max_row,
5695 new.f_int2 = old.f_int2 - @max_row,
5696 new.f_charbig = '####updated per update trigger####';
5699 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5700 f_charbig = '####updated per update statement itself####';
5702 # check trigger-9 success: 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 = CONCAT('===',f_char1,'===');
5707 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5709 SET new.f_int1 = new.f_int1 + @max_row,
5710 new.f_int2 = new.f_int2 - @max_row,
5711 new.f_charbig = '####updated per update trigger####';
5714 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5715 f_charbig = '####updated per update statement itself####';
5717 # check trigger-10 success: 1
5719 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5720 f_int2 = CAST(f_char1 AS SIGNED INT),
5721 f_charbig = CONCAT('===',f_char1,'===');
5722 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5724 SET new.f_int1 = @my_max1 + @counter,
5725 new.f_int2 = @my_min2 - @counter,
5726 new.f_charbig = '####updated per insert trigger####';
5727 SET @counter = @counter + 1;
5730 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5731 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5732 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5733 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5734 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5738 # check trigger-11 success: 1
5740 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5741 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5742 AND f_charbig = '####updated per insert trigger####';
5743 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5745 SET new.f_int1 = @my_max1 + @counter,
5746 new.f_int2 = @my_min2 - @counter,
5747 new.f_charbig = '####updated per insert trigger####';
5748 SET @counter = @counter + 1;
5751 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5752 INSERT INTO t1 (f_char1, f_char2, f_charbig)
5753 SELECT CAST(f_int1 AS CHAR),
5754 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5755 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5759 # check trigger-12 success: 1
5761 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5762 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5763 AND f_charbig = '####updated per insert trigger####';
5765 Table Op Msg_type Msg_text
5766 test.t1 analyze status OK
5767 CHECK TABLE t1 EXTENDED;
5768 Table Op Msg_type Msg_text
5769 test.t1 check status OK
5770 CHECKSUM TABLE t1 EXTENDED;
5772 test.t1 <some_value>
5774 Table Op Msg_type Msg_text
5775 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
5776 test.t1 optimize status OK
5777 # check layout success: 1
5778 REPAIR TABLE t1 EXTENDED;
5779 Table Op Msg_type Msg_text
5780 test.t1 repair note The storage engine for the table doesn't support repair
5781 # check layout success: 1
5784 # check TRUNCATE success: 1
5785 # check layout success: 1
5786 # End usability test (inc/partition_check.inc)
5793 f_charbig VARCHAR(1000)
5794 , PRIMARY KEY (f_int1,f_int2)
5796 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
5797 (PARTITION parta VALUES LESS THAN (0),
5798 PARTITION partb VALUES LESS THAN (5),
5799 PARTITION partc VALUES LESS THAN (10),
5800 PARTITION partd VALUES LESS THAN (2147483646));
5801 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5802 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5803 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5804 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
5805 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5806 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5807 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5808 # Start usability test (inc/partition_check.inc)
5810 SHOW CREATE TABLE t1;
5812 t1 CREATE TABLE `t1` (
5813 `f_int1` int(11) NOT NULL DEFAULT '0',
5814 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
5815 `f_char1` char(20) DEFAULT NULL,
5816 `f_char2` char(20) DEFAULT NULL,
5817 `f_charbig` varchar(1000) DEFAULT NULL,
5818 PRIMARY KEY (`f_int1`,`f_int2`)
5819 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
5820 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
5821 SUBPARTITION BY HASH (f_int1)
5823 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
5824 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
5825 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
5826 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
5828 # check prerequisites-1 success: 1
5829 # check COUNT(*) success: 1
5830 # check MIN/MAX(f_int1) success: 1
5831 # check MIN/MAX(f_int2) success: 1
5832 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5833 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5834 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5835 WHERE f_int1 IN (2,3);
5836 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
5837 # check prerequisites-3 success: 1
5838 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
5839 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5840 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5841 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5842 WHERE f_int1 IN (2,3);
5843 DELETE FROM t1 WHERE f_charbig = 'delete me';
5844 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5845 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5846 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5847 WHERE f_int1 IN (2,3);
5848 DELETE FROM t1 WHERE f_charbig = 'delete me';
5849 # check read via f_int1 success: 1
5850 # check read via f_int2 success: 1
5852 # check multiple-1 success: 1
5853 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5855 # check multiple-2 success: 1
5856 INSERT INTO t1 SELECT * FROM t0_template
5857 WHERE MOD(f_int1,3) = 0;
5859 # check multiple-3 success: 1
5860 UPDATE t1 SET f_int1 = f_int1 + @max_row
5861 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5862 AND @max_row_div2 + @max_row_div4;
5864 # check multiple-4 success: 1
5866 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5867 AND @max_row_div2 + @max_row_div4 + @max_row;
5869 # check multiple-5 success: 1
5870 SELECT COUNT(*) INTO @try_count FROM t0_template
5871 WHERE MOD(f_int1,3) = 0
5872 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5873 SELECT COUNT(*) INTO @clash_count
5874 FROM t1 INNER JOIN t0_template USING(f_int1)
5875 WHERE MOD(f_int1,3) = 0
5876 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5877 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5879 SET f_int1 = @cur_value , f_int2 = @cur_value,
5880 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5881 f_charbig = '#SINGLE#';
5883 # check single-1 success: 1
5884 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5886 SET f_int1 = @cur_value , f_int2 = @cur_value,
5887 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5888 f_charbig = '#SINGLE#';
5890 # check single-2 success: 1
5891 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5892 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5893 UPDATE t1 SET f_int1 = @cur_value2
5894 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5896 # check single-3 success: 1
5897 SET @cur_value1= -1;
5898 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5899 UPDATE t1 SET f_int1 = @cur_value1
5900 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5902 # check single-4 success: 1
5903 SELECT MAX(f_int1) INTO @cur_value FROM t1;
5904 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5906 # check single-5 success: 1
5907 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5909 # check single-6 success: 1
5910 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5912 Warning 1264 Out of range value for column 'f_int2' at row 1
5914 # check single-7 success: 1
5915 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
5916 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5917 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5918 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5919 f_charbig = '#NULL#';
5921 SET f_int1 = NULL , f_int2 = -@max_row,
5922 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5923 f_charbig = '#NULL#';
5924 ERROR 23000: Column 'f_int1' cannot be null
5925 # check null success: 1
5927 WHERE f_int1 = 0 AND f_int2 = 0
5928 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5929 AND f_charbig = '#NULL#';
5930 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5931 SELECT f_int1, f_int1, '', '', 'was inserted'
5932 FROM t0_template source_tab
5933 WHERE MOD(f_int1,3) = 0
5934 AND f_int1 BETWEEN @max_row_div2 AND @max_row
5936 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
5937 f_int2 = 2 * @max_row + source_tab.f_int1,
5938 f_charbig = 'was updated';
5940 # check unique-1-a success: 1
5942 # check unique-1-b success: 1
5943 DELETE FROM t1 WHERE f_charbig = 'was inserted';
5944 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5945 f_int2 = CAST(f_char1 AS SIGNED INT),
5946 f_charbig = CONCAT('===',f_char1,'===')
5947 WHERE f_charbig = 'was updated';
5948 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5949 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
5950 FROM t0_template source_tab
5951 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5953 # check replace success: 1
5955 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
5957 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
5958 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
5959 UPDATE t1 SET f_int2 = f_int1,
5960 f_char1 = CAST(f_int1 AS CHAR),
5961 f_char2 = CAST(f_int1 AS CHAR),
5962 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
5963 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
5965 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5966 SELECT f_int1, f_int1, '', '', 'was inserted'
5967 FROM t0_template source_tab
5968 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5970 # check transactions-1 success: 1
5973 # check transactions-2 success: 1
5976 # check transactions-3 success: 1
5977 DELETE FROM t1 WHERE f_charbig = 'was inserted';
5981 # check transactions-4 success: 1
5982 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5983 SELECT f_int1, f_int1, '', '', 'was inserted'
5984 FROM t0_template source_tab
5985 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5987 # check transactions-5 success: 1
5990 # check transactions-6 success: 1
5991 # INFO: Storage engine used for t1 seems to be transactional.
5994 # check transactions-7 success: 1
5995 DELETE FROM t1 WHERE f_charbig = 'was inserted';
5997 SET @@session.sql_mode = 'traditional';
5998 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5999 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6000 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6001 '', '', 'was inserted' FROM t0_template
6002 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6003 ERROR 22012: Division by 0
6006 # check transactions-8 success: 1
6007 # INFO: Storage engine used for t1 seems to be able to revert
6008 # changes made by the failing statement.
6009 SET @@session.sql_mode = '';
6011 DELETE FROM t1 WHERE f_charbig = 'was inserted';
6013 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6015 # check special-1 success: 1
6016 UPDATE t1 SET f_charbig = '';
6018 # check special-2 success: 1
6019 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6020 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6021 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6022 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6023 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6024 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6025 'just inserted' FROM t0_template
6026 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6027 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6029 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6030 f_charbig = 'updated by trigger'
6031 WHERE f_int1 = new.f_int1;
6033 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6034 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6035 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6037 # check trigger-1 success: 1
6039 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6040 f_int2 = CAST(f_char1 AS SIGNED INT),
6041 f_charbig = 'just inserted'
6042 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6044 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6045 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6046 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6047 'just inserted' FROM t0_template
6048 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6049 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6051 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6052 f_charbig = 'updated by trigger'
6053 WHERE f_int1 = new.f_int1;
6055 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6056 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6057 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6059 # check trigger-2 success: 1
6061 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6062 f_int2 = CAST(f_char1 AS SIGNED INT),
6063 f_charbig = 'just inserted'
6064 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6066 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6067 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6068 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6069 'just inserted' FROM t0_template
6070 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6071 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6073 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6074 f_charbig = 'updated by trigger'
6075 WHERE f_int1 = new.f_int1;
6077 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6078 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6080 # check trigger-3 success: 1
6082 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6083 f_int2 = CAST(f_char1 AS SIGNED INT),
6084 f_charbig = 'just inserted'
6085 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6087 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6088 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6089 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6090 'just inserted' FROM t0_template
6091 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6092 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6094 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6095 f_charbig = 'updated by trigger'
6096 WHERE f_int1 = - old.f_int1;
6098 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6099 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6101 # check trigger-4 success: 1
6103 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6104 f_int2 = CAST(f_char1 AS SIGNED INT),
6105 f_charbig = 'just inserted'
6106 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6108 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6109 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6110 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6111 'just inserted' FROM t0_template
6112 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6113 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6115 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6116 f_charbig = 'updated by trigger'
6117 WHERE f_int1 = new.f_int1;
6119 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6120 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6122 # check trigger-5 success: 1
6124 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6125 f_int2 = CAST(f_char1 AS SIGNED INT),
6126 f_charbig = 'just inserted'
6127 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6129 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6130 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6131 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6132 'just inserted' FROM t0_template
6133 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6134 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6136 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6137 f_charbig = 'updated by trigger'
6138 WHERE f_int1 = - old.f_int1;
6140 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6141 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6143 # check trigger-6 success: 1
6145 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6146 f_int2 = CAST(f_char1 AS SIGNED INT),
6147 f_charbig = 'just inserted'
6148 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6150 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6151 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6152 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6153 'just inserted' FROM t0_template
6154 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6155 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6157 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6158 f_charbig = 'updated by trigger'
6159 WHERE f_int1 = - old.f_int1;
6162 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6164 # check trigger-7 success: 1
6166 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6167 f_int2 = CAST(f_char1 AS SIGNED INT),
6168 f_charbig = 'just inserted'
6169 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6171 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6172 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6173 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6174 'just inserted' FROM t0_template
6175 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6176 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6178 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6179 f_charbig = 'updated by trigger'
6180 WHERE f_int1 = - old.f_int1;
6183 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6185 # check trigger-8 success: 1
6187 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6188 f_int2 = CAST(f_char1 AS SIGNED INT),
6189 f_charbig = 'just inserted'
6190 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6192 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6194 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6195 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6197 SET new.f_int1 = old.f_int1 + @max_row,
6198 new.f_int2 = old.f_int2 - @max_row,
6199 new.f_charbig = '####updated per update trigger####';
6202 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6203 f_charbig = '####updated per update statement itself####';
6205 # check trigger-9 success: 1
6207 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6208 f_int2 = CAST(f_char1 AS SIGNED INT),
6209 f_charbig = CONCAT('===',f_char1,'===');
6210 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6212 SET new.f_int1 = new.f_int1 + @max_row,
6213 new.f_int2 = new.f_int2 - @max_row,
6214 new.f_charbig = '####updated per update trigger####';
6217 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6218 f_charbig = '####updated per update statement itself####';
6220 # check trigger-10 success: 1
6222 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6223 f_int2 = CAST(f_char1 AS SIGNED INT),
6224 f_charbig = CONCAT('===',f_char1,'===');
6225 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6227 SET new.f_int1 = @my_max1 + @counter,
6228 new.f_int2 = @my_min2 - @counter,
6229 new.f_charbig = '####updated per insert trigger####';
6230 SET @counter = @counter + 1;
6233 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6234 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6235 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6236 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6237 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6241 # check trigger-11 success: 1
6243 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6244 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6245 AND f_charbig = '####updated per insert trigger####';
6246 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6248 SET new.f_int1 = @my_max1 + @counter,
6249 new.f_int2 = @my_min2 - @counter,
6250 new.f_charbig = '####updated per insert trigger####';
6251 SET @counter = @counter + 1;
6254 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6255 INSERT INTO t1 (f_char1, f_char2, f_charbig)
6256 SELECT CAST(f_int1 AS CHAR),
6257 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6258 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6262 # check trigger-12 success: 1
6264 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6265 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6266 AND f_charbig = '####updated per insert trigger####';
6268 Table Op Msg_type Msg_text
6269 test.t1 analyze status OK
6270 CHECK TABLE t1 EXTENDED;
6271 Table Op Msg_type Msg_text
6272 test.t1 check status OK
6273 CHECKSUM TABLE t1 EXTENDED;
6275 test.t1 <some_value>
6277 Table Op Msg_type Msg_text
6278 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
6279 test.t1 optimize status OK
6280 # check layout success: 1
6281 REPAIR TABLE t1 EXTENDED;
6282 Table Op Msg_type Msg_text
6283 test.t1 repair note The storage engine for the table doesn't support repair
6284 # check layout success: 1
6287 # check TRUNCATE success: 1
6288 # check layout success: 1
6289 # End usability test (inc/partition_check.inc)
6296 f_charbig VARCHAR(1000)
6297 , PRIMARY KEY (f_int1,f_int2)
6299 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
6300 (PARTITION part1 VALUES LESS THAN (0)
6301 (SUBPARTITION subpart11, SUBPARTITION subpart12),
6302 PARTITION part2 VALUES LESS THAN (5)
6303 (SUBPARTITION subpart21, SUBPARTITION subpart22),
6304 PARTITION part3 VALUES LESS THAN (10)
6305 (SUBPARTITION subpart31, SUBPARTITION subpart32),
6306 PARTITION part4 VALUES LESS THAN (2147483646)
6307 (SUBPARTITION subpart41, SUBPARTITION subpart42));
6308 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6309 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6310 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6311 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
6312 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6313 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6314 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6315 # Start usability test (inc/partition_check.inc)
6317 SHOW CREATE TABLE t1;
6319 t1 CREATE TABLE `t1` (
6320 `f_int1` int(11) NOT NULL DEFAULT '0',
6321 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
6322 `f_char1` char(20) DEFAULT NULL,
6323 `f_char2` char(20) DEFAULT NULL,
6324 `f_charbig` varchar(1000) DEFAULT NULL,
6325 PRIMARY KEY (`f_int1`,`f_int2`)
6326 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
6327 /*!50100 PARTITION BY RANGE (f_int1)
6328 SUBPARTITION BY KEY (f_int1)
6329 (PARTITION part1 VALUES LESS THAN (0)
6330 (SUBPARTITION subpart11 ENGINE = InnoDB,
6331 SUBPARTITION subpart12 ENGINE = InnoDB),
6332 PARTITION part2 VALUES LESS THAN (5)
6333 (SUBPARTITION subpart21 ENGINE = InnoDB,
6334 SUBPARTITION subpart22 ENGINE = InnoDB),
6335 PARTITION part3 VALUES LESS THAN (10)
6336 (SUBPARTITION subpart31 ENGINE = InnoDB,
6337 SUBPARTITION subpart32 ENGINE = InnoDB),
6338 PARTITION part4 VALUES LESS THAN (2147483646)
6339 (SUBPARTITION subpart41 ENGINE = InnoDB,
6340 SUBPARTITION subpart42 ENGINE = InnoDB)) */
6342 # check prerequisites-1 success: 1
6343 # check COUNT(*) success: 1
6344 # check MIN/MAX(f_int1) success: 1
6345 # check MIN/MAX(f_int2) success: 1
6346 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6347 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6348 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6349 WHERE f_int1 IN (2,3);
6350 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
6351 # check prerequisites-3 success: 1
6352 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
6353 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6354 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
6355 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
6356 WHERE f_int1 IN (2,3);
6357 DELETE FROM t1 WHERE f_charbig = 'delete me';
6358 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6359 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
6360 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
6361 WHERE f_int1 IN (2,3);
6362 DELETE FROM t1 WHERE f_charbig = 'delete me';
6363 # check read via f_int1 success: 1
6364 # check read via f_int2 success: 1
6366 # check multiple-1 success: 1
6367 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6369 # check multiple-2 success: 1
6370 INSERT INTO t1 SELECT * FROM t0_template
6371 WHERE MOD(f_int1,3) = 0;
6373 # check multiple-3 success: 1
6374 UPDATE t1 SET f_int1 = f_int1 + @max_row
6375 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6376 AND @max_row_div2 + @max_row_div4;
6378 # check multiple-4 success: 1
6380 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6381 AND @max_row_div2 + @max_row_div4 + @max_row;
6383 # check multiple-5 success: 1
6384 SELECT COUNT(*) INTO @try_count FROM t0_template
6385 WHERE MOD(f_int1,3) = 0
6386 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6387 SELECT COUNT(*) INTO @clash_count
6388 FROM t1 INNER JOIN t0_template USING(f_int1)
6389 WHERE MOD(f_int1,3) = 0
6390 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6391 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6393 SET f_int1 = @cur_value , f_int2 = @cur_value,
6394 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6395 f_charbig = '#SINGLE#';
6397 # check single-1 success: 1
6398 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6400 SET f_int1 = @cur_value , f_int2 = @cur_value,
6401 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6402 f_charbig = '#SINGLE#';
6404 # check single-2 success: 1
6405 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6406 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6407 UPDATE t1 SET f_int1 = @cur_value2
6408 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6410 # check single-3 success: 1
6411 SET @cur_value1= -1;
6412 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6413 UPDATE t1 SET f_int1 = @cur_value1
6414 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6416 # check single-4 success: 1
6417 SELECT MAX(f_int1) INTO @cur_value FROM t1;
6418 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6420 # check single-5 success: 1
6421 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6423 # check single-6 success: 1
6424 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6425 ERROR HY000: Table has no partition for value 2147483647
6426 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6427 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6428 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6429 f_charbig = '#NULL#';
6431 SET f_int1 = NULL , f_int2 = -@max_row,
6432 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6433 f_charbig = '#NULL#';
6434 ERROR 23000: Column 'f_int1' cannot be null
6435 # check null success: 1
6437 WHERE f_int1 = 0 AND f_int2 = 0
6438 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6439 AND f_charbig = '#NULL#';
6440 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6441 SELECT f_int1, f_int1, '', '', 'was inserted'
6442 FROM t0_template source_tab
6443 WHERE MOD(f_int1,3) = 0
6444 AND f_int1 BETWEEN @max_row_div2 AND @max_row
6446 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
6447 f_int2 = 2 * @max_row + source_tab.f_int1,
6448 f_charbig = 'was updated';
6450 # check unique-1-a success: 1
6452 # check unique-1-b success: 1
6453 DELETE FROM t1 WHERE f_charbig = 'was inserted';
6454 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6455 f_int2 = CAST(f_char1 AS SIGNED INT),
6456 f_charbig = CONCAT('===',f_char1,'===')
6457 WHERE f_charbig = 'was updated';
6458 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6459 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
6460 FROM t0_template source_tab
6461 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6463 # check replace success: 1
6465 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
6467 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
6468 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
6469 UPDATE t1 SET f_int2 = f_int1,
6470 f_char1 = CAST(f_int1 AS CHAR),
6471 f_char2 = CAST(f_int1 AS CHAR),
6472 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
6473 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
6475 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6476 SELECT f_int1, f_int1, '', '', 'was inserted'
6477 FROM t0_template source_tab
6478 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6480 # check transactions-1 success: 1
6483 # check transactions-2 success: 1
6486 # check transactions-3 success: 1
6487 DELETE FROM t1 WHERE f_charbig = 'was inserted';
6491 # check transactions-4 success: 1
6492 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6493 SELECT f_int1, f_int1, '', '', 'was inserted'
6494 FROM t0_template source_tab
6495 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6497 # check transactions-5 success: 1
6500 # check transactions-6 success: 1
6501 # INFO: Storage engine used for t1 seems to be transactional.
6504 # check transactions-7 success: 1
6505 DELETE FROM t1 WHERE f_charbig = 'was inserted';
6507 SET @@session.sql_mode = 'traditional';
6508 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6509 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6510 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6511 '', '', 'was inserted' FROM t0_template
6512 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6513 ERROR 22012: Division by 0
6516 # check transactions-8 success: 1
6517 # INFO: Storage engine used for t1 seems to be able to revert
6518 # changes made by the failing statement.
6519 SET @@session.sql_mode = '';
6521 DELETE FROM t1 WHERE f_charbig = 'was inserted';
6523 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6525 # check special-1 success: 1
6526 UPDATE t1 SET f_charbig = '';
6528 # check special-2 success: 1
6529 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6530 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6531 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6532 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6533 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6534 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6535 'just inserted' FROM t0_template
6536 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6537 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6539 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6540 f_charbig = 'updated by trigger'
6541 WHERE f_int1 = new.f_int1;
6543 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6544 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6545 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6547 # check trigger-1 success: 1
6549 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6550 f_int2 = CAST(f_char1 AS SIGNED INT),
6551 f_charbig = 'just inserted'
6552 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6554 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6555 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6556 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6557 'just inserted' FROM t0_template
6558 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6559 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6561 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6562 f_charbig = 'updated by trigger'
6563 WHERE f_int1 = new.f_int1;
6565 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6566 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6567 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6569 # check trigger-2 success: 1
6571 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6572 f_int2 = CAST(f_char1 AS SIGNED INT),
6573 f_charbig = 'just inserted'
6574 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6576 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6577 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6578 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6579 'just inserted' FROM t0_template
6580 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6581 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6583 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6584 f_charbig = 'updated by trigger'
6585 WHERE f_int1 = new.f_int1;
6587 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6588 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6590 # check trigger-3 success: 1
6592 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6593 f_int2 = CAST(f_char1 AS SIGNED INT),
6594 f_charbig = 'just inserted'
6595 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6597 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6598 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6599 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6600 'just inserted' FROM t0_template
6601 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6602 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6604 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6605 f_charbig = 'updated by trigger'
6606 WHERE f_int1 = - old.f_int1;
6608 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6609 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6611 # check trigger-4 success: 1
6613 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6614 f_int2 = CAST(f_char1 AS SIGNED INT),
6615 f_charbig = 'just inserted'
6616 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6618 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6619 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6620 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6621 'just inserted' FROM t0_template
6622 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6623 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6625 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6626 f_charbig = 'updated by trigger'
6627 WHERE f_int1 = new.f_int1;
6629 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6630 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6632 # check trigger-5 success: 1
6634 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6635 f_int2 = CAST(f_char1 AS SIGNED INT),
6636 f_charbig = 'just inserted'
6637 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6639 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6640 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6641 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6642 'just inserted' FROM t0_template
6643 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6644 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6646 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6647 f_charbig = 'updated by trigger'
6648 WHERE f_int1 = - old.f_int1;
6650 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6651 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6653 # check trigger-6 success: 1
6655 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6656 f_int2 = CAST(f_char1 AS SIGNED INT),
6657 f_charbig = 'just inserted'
6658 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6660 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6661 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6662 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6663 'just inserted' FROM t0_template
6664 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6665 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6667 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6668 f_charbig = 'updated by trigger'
6669 WHERE f_int1 = - old.f_int1;
6672 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6674 # check trigger-7 success: 1
6676 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6677 f_int2 = CAST(f_char1 AS SIGNED INT),
6678 f_charbig = 'just inserted'
6679 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6681 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6682 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6683 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6684 'just inserted' FROM t0_template
6685 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6686 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6688 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6689 f_charbig = 'updated by trigger'
6690 WHERE f_int1 = - old.f_int1;
6693 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6695 # check trigger-8 success: 1
6697 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6698 f_int2 = CAST(f_char1 AS SIGNED INT),
6699 f_charbig = 'just inserted'
6700 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6702 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6704 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6705 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6707 SET new.f_int1 = old.f_int1 + @max_row,
6708 new.f_int2 = old.f_int2 - @max_row,
6709 new.f_charbig = '####updated per update trigger####';
6712 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6713 f_charbig = '####updated per update statement itself####';
6715 # check trigger-9 success: 1
6717 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6718 f_int2 = CAST(f_char1 AS SIGNED INT),
6719 f_charbig = CONCAT('===',f_char1,'===');
6720 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6722 SET new.f_int1 = new.f_int1 + @max_row,
6723 new.f_int2 = new.f_int2 - @max_row,
6724 new.f_charbig = '####updated per update trigger####';
6727 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6728 f_charbig = '####updated per update statement itself####';
6730 # check trigger-10 success: 1
6732 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6733 f_int2 = CAST(f_char1 AS SIGNED INT),
6734 f_charbig = CONCAT('===',f_char1,'===');
6735 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6737 SET new.f_int1 = @my_max1 + @counter,
6738 new.f_int2 = @my_min2 - @counter,
6739 new.f_charbig = '####updated per insert trigger####';
6740 SET @counter = @counter + 1;
6743 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6744 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6745 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6746 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6747 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6751 # check trigger-11 success: 1
6753 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6754 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6755 AND f_charbig = '####updated per insert trigger####';
6756 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6758 SET new.f_int1 = @my_max1 + @counter,
6759 new.f_int2 = @my_min2 - @counter,
6760 new.f_charbig = '####updated per insert trigger####';
6761 SET @counter = @counter + 1;
6764 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6765 INSERT INTO t1 (f_char1, f_char2, f_charbig)
6766 SELECT CAST(f_int1 AS CHAR),
6767 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6768 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6772 # check trigger-12 success: 1
6774 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6775 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6776 AND f_charbig = '####updated per insert trigger####';
6778 Table Op Msg_type Msg_text
6779 test.t1 analyze status OK
6780 CHECK TABLE t1 EXTENDED;
6781 Table Op Msg_type Msg_text
6782 test.t1 check status OK
6783 CHECKSUM TABLE t1 EXTENDED;
6785 test.t1 <some_value>
6787 Table Op Msg_type Msg_text
6788 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
6789 test.t1 optimize status OK
6790 # check layout success: 1
6791 REPAIR TABLE t1 EXTENDED;
6792 Table Op Msg_type Msg_text
6793 test.t1 repair note The storage engine for the table doesn't support repair
6794 # check layout success: 1
6797 # check TRUNCATE success: 1
6798 # check layout success: 1
6799 # End usability test (inc/partition_check.inc)
6806 f_charbig VARCHAR(1000)
6807 , PRIMARY KEY (f_int1,f_int2)
6809 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
6810 (PARTITION part1 VALUES IN (0)
6811 (SUBPARTITION sp11, SUBPARTITION sp12),
6812 PARTITION part2 VALUES IN (1)
6813 (SUBPARTITION sp21, SUBPARTITION sp22),
6814 PARTITION part3 VALUES IN (2)
6815 (SUBPARTITION sp31, SUBPARTITION sp32),
6816 PARTITION part4 VALUES IN (NULL)
6817 (SUBPARTITION sp41, SUBPARTITION sp42));
6818 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6819 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6820 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6821 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
6822 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6823 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6824 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6825 # Start usability test (inc/partition_check.inc)
6827 SHOW CREATE TABLE t1;
6829 t1 CREATE TABLE `t1` (
6830 `f_int1` int(11) NOT NULL DEFAULT '0',
6831 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
6832 `f_char1` char(20) DEFAULT NULL,
6833 `f_char2` char(20) DEFAULT NULL,
6834 `f_charbig` varchar(1000) DEFAULT NULL,
6835 PRIMARY KEY (`f_int1`,`f_int2`)
6836 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
6837 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
6838 SUBPARTITION BY HASH (f_int1 + 1)
6839 (PARTITION part1 VALUES IN (0)
6840 (SUBPARTITION sp11 ENGINE = InnoDB,
6841 SUBPARTITION sp12 ENGINE = InnoDB),
6842 PARTITION part2 VALUES IN (1)
6843 (SUBPARTITION sp21 ENGINE = InnoDB,
6844 SUBPARTITION sp22 ENGINE = InnoDB),
6845 PARTITION part3 VALUES IN (2)
6846 (SUBPARTITION sp31 ENGINE = InnoDB,
6847 SUBPARTITION sp32 ENGINE = InnoDB),
6848 PARTITION part4 VALUES IN (NULL)
6849 (SUBPARTITION sp41 ENGINE = InnoDB,
6850 SUBPARTITION sp42 ENGINE = InnoDB)) */
6852 # check prerequisites-1 success: 1
6853 # check COUNT(*) success: 1
6854 # check MIN/MAX(f_int1) success: 1
6855 # check MIN/MAX(f_int2) success: 1
6856 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6857 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6858 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6859 WHERE f_int1 IN (2,3);
6860 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
6861 # check prerequisites-3 success: 1
6862 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
6863 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6864 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
6865 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
6866 WHERE f_int1 IN (2,3);
6867 DELETE FROM t1 WHERE f_charbig = 'delete me';
6868 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6869 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
6870 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
6871 WHERE f_int1 IN (2,3);
6872 DELETE FROM t1 WHERE f_charbig = 'delete me';
6873 # check read via f_int1 success: 1
6874 # check read via f_int2 success: 1
6876 # check multiple-1 success: 1
6877 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6879 # check multiple-2 success: 1
6880 INSERT INTO t1 SELECT * FROM t0_template
6881 WHERE MOD(f_int1,3) = 0;
6883 # check multiple-3 success: 1
6884 UPDATE t1 SET f_int1 = f_int1 + @max_row
6885 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6886 AND @max_row_div2 + @max_row_div4;
6888 # check multiple-4 success: 1
6890 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6891 AND @max_row_div2 + @max_row_div4 + @max_row;
6893 # check multiple-5 success: 1
6894 SELECT COUNT(*) INTO @try_count FROM t0_template
6895 WHERE MOD(f_int1,3) = 0
6896 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6897 SELECT COUNT(*) INTO @clash_count
6898 FROM t1 INNER JOIN t0_template USING(f_int1)
6899 WHERE MOD(f_int1,3) = 0
6900 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6901 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6903 SET f_int1 = @cur_value , f_int2 = @cur_value,
6904 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6905 f_charbig = '#SINGLE#';
6907 # check single-1 success: 1
6908 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6910 SET f_int1 = @cur_value , f_int2 = @cur_value,
6911 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6912 f_charbig = '#SINGLE#';
6914 # check single-2 success: 1
6915 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6916 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6917 UPDATE t1 SET f_int1 = @cur_value2
6918 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6920 # check single-3 success: 1
6921 SET @cur_value1= -1;
6922 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6923 UPDATE t1 SET f_int1 = @cur_value1
6924 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6926 # check single-4 success: 1
6927 SELECT MAX(f_int1) INTO @cur_value FROM t1;
6928 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6930 # check single-5 success: 1
6931 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6933 # check single-6 success: 1
6934 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6936 Warning 1264 Out of range value for column 'f_int2' at row 1
6938 # check single-7 success: 1
6939 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6940 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6941 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6942 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6943 f_charbig = '#NULL#';
6945 SET f_int1 = NULL , f_int2 = -@max_row,
6946 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6947 f_charbig = '#NULL#';
6948 ERROR 23000: Column 'f_int1' cannot be null
6949 # check null success: 1
6951 WHERE f_int1 = 0 AND f_int2 = 0
6952 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6953 AND f_charbig = '#NULL#';
6954 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6955 SELECT f_int1, f_int1, '', '', 'was inserted'
6956 FROM t0_template source_tab
6957 WHERE MOD(f_int1,3) = 0
6958 AND f_int1 BETWEEN @max_row_div2 AND @max_row
6960 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
6961 f_int2 = 2 * @max_row + source_tab.f_int1,
6962 f_charbig = 'was updated';
6964 # check unique-1-a success: 1
6966 # check unique-1-b success: 1
6967 DELETE FROM t1 WHERE f_charbig = 'was inserted';
6968 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6969 f_int2 = CAST(f_char1 AS SIGNED INT),
6970 f_charbig = CONCAT('===',f_char1,'===')
6971 WHERE f_charbig = 'was updated';
6972 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6973 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
6974 FROM t0_template source_tab
6975 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6977 # check replace success: 1
6979 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
6981 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
6982 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
6983 UPDATE t1 SET f_int2 = f_int1,
6984 f_char1 = CAST(f_int1 AS CHAR),
6985 f_char2 = CAST(f_int1 AS CHAR),
6986 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
6987 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
6989 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6990 SELECT f_int1, f_int1, '', '', 'was inserted'
6991 FROM t0_template source_tab
6992 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6994 # check transactions-1 success: 1
6997 # check transactions-2 success: 1
7000 # check transactions-3 success: 1
7001 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7005 # check transactions-4 success: 1
7006 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7007 SELECT f_int1, f_int1, '', '', 'was inserted'
7008 FROM t0_template source_tab
7009 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7011 # check transactions-5 success: 1
7014 # check transactions-6 success: 1
7015 # INFO: Storage engine used for t1 seems to be transactional.
7018 # check transactions-7 success: 1
7019 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7021 SET @@session.sql_mode = 'traditional';
7022 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7023 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7024 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7025 '', '', 'was inserted' FROM t0_template
7026 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7027 ERROR 22012: Division by 0
7030 # check transactions-8 success: 1
7031 # INFO: Storage engine used for t1 seems to be able to revert
7032 # changes made by the failing statement.
7033 SET @@session.sql_mode = '';
7035 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7037 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7039 # check special-1 success: 1
7040 UPDATE t1 SET f_charbig = '';
7042 # check special-2 success: 1
7043 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7044 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7045 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7046 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7047 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7048 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7049 'just inserted' FROM t0_template
7050 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7051 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7053 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7054 f_charbig = 'updated by trigger'
7055 WHERE f_int1 = new.f_int1;
7057 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7058 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7059 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7061 # check trigger-1 success: 1
7063 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7064 f_int2 = CAST(f_char1 AS SIGNED INT),
7065 f_charbig = 'just inserted'
7066 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7068 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7069 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7070 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7071 'just inserted' FROM t0_template
7072 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7073 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7075 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7076 f_charbig = 'updated by trigger'
7077 WHERE f_int1 = new.f_int1;
7079 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7080 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7081 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7083 # check trigger-2 success: 1
7085 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7086 f_int2 = CAST(f_char1 AS SIGNED INT),
7087 f_charbig = 'just inserted'
7088 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7090 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7091 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7092 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7093 'just inserted' FROM t0_template
7094 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7095 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7097 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7098 f_charbig = 'updated by trigger'
7099 WHERE f_int1 = new.f_int1;
7101 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7102 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7104 # check trigger-3 success: 1
7106 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7107 f_int2 = CAST(f_char1 AS SIGNED INT),
7108 f_charbig = 'just inserted'
7109 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7111 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7112 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7113 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7114 'just inserted' FROM t0_template
7115 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7116 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7118 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7119 f_charbig = 'updated by trigger'
7120 WHERE f_int1 = - old.f_int1;
7122 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7123 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7125 # check trigger-4 success: 1
7127 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7128 f_int2 = CAST(f_char1 AS SIGNED INT),
7129 f_charbig = 'just inserted'
7130 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7132 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7133 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7134 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7135 'just inserted' FROM t0_template
7136 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7137 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7139 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7140 f_charbig = 'updated by trigger'
7141 WHERE f_int1 = new.f_int1;
7143 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7144 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7146 # check trigger-5 success: 1
7148 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7149 f_int2 = CAST(f_char1 AS SIGNED INT),
7150 f_charbig = 'just inserted'
7151 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7153 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7154 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7155 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7156 'just inserted' FROM t0_template
7157 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7158 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7160 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7161 f_charbig = 'updated by trigger'
7162 WHERE f_int1 = - old.f_int1;
7164 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7165 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7167 # check trigger-6 success: 1
7169 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7170 f_int2 = CAST(f_char1 AS SIGNED INT),
7171 f_charbig = 'just inserted'
7172 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7174 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7175 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7176 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7177 'just inserted' FROM t0_template
7178 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7179 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7181 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7182 f_charbig = 'updated by trigger'
7183 WHERE f_int1 = - old.f_int1;
7186 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7188 # check trigger-7 success: 1
7190 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7191 f_int2 = CAST(f_char1 AS SIGNED INT),
7192 f_charbig = 'just inserted'
7193 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7195 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7196 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7197 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7198 'just inserted' FROM t0_template
7199 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7200 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7202 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7203 f_charbig = 'updated by trigger'
7204 WHERE f_int1 = - old.f_int1;
7207 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7209 # check trigger-8 success: 1
7211 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7212 f_int2 = CAST(f_char1 AS SIGNED INT),
7213 f_charbig = 'just inserted'
7214 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7216 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7218 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7219 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7221 SET new.f_int1 = old.f_int1 + @max_row,
7222 new.f_int2 = old.f_int2 - @max_row,
7223 new.f_charbig = '####updated per update trigger####';
7226 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7227 f_charbig = '####updated per update statement itself####';
7229 # check trigger-9 success: 1
7231 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7232 f_int2 = CAST(f_char1 AS SIGNED INT),
7233 f_charbig = CONCAT('===',f_char1,'===');
7234 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7236 SET new.f_int1 = new.f_int1 + @max_row,
7237 new.f_int2 = new.f_int2 - @max_row,
7238 new.f_charbig = '####updated per update trigger####';
7241 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7242 f_charbig = '####updated per update statement itself####';
7244 # check trigger-10 success: 1
7246 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7247 f_int2 = CAST(f_char1 AS SIGNED INT),
7248 f_charbig = CONCAT('===',f_char1,'===');
7249 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7251 SET new.f_int1 = @my_max1 + @counter,
7252 new.f_int2 = @my_min2 - @counter,
7253 new.f_charbig = '####updated per insert trigger####';
7254 SET @counter = @counter + 1;
7257 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7258 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7259 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7260 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7261 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7265 # check trigger-11 success: 1
7267 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7268 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7269 AND f_charbig = '####updated per insert trigger####';
7270 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7272 SET new.f_int1 = @my_max1 + @counter,
7273 new.f_int2 = @my_min2 - @counter,
7274 new.f_charbig = '####updated per insert trigger####';
7275 SET @counter = @counter + 1;
7278 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7279 INSERT INTO t1 (f_char1, f_char2, f_charbig)
7280 SELECT CAST(f_int1 AS CHAR),
7281 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7282 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7286 # check trigger-12 success: 1
7288 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7289 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7290 AND f_charbig = '####updated per insert trigger####';
7292 Table Op Msg_type Msg_text
7293 test.t1 analyze status OK
7294 CHECK TABLE t1 EXTENDED;
7295 Table Op Msg_type Msg_text
7296 test.t1 check status OK
7297 CHECKSUM TABLE t1 EXTENDED;
7299 test.t1 <some_value>
7301 Table Op Msg_type Msg_text
7302 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
7303 test.t1 optimize status OK
7304 # check layout success: 1
7305 REPAIR TABLE t1 EXTENDED;
7306 Table Op Msg_type Msg_text
7307 test.t1 repair note The storage engine for the table doesn't support repair
7308 # check layout success: 1
7311 # check TRUNCATE success: 1
7312 # check layout success: 1
7313 # End usability test (inc/partition_check.inc)
7320 f_charbig VARCHAR(1000)
7321 , PRIMARY KEY (f_int1,f_int2)
7323 PARTITION BY LIST(ABS(MOD(f_int1,2)))
7324 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
7325 (PARTITION part1 VALUES IN (0),
7326 PARTITION part2 VALUES IN (1),
7327 PARTITION part3 VALUES IN (NULL));
7328 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7329 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7330 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7331 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
7332 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7333 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7334 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7335 # Start usability test (inc/partition_check.inc)
7337 SHOW CREATE TABLE t1;
7339 t1 CREATE TABLE `t1` (
7340 `f_int1` int(11) NOT NULL DEFAULT '0',
7341 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
7342 `f_char1` char(20) DEFAULT NULL,
7343 `f_char2` char(20) DEFAULT NULL,
7344 `f_charbig` varchar(1000) DEFAULT NULL,
7345 PRIMARY KEY (`f_int1`,`f_int2`)
7346 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
7347 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
7348 SUBPARTITION BY KEY (f_int1)
7350 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
7351 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
7352 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
7354 # check prerequisites-1 success: 1
7355 # check COUNT(*) success: 1
7356 # check MIN/MAX(f_int1) success: 1
7357 # check MIN/MAX(f_int2) success: 1
7358 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7359 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7360 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7361 WHERE f_int1 IN (2,3);
7362 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
7363 # check prerequisites-3 success: 1
7364 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
7365 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7366 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7367 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7368 WHERE f_int1 IN (2,3);
7369 DELETE FROM t1 WHERE f_charbig = 'delete me';
7370 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7371 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7372 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7373 WHERE f_int1 IN (2,3);
7374 DELETE FROM t1 WHERE f_charbig = 'delete me';
7375 # check read via f_int1 success: 1
7376 # check read via f_int2 success: 1
7378 # check multiple-1 success: 1
7379 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7381 # check multiple-2 success: 1
7382 INSERT INTO t1 SELECT * FROM t0_template
7383 WHERE MOD(f_int1,3) = 0;
7385 # check multiple-3 success: 1
7386 UPDATE t1 SET f_int1 = f_int1 + @max_row
7387 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7388 AND @max_row_div2 + @max_row_div4;
7390 # check multiple-4 success: 1
7392 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7393 AND @max_row_div2 + @max_row_div4 + @max_row;
7395 # check multiple-5 success: 1
7396 SELECT COUNT(*) INTO @try_count FROM t0_template
7397 WHERE MOD(f_int1,3) = 0
7398 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7399 SELECT COUNT(*) INTO @clash_count
7400 FROM t1 INNER JOIN t0_template USING(f_int1)
7401 WHERE MOD(f_int1,3) = 0
7402 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7403 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7405 SET f_int1 = @cur_value , f_int2 = @cur_value,
7406 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7407 f_charbig = '#SINGLE#';
7409 # check single-1 success: 1
7410 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7412 SET f_int1 = @cur_value , f_int2 = @cur_value,
7413 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7414 f_charbig = '#SINGLE#';
7416 # check single-2 success: 1
7417 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7418 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7419 UPDATE t1 SET f_int1 = @cur_value2
7420 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7422 # check single-3 success: 1
7423 SET @cur_value1= -1;
7424 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7425 UPDATE t1 SET f_int1 = @cur_value1
7426 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7428 # check single-4 success: 1
7429 SELECT MAX(f_int1) INTO @cur_value FROM t1;
7430 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7432 # check single-5 success: 1
7433 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7435 # check single-6 success: 1
7436 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7438 Warning 1264 Out of range value for column 'f_int2' at row 1
7440 # check single-7 success: 1
7441 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7442 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7443 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7444 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7445 f_charbig = '#NULL#';
7447 SET f_int1 = NULL , f_int2 = -@max_row,
7448 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7449 f_charbig = '#NULL#';
7450 ERROR 23000: Column 'f_int1' cannot be null
7451 # check null success: 1
7453 WHERE f_int1 = 0 AND f_int2 = 0
7454 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7455 AND f_charbig = '#NULL#';
7456 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7457 SELECT f_int1, f_int1, '', '', 'was inserted'
7458 FROM t0_template source_tab
7459 WHERE MOD(f_int1,3) = 0
7460 AND f_int1 BETWEEN @max_row_div2 AND @max_row
7462 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
7463 f_int2 = 2 * @max_row + source_tab.f_int1,
7464 f_charbig = 'was updated';
7466 # check unique-1-a success: 1
7468 # check unique-1-b success: 1
7469 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7470 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7471 f_int2 = CAST(f_char1 AS SIGNED INT),
7472 f_charbig = CONCAT('===',f_char1,'===')
7473 WHERE f_charbig = 'was updated';
7474 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7475 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
7476 FROM t0_template source_tab
7477 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7479 # check replace success: 1
7481 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
7483 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
7484 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
7485 UPDATE t1 SET f_int2 = f_int1,
7486 f_char1 = CAST(f_int1 AS CHAR),
7487 f_char2 = CAST(f_int1 AS CHAR),
7488 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
7489 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
7491 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7492 SELECT f_int1, f_int1, '', '', 'was inserted'
7493 FROM t0_template source_tab
7494 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7496 # check transactions-1 success: 1
7499 # check transactions-2 success: 1
7502 # check transactions-3 success: 1
7503 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7507 # check transactions-4 success: 1
7508 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7509 SELECT f_int1, f_int1, '', '', 'was inserted'
7510 FROM t0_template source_tab
7511 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7513 # check transactions-5 success: 1
7516 # check transactions-6 success: 1
7517 # INFO: Storage engine used for t1 seems to be transactional.
7520 # check transactions-7 success: 1
7521 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7523 SET @@session.sql_mode = 'traditional';
7524 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7525 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7526 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7527 '', '', 'was inserted' FROM t0_template
7528 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7529 ERROR 22012: Division by 0
7532 # check transactions-8 success: 1
7533 # INFO: Storage engine used for t1 seems to be able to revert
7534 # changes made by the failing statement.
7535 SET @@session.sql_mode = '';
7537 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7539 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7541 # check special-1 success: 1
7542 UPDATE t1 SET f_charbig = '';
7544 # check special-2 success: 1
7545 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7546 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7547 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7548 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7549 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7550 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7551 'just inserted' FROM t0_template
7552 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7553 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7555 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7556 f_charbig = 'updated by trigger'
7557 WHERE f_int1 = new.f_int1;
7559 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7560 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7561 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7563 # check trigger-1 success: 1
7565 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7566 f_int2 = CAST(f_char1 AS SIGNED INT),
7567 f_charbig = 'just inserted'
7568 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7570 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7571 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7572 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7573 'just inserted' FROM t0_template
7574 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7575 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7577 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7578 f_charbig = 'updated by trigger'
7579 WHERE f_int1 = new.f_int1;
7581 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7582 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7583 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7585 # check trigger-2 success: 1
7587 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7588 f_int2 = CAST(f_char1 AS SIGNED INT),
7589 f_charbig = 'just inserted'
7590 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7592 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7593 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7594 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7595 'just inserted' FROM t0_template
7596 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7597 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7599 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7600 f_charbig = 'updated by trigger'
7601 WHERE f_int1 = new.f_int1;
7603 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7604 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7606 # check trigger-3 success: 1
7608 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7609 f_int2 = CAST(f_char1 AS SIGNED INT),
7610 f_charbig = 'just inserted'
7611 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7613 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7614 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7615 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7616 'just inserted' FROM t0_template
7617 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7618 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7620 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7621 f_charbig = 'updated by trigger'
7622 WHERE f_int1 = - old.f_int1;
7624 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7625 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7627 # check trigger-4 success: 1
7629 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7630 f_int2 = CAST(f_char1 AS SIGNED INT),
7631 f_charbig = 'just inserted'
7632 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7634 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7635 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7636 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7637 'just inserted' FROM t0_template
7638 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7639 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7641 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7642 f_charbig = 'updated by trigger'
7643 WHERE f_int1 = new.f_int1;
7645 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7646 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7648 # check trigger-5 success: 1
7650 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7651 f_int2 = CAST(f_char1 AS SIGNED INT),
7652 f_charbig = 'just inserted'
7653 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7655 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7656 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7657 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7658 'just inserted' FROM t0_template
7659 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7660 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7662 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7663 f_charbig = 'updated by trigger'
7664 WHERE f_int1 = - old.f_int1;
7666 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7667 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7669 # check trigger-6 success: 1
7671 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7672 f_int2 = CAST(f_char1 AS SIGNED INT),
7673 f_charbig = 'just inserted'
7674 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7676 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7677 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7678 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7679 'just inserted' FROM t0_template
7680 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7681 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7683 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7684 f_charbig = 'updated by trigger'
7685 WHERE f_int1 = - old.f_int1;
7688 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7690 # check trigger-7 success: 1
7692 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7693 f_int2 = CAST(f_char1 AS SIGNED INT),
7694 f_charbig = 'just inserted'
7695 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7697 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7698 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7699 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7700 'just inserted' FROM t0_template
7701 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7702 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7704 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7705 f_charbig = 'updated by trigger'
7706 WHERE f_int1 = - old.f_int1;
7709 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7711 # check trigger-8 success: 1
7713 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7714 f_int2 = CAST(f_char1 AS SIGNED INT),
7715 f_charbig = 'just inserted'
7716 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7718 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7720 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7721 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7723 SET new.f_int1 = old.f_int1 + @max_row,
7724 new.f_int2 = old.f_int2 - @max_row,
7725 new.f_charbig = '####updated per update trigger####';
7728 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7729 f_charbig = '####updated per update statement itself####';
7731 # check trigger-9 success: 1
7733 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7734 f_int2 = CAST(f_char1 AS SIGNED INT),
7735 f_charbig = CONCAT('===',f_char1,'===');
7736 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7738 SET new.f_int1 = new.f_int1 + @max_row,
7739 new.f_int2 = new.f_int2 - @max_row,
7740 new.f_charbig = '####updated per update trigger####';
7743 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7744 f_charbig = '####updated per update statement itself####';
7746 # check trigger-10 success: 1
7748 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7749 f_int2 = CAST(f_char1 AS SIGNED INT),
7750 f_charbig = CONCAT('===',f_char1,'===');
7751 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7753 SET new.f_int1 = @my_max1 + @counter,
7754 new.f_int2 = @my_min2 - @counter,
7755 new.f_charbig = '####updated per insert trigger####';
7756 SET @counter = @counter + 1;
7759 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7760 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7761 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7762 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7763 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7767 # check trigger-11 success: 1
7769 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7770 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7771 AND f_charbig = '####updated per insert trigger####';
7772 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7774 SET new.f_int1 = @my_max1 + @counter,
7775 new.f_int2 = @my_min2 - @counter,
7776 new.f_charbig = '####updated per insert trigger####';
7777 SET @counter = @counter + 1;
7780 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7781 INSERT INTO t1 (f_char1, f_char2, f_charbig)
7782 SELECT CAST(f_int1 AS CHAR),
7783 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7784 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7788 # check trigger-12 success: 1
7790 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7791 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7792 AND f_charbig = '####updated per insert trigger####';
7794 Table Op Msg_type Msg_text
7795 test.t1 analyze status OK
7796 CHECK TABLE t1 EXTENDED;
7797 Table Op Msg_type Msg_text
7798 test.t1 check status OK
7799 CHECKSUM TABLE t1 EXTENDED;
7801 test.t1 <some_value>
7803 Table Op Msg_type Msg_text
7804 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
7805 test.t1 optimize status OK
7806 # check layout success: 1
7807 REPAIR TABLE t1 EXTENDED;
7808 Table Op Msg_type Msg_text
7809 test.t1 repair note The storage engine for the table doesn't support repair
7810 # check layout success: 1
7813 # check TRUNCATE success: 1
7814 # check layout success: 1
7815 # End usability test (inc/partition_check.inc)
7817 DROP TABLE IF EXISTS t1;
7823 f_charbig VARCHAR(1000)
7824 , PRIMARY KEY (f_int2,f_int1)
7826 PARTITION BY HASH(f_int1) PARTITIONS 2;
7827 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7828 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7829 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7830 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
7831 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7832 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7833 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7834 # Start usability test (inc/partition_check.inc)
7836 SHOW CREATE TABLE t1;
7838 t1 CREATE TABLE `t1` (
7839 `f_int1` int(11) NOT NULL DEFAULT '0',
7840 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
7841 `f_char1` char(20) DEFAULT NULL,
7842 `f_char2` char(20) DEFAULT NULL,
7843 `f_charbig` varchar(1000) DEFAULT NULL,
7844 PRIMARY KEY (`f_int2`,`f_int1`)
7845 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
7846 /*!50100 PARTITION BY HASH (f_int1)
7849 # check prerequisites-1 success: 1
7850 # check COUNT(*) success: 1
7851 # check MIN/MAX(f_int1) success: 1
7852 # check MIN/MAX(f_int2) success: 1
7853 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7854 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7855 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7856 WHERE f_int1 IN (2,3);
7857 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
7858 # check prerequisites-3 success: 1
7859 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
7860 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7861 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7862 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7863 WHERE f_int1 IN (2,3);
7864 DELETE FROM t1 WHERE f_charbig = 'delete me';
7865 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7866 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7867 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7868 WHERE f_int1 IN (2,3);
7869 DELETE FROM t1 WHERE f_charbig = 'delete me';
7870 # check read via f_int1 success: 1
7871 # check read via f_int2 success: 1
7873 # check multiple-1 success: 1
7874 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7876 # check multiple-2 success: 1
7877 INSERT INTO t1 SELECT * FROM t0_template
7878 WHERE MOD(f_int1,3) = 0;
7880 # check multiple-3 success: 1
7881 UPDATE t1 SET f_int1 = f_int1 + @max_row
7882 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7883 AND @max_row_div2 + @max_row_div4;
7885 # check multiple-4 success: 1
7887 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7888 AND @max_row_div2 + @max_row_div4 + @max_row;
7890 # check multiple-5 success: 1
7891 SELECT COUNT(*) INTO @try_count FROM t0_template
7892 WHERE MOD(f_int1,3) = 0
7893 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7894 SELECT COUNT(*) INTO @clash_count
7895 FROM t1 INNER JOIN t0_template USING(f_int1)
7896 WHERE MOD(f_int1,3) = 0
7897 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7898 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7900 SET f_int1 = @cur_value , f_int2 = @cur_value,
7901 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7902 f_charbig = '#SINGLE#';
7904 # check single-1 success: 1
7905 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7907 SET f_int1 = @cur_value , f_int2 = @cur_value,
7908 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7909 f_charbig = '#SINGLE#';
7911 # check single-2 success: 1
7912 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7913 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7914 UPDATE t1 SET f_int1 = @cur_value2
7915 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7917 # check single-3 success: 1
7918 SET @cur_value1= -1;
7919 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7920 UPDATE t1 SET f_int1 = @cur_value1
7921 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7923 # check single-4 success: 1
7924 SELECT MAX(f_int1) INTO @cur_value FROM t1;
7925 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7927 # check single-5 success: 1
7928 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7930 # check single-6 success: 1
7931 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7933 Warning 1264 Out of range value for column 'f_int2' at row 1
7935 # check single-7 success: 1
7936 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7937 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7938 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7939 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7940 f_charbig = '#NULL#';
7942 SET f_int1 = NULL , f_int2 = -@max_row,
7943 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7944 f_charbig = '#NULL#';
7945 ERROR 23000: Column 'f_int1' cannot be null
7946 # check null success: 1
7948 WHERE f_int1 = 0 AND f_int2 = 0
7949 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7950 AND f_charbig = '#NULL#';
7951 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7952 SELECT f_int1, f_int1, '', '', 'was inserted'
7953 FROM t0_template source_tab
7954 WHERE MOD(f_int1,3) = 0
7955 AND f_int1 BETWEEN @max_row_div2 AND @max_row
7957 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
7958 f_int2 = 2 * @max_row + source_tab.f_int1,
7959 f_charbig = 'was updated';
7961 # check unique-1-a success: 1
7963 # check unique-1-b success: 1
7964 DELETE FROM t1 WHERE f_charbig = 'was inserted';
7965 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7966 f_int2 = CAST(f_char1 AS SIGNED INT),
7967 f_charbig = CONCAT('===',f_char1,'===')
7968 WHERE f_charbig = 'was updated';
7969 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7970 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
7971 FROM t0_template source_tab
7972 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7974 # check replace success: 1
7976 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
7978 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
7979 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
7980 UPDATE t1 SET f_int2 = f_int1,
7981 f_char1 = CAST(f_int1 AS CHAR),
7982 f_char2 = CAST(f_int1 AS CHAR),
7983 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
7984 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
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;
7991 # check transactions-1 success: 1
7994 # check transactions-2 success: 1
7997 # check transactions-3 success: 1
7998 DELETE FROM t1 WHERE f_charbig = 'was inserted';
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;
8008 # check transactions-5 success: 1
8011 # check transactions-6 success: 1
8012 # INFO: Storage engine used for t1 seems to be transactional.
8015 # check transactions-7 success: 1
8016 DELETE FROM t1 WHERE f_charbig = 'was inserted';
8018 SET @@session.sql_mode = 'traditional';
8019 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8020 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8021 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8022 '', '', 'was inserted' FROM t0_template
8023 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8024 ERROR 22012: Division by 0
8027 # check transactions-8 success: 1
8028 # INFO: Storage engine used for t1 seems to be able to revert
8029 # changes made by the failing statement.
8030 SET @@session.sql_mode = '';
8032 DELETE FROM t1 WHERE f_charbig = 'was inserted';
8034 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8036 # check special-1 success: 1
8037 UPDATE t1 SET f_charbig = '';
8039 # check special-2 success: 1
8040 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8041 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8042 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8043 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8044 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8045 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8046 'just inserted' FROM t0_template
8047 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8048 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8050 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8051 f_charbig = 'updated by trigger'
8052 WHERE f_int1 = new.f_int1;
8054 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8055 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8056 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8058 # check trigger-1 success: 1
8060 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8061 f_int2 = CAST(f_char1 AS SIGNED INT),
8062 f_charbig = 'just inserted'
8063 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8065 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8066 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8067 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8068 'just inserted' FROM t0_template
8069 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8070 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8072 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8073 f_charbig = 'updated by trigger'
8074 WHERE f_int1 = new.f_int1;
8076 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8077 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8078 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8080 # check trigger-2 success: 1
8082 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8083 f_int2 = CAST(f_char1 AS SIGNED INT),
8084 f_charbig = 'just inserted'
8085 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8087 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8088 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8089 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8090 'just inserted' FROM t0_template
8091 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8092 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8094 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8095 f_charbig = 'updated by trigger'
8096 WHERE f_int1 = new.f_int1;
8098 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8099 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8101 # check trigger-3 success: 1
8103 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8104 f_int2 = CAST(f_char1 AS SIGNED INT),
8105 f_charbig = 'just inserted'
8106 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8108 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8109 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8110 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8111 'just inserted' FROM t0_template
8112 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8113 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8115 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8116 f_charbig = 'updated by trigger'
8117 WHERE f_int1 = - old.f_int1;
8119 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8120 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8122 # check trigger-4 success: 1
8124 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8125 f_int2 = CAST(f_char1 AS SIGNED INT),
8126 f_charbig = 'just inserted'
8127 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8129 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8130 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8131 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8132 'just inserted' FROM t0_template
8133 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8134 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8136 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8137 f_charbig = 'updated by trigger'
8138 WHERE f_int1 = new.f_int1;
8140 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8141 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8143 # check trigger-5 success: 1
8145 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8146 f_int2 = CAST(f_char1 AS SIGNED INT),
8147 f_charbig = 'just inserted'
8148 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8150 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8151 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8152 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8153 'just inserted' FROM t0_template
8154 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8155 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8157 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8158 f_charbig = 'updated by trigger'
8159 WHERE f_int1 = - old.f_int1;
8161 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8162 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8164 # check trigger-6 success: 1
8166 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8167 f_int2 = CAST(f_char1 AS SIGNED INT),
8168 f_charbig = 'just inserted'
8169 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8171 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8172 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8173 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8174 'just inserted' FROM t0_template
8175 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8176 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8178 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8179 f_charbig = 'updated by trigger'
8180 WHERE f_int1 = - old.f_int1;
8183 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8185 # check trigger-7 success: 1
8187 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8188 f_int2 = CAST(f_char1 AS SIGNED INT),
8189 f_charbig = 'just inserted'
8190 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8192 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8193 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8194 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8195 'just inserted' FROM t0_template
8196 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8197 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8199 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8200 f_charbig = 'updated by trigger'
8201 WHERE f_int1 = - old.f_int1;
8204 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8206 # check trigger-8 success: 1
8208 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8209 f_int2 = CAST(f_char1 AS SIGNED INT),
8210 f_charbig = 'just inserted'
8211 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8213 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8215 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8216 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8218 SET new.f_int1 = old.f_int1 + @max_row,
8219 new.f_int2 = old.f_int2 - @max_row,
8220 new.f_charbig = '####updated per update trigger####';
8223 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8224 f_charbig = '####updated per update statement itself####';
8226 # check trigger-9 success: 1
8228 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8229 f_int2 = CAST(f_char1 AS SIGNED INT),
8230 f_charbig = CONCAT('===',f_char1,'===');
8231 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8233 SET new.f_int1 = new.f_int1 + @max_row,
8234 new.f_int2 = new.f_int2 - @max_row,
8235 new.f_charbig = '####updated per update trigger####';
8238 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8239 f_charbig = '####updated per update statement itself####';
8241 # check trigger-10 success: 1
8243 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8244 f_int2 = CAST(f_char1 AS SIGNED INT),
8245 f_charbig = CONCAT('===',f_char1,'===');
8246 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8248 SET new.f_int1 = @my_max1 + @counter,
8249 new.f_int2 = @my_min2 - @counter,
8250 new.f_charbig = '####updated per insert trigger####';
8251 SET @counter = @counter + 1;
8254 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8255 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8256 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8257 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8258 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8262 # check trigger-11 success: 1
8264 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8265 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8266 AND f_charbig = '####updated per insert trigger####';
8267 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8269 SET new.f_int1 = @my_max1 + @counter,
8270 new.f_int2 = @my_min2 - @counter,
8271 new.f_charbig = '####updated per insert trigger####';
8272 SET @counter = @counter + 1;
8275 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8276 INSERT INTO t1 (f_char1, f_char2, f_charbig)
8277 SELECT CAST(f_int1 AS CHAR),
8278 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8279 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8283 # check trigger-12 success: 1
8285 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8286 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8287 AND f_charbig = '####updated per insert trigger####';
8289 Table Op Msg_type Msg_text
8290 test.t1 analyze status OK
8291 CHECK TABLE t1 EXTENDED;
8292 Table Op Msg_type Msg_text
8293 test.t1 check status OK
8294 CHECKSUM TABLE t1 EXTENDED;
8296 test.t1 <some_value>
8298 Table Op Msg_type Msg_text
8299 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
8300 test.t1 optimize status OK
8301 # check layout success: 1
8302 REPAIR TABLE t1 EXTENDED;
8303 Table Op Msg_type Msg_text
8304 test.t1 repair note The storage engine for the table doesn't support repair
8305 # check layout success: 1
8308 # check TRUNCATE success: 1
8309 # check layout success: 1
8310 # End usability test (inc/partition_check.inc)
8317 f_charbig VARCHAR(1000)
8318 , PRIMARY KEY (f_int2,f_int1)
8320 PARTITION BY KEY(f_int1) PARTITIONS 5;
8321 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8322 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8323 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8324 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
8325 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8326 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8327 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8328 # Start usability test (inc/partition_check.inc)
8330 SHOW CREATE TABLE t1;
8332 t1 CREATE TABLE `t1` (
8333 `f_int1` int(11) NOT NULL DEFAULT '0',
8334 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
8335 `f_char1` char(20) DEFAULT NULL,
8336 `f_char2` char(20) DEFAULT NULL,
8337 `f_charbig` varchar(1000) DEFAULT NULL,
8338 PRIMARY KEY (`f_int2`,`f_int1`)
8339 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
8340 /*!50100 PARTITION BY KEY (f_int1)
8343 # check prerequisites-1 success: 1
8344 # check COUNT(*) success: 1
8345 # check MIN/MAX(f_int1) success: 1
8346 # check MIN/MAX(f_int2) success: 1
8347 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8348 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8349 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8350 WHERE f_int1 IN (2,3);
8351 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
8352 # check prerequisites-3 success: 1
8353 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
8354 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8355 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8356 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8357 WHERE f_int1 IN (2,3);
8358 DELETE FROM t1 WHERE f_charbig = 'delete me';
8359 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8360 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8361 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8362 WHERE f_int1 IN (2,3);
8363 DELETE FROM t1 WHERE f_charbig = 'delete me';
8364 # check read via f_int1 success: 1
8365 # check read via f_int2 success: 1
8367 # check multiple-1 success: 1
8368 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8370 # check multiple-2 success: 1
8371 INSERT INTO t1 SELECT * FROM t0_template
8372 WHERE MOD(f_int1,3) = 0;
8374 # check multiple-3 success: 1
8375 UPDATE t1 SET f_int1 = f_int1 + @max_row
8376 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8377 AND @max_row_div2 + @max_row_div4;
8379 # check multiple-4 success: 1
8381 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8382 AND @max_row_div2 + @max_row_div4 + @max_row;
8384 # check multiple-5 success: 1
8385 SELECT COUNT(*) INTO @try_count FROM t0_template
8386 WHERE MOD(f_int1,3) = 0
8387 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8388 SELECT COUNT(*) INTO @clash_count
8389 FROM t1 INNER JOIN t0_template USING(f_int1)
8390 WHERE MOD(f_int1,3) = 0
8391 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8392 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8394 SET f_int1 = @cur_value , f_int2 = @cur_value,
8395 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8396 f_charbig = '#SINGLE#';
8398 # check single-1 success: 1
8399 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8401 SET f_int1 = @cur_value , f_int2 = @cur_value,
8402 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8403 f_charbig = '#SINGLE#';
8405 # check single-2 success: 1
8406 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8407 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8408 UPDATE t1 SET f_int1 = @cur_value2
8409 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8411 # check single-3 success: 1
8412 SET @cur_value1= -1;
8413 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8414 UPDATE t1 SET f_int1 = @cur_value1
8415 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8417 # check single-4 success: 1
8418 SELECT MAX(f_int1) INTO @cur_value FROM t1;
8419 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8421 # check single-5 success: 1
8422 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8424 # check single-6 success: 1
8425 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8427 Warning 1264 Out of range value for column 'f_int2' at row 1
8429 # check single-7 success: 1
8430 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8431 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8432 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8433 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8434 f_charbig = '#NULL#';
8436 SET f_int1 = NULL , f_int2 = -@max_row,
8437 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8438 f_charbig = '#NULL#';
8439 ERROR 23000: Column 'f_int1' cannot be null
8440 # check null success: 1
8442 WHERE f_int1 = 0 AND f_int2 = 0
8443 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8444 AND f_charbig = '#NULL#';
8445 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8446 SELECT f_int1, f_int1, '', '', 'was inserted'
8447 FROM t0_template source_tab
8448 WHERE MOD(f_int1,3) = 0
8449 AND f_int1 BETWEEN @max_row_div2 AND @max_row
8451 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
8452 f_int2 = 2 * @max_row + source_tab.f_int1,
8453 f_charbig = 'was updated';
8455 # check unique-1-a success: 1
8457 # check unique-1-b success: 1
8458 DELETE FROM t1 WHERE f_charbig = 'was inserted';
8459 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8460 f_int2 = CAST(f_char1 AS SIGNED INT),
8461 f_charbig = CONCAT('===',f_char1,'===')
8462 WHERE f_charbig = 'was updated';
8463 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8464 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
8465 FROM t0_template source_tab
8466 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8468 # check replace success: 1
8470 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
8472 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
8473 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
8474 UPDATE t1 SET f_int2 = f_int1,
8475 f_char1 = CAST(f_int1 AS CHAR),
8476 f_char2 = CAST(f_int1 AS CHAR),
8477 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
8478 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
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;
8485 # check transactions-1 success: 1
8488 # check transactions-2 success: 1
8491 # check transactions-3 success: 1
8492 DELETE FROM t1 WHERE f_charbig = 'was inserted';
8496 # check transactions-4 success: 1
8497 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8498 SELECT f_int1, f_int1, '', '', 'was inserted'
8499 FROM t0_template source_tab
8500 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8502 # check transactions-5 success: 1
8505 # check transactions-6 success: 1
8506 # INFO: Storage engine used for t1 seems to be transactional.
8509 # check transactions-7 success: 1
8510 DELETE FROM t1 WHERE f_charbig = 'was inserted';
8512 SET @@session.sql_mode = 'traditional';
8513 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8514 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8515 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8516 '', '', 'was inserted' FROM t0_template
8517 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8518 ERROR 22012: Division by 0
8521 # check transactions-8 success: 1
8522 # INFO: Storage engine used for t1 seems to be able to revert
8523 # changes made by the failing statement.
8524 SET @@session.sql_mode = '';
8526 DELETE FROM t1 WHERE f_charbig = 'was inserted';
8528 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8530 # check special-1 success: 1
8531 UPDATE t1 SET f_charbig = '';
8533 # check special-2 success: 1
8534 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8535 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8536 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8537 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8538 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8539 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8540 'just inserted' FROM t0_template
8541 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8542 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8544 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8545 f_charbig = 'updated by trigger'
8546 WHERE f_int1 = new.f_int1;
8548 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8549 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8550 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8552 # check trigger-1 success: 1
8554 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8555 f_int2 = CAST(f_char1 AS SIGNED INT),
8556 f_charbig = 'just inserted'
8557 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8559 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8560 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8561 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8562 'just inserted' FROM t0_template
8563 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8564 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8566 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8567 f_charbig = 'updated by trigger'
8568 WHERE f_int1 = new.f_int1;
8570 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8571 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8572 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8574 # check trigger-2 success: 1
8576 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8577 f_int2 = CAST(f_char1 AS SIGNED INT),
8578 f_charbig = 'just inserted'
8579 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8581 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8582 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8583 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8584 'just inserted' FROM t0_template
8585 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8586 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8588 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8589 f_charbig = 'updated by trigger'
8590 WHERE f_int1 = new.f_int1;
8592 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8593 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8595 # check trigger-3 success: 1
8597 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8598 f_int2 = CAST(f_char1 AS SIGNED INT),
8599 f_charbig = 'just inserted'
8600 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8602 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8603 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8604 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8605 'just inserted' FROM t0_template
8606 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8607 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8609 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8610 f_charbig = 'updated by trigger'
8611 WHERE f_int1 = - old.f_int1;
8613 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8614 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8616 # check trigger-4 success: 1
8618 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8619 f_int2 = CAST(f_char1 AS SIGNED INT),
8620 f_charbig = 'just inserted'
8621 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8623 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8624 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8625 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8626 'just inserted' FROM t0_template
8627 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8628 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8630 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8631 f_charbig = 'updated by trigger'
8632 WHERE f_int1 = new.f_int1;
8634 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8635 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8637 # check trigger-5 success: 1
8639 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8640 f_int2 = CAST(f_char1 AS SIGNED INT),
8641 f_charbig = 'just inserted'
8642 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8644 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8645 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8646 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8647 'just inserted' FROM t0_template
8648 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8649 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8651 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8652 f_charbig = 'updated by trigger'
8653 WHERE f_int1 = - old.f_int1;
8655 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8656 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8658 # check trigger-6 success: 1
8660 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8661 f_int2 = CAST(f_char1 AS SIGNED INT),
8662 f_charbig = 'just inserted'
8663 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8665 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8666 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8667 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8668 'just inserted' FROM t0_template
8669 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8670 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8672 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8673 f_charbig = 'updated by trigger'
8674 WHERE f_int1 = - old.f_int1;
8677 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8679 # check trigger-7 success: 1
8681 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8682 f_int2 = CAST(f_char1 AS SIGNED INT),
8683 f_charbig = 'just inserted'
8684 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8686 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8687 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8688 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8689 'just inserted' FROM t0_template
8690 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8691 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8693 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8694 f_charbig = 'updated by trigger'
8695 WHERE f_int1 = - old.f_int1;
8698 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8700 # check trigger-8 success: 1
8702 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8703 f_int2 = CAST(f_char1 AS SIGNED INT),
8704 f_charbig = 'just inserted'
8705 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8707 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8709 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8710 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8712 SET new.f_int1 = old.f_int1 + @max_row,
8713 new.f_int2 = old.f_int2 - @max_row,
8714 new.f_charbig = '####updated per update trigger####';
8717 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8718 f_charbig = '####updated per update statement itself####';
8720 # check trigger-9 success: 1
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_2 BEFORE UPDATE ON t1 FOR EACH ROW
8727 SET new.f_int1 = new.f_int1 + @max_row,
8728 new.f_int2 = new.f_int2 - @max_row,
8729 new.f_charbig = '####updated per update trigger####';
8732 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8733 f_charbig = '####updated per update statement itself####';
8735 # check trigger-10 success: 1
8737 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8738 f_int2 = CAST(f_char1 AS SIGNED INT),
8739 f_charbig = CONCAT('===',f_char1,'===');
8740 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8742 SET new.f_int1 = @my_max1 + @counter,
8743 new.f_int2 = @my_min2 - @counter,
8744 new.f_charbig = '####updated per insert trigger####';
8745 SET @counter = @counter + 1;
8748 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8749 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8750 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8751 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8752 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8756 # check trigger-11 success: 1
8758 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8759 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8760 AND f_charbig = '####updated per insert trigger####';
8761 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8763 SET new.f_int1 = @my_max1 + @counter,
8764 new.f_int2 = @my_min2 - @counter,
8765 new.f_charbig = '####updated per insert trigger####';
8766 SET @counter = @counter + 1;
8769 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8770 INSERT INTO t1 (f_char1, f_char2, f_charbig)
8771 SELECT CAST(f_int1 AS CHAR),
8772 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8773 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8777 # check trigger-12 success: 1
8779 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8780 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8781 AND f_charbig = '####updated per insert trigger####';
8783 Table Op Msg_type Msg_text
8784 test.t1 analyze status OK
8785 CHECK TABLE t1 EXTENDED;
8786 Table Op Msg_type Msg_text
8787 test.t1 check status OK
8788 CHECKSUM TABLE t1 EXTENDED;
8790 test.t1 <some_value>
8792 Table Op Msg_type Msg_text
8793 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
8794 test.t1 optimize status OK
8795 # check layout success: 1
8796 REPAIR TABLE t1 EXTENDED;
8797 Table Op Msg_type Msg_text
8798 test.t1 repair note The storage engine for the table doesn't support repair
8799 # check layout success: 1
8802 # check TRUNCATE success: 1
8803 # check layout success: 1
8804 # End usability test (inc/partition_check.inc)
8811 f_charbig VARCHAR(1000)
8812 , PRIMARY KEY (f_int2,f_int1)
8814 PARTITION BY LIST(MOD(f_int1,4))
8815 (PARTITION part_3 VALUES IN (-3),
8816 PARTITION part_2 VALUES IN (-2),
8817 PARTITION part_1 VALUES IN (-1),
8818 PARTITION part_N VALUES IN (NULL),
8819 PARTITION part0 VALUES IN (0),
8820 PARTITION part1 VALUES IN (1),
8821 PARTITION part2 VALUES IN (2),
8822 PARTITION part3 VALUES IN (3));
8823 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8824 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8825 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8826 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
8827 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8828 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8829 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8830 # Start usability test (inc/partition_check.inc)
8832 SHOW CREATE TABLE t1;
8834 t1 CREATE TABLE `t1` (
8835 `f_int1` int(11) NOT NULL DEFAULT '0',
8836 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
8837 `f_char1` char(20) DEFAULT NULL,
8838 `f_char2` char(20) DEFAULT NULL,
8839 `f_charbig` varchar(1000) DEFAULT NULL,
8840 PRIMARY KEY (`f_int2`,`f_int1`)
8841 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
8842 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
8843 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
8844 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
8845 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
8846 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
8847 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
8848 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
8849 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
8850 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
8852 # check prerequisites-1 success: 1
8853 # check COUNT(*) success: 1
8854 # check MIN/MAX(f_int1) success: 1
8855 # check MIN/MAX(f_int2) success: 1
8856 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8857 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8858 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8859 WHERE f_int1 IN (2,3);
8860 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
8861 # check prerequisites-3 success: 1
8862 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
8863 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8864 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8865 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8866 WHERE f_int1 IN (2,3);
8867 DELETE FROM t1 WHERE f_charbig = 'delete me';
8868 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8869 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8870 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8871 WHERE f_int1 IN (2,3);
8872 DELETE FROM t1 WHERE f_charbig = 'delete me';
8873 # check read via f_int1 success: 1
8874 # check read via f_int2 success: 1
8876 # check multiple-1 success: 1
8877 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8879 # check multiple-2 success: 1
8880 INSERT INTO t1 SELECT * FROM t0_template
8881 WHERE MOD(f_int1,3) = 0;
8883 # check multiple-3 success: 1
8884 UPDATE t1 SET f_int1 = f_int1 + @max_row
8885 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8886 AND @max_row_div2 + @max_row_div4;
8888 # check multiple-4 success: 1
8890 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8891 AND @max_row_div2 + @max_row_div4 + @max_row;
8893 # check multiple-5 success: 1
8894 SELECT COUNT(*) INTO @try_count FROM t0_template
8895 WHERE MOD(f_int1,3) = 0
8896 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8897 SELECT COUNT(*) INTO @clash_count
8898 FROM t1 INNER JOIN t0_template USING(f_int1)
8899 WHERE MOD(f_int1,3) = 0
8900 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8901 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8903 SET f_int1 = @cur_value , f_int2 = @cur_value,
8904 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8905 f_charbig = '#SINGLE#';
8907 # check single-1 success: 1
8908 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8910 SET f_int1 = @cur_value , f_int2 = @cur_value,
8911 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8912 f_charbig = '#SINGLE#';
8914 # check single-2 success: 1
8915 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8916 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8917 UPDATE t1 SET f_int1 = @cur_value2
8918 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8920 # check single-3 success: 1
8921 SET @cur_value1= -1;
8922 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8923 UPDATE t1 SET f_int1 = @cur_value1
8924 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8926 # check single-4 success: 1
8927 SELECT MAX(f_int1) INTO @cur_value FROM t1;
8928 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8930 # check single-5 success: 1
8931 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8933 # check single-6 success: 1
8934 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8936 Warning 1264 Out of range value for column 'f_int2' at row 1
8938 # check single-7 success: 1
8939 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8940 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8941 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8942 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8943 f_charbig = '#NULL#';
8945 SET f_int1 = NULL , f_int2 = -@max_row,
8946 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8947 f_charbig = '#NULL#';
8948 ERROR 23000: Column 'f_int1' cannot be null
8949 # check null success: 1
8951 WHERE f_int1 = 0 AND f_int2 = 0
8952 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8953 AND f_charbig = '#NULL#';
8954 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8955 SELECT f_int1, f_int1, '', '', 'was inserted'
8956 FROM t0_template source_tab
8957 WHERE MOD(f_int1,3) = 0
8958 AND f_int1 BETWEEN @max_row_div2 AND @max_row
8960 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
8961 f_int2 = 2 * @max_row + source_tab.f_int1,
8962 f_charbig = 'was updated';
8964 # check unique-1-a success: 1
8966 # check unique-1-b success: 1
8967 DELETE FROM t1 WHERE f_charbig = 'was inserted';
8968 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8969 f_int2 = CAST(f_char1 AS SIGNED INT),
8970 f_charbig = CONCAT('===',f_char1,'===')
8971 WHERE f_charbig = 'was updated';
8972 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8973 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
8974 FROM t0_template source_tab
8975 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8977 # check replace success: 1
8979 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
8981 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
8982 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
8983 UPDATE t1 SET f_int2 = f_int1,
8984 f_char1 = CAST(f_int1 AS CHAR),
8985 f_char2 = CAST(f_int1 AS CHAR),
8986 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
8987 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
8989 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8990 SELECT f_int1, f_int1, '', '', 'was inserted'
8991 FROM t0_template source_tab
8992 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8994 # check transactions-1 success: 1
8997 # check transactions-2 success: 1
9000 # check transactions-3 success: 1
9001 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9005 # check transactions-4 success: 1
9006 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9007 SELECT f_int1, f_int1, '', '', 'was inserted'
9008 FROM t0_template source_tab
9009 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9011 # check transactions-5 success: 1
9014 # check transactions-6 success: 1
9015 # INFO: Storage engine used for t1 seems to be transactional.
9018 # check transactions-7 success: 1
9019 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9021 SET @@session.sql_mode = 'traditional';
9022 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9023 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9024 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9025 '', '', 'was inserted' FROM t0_template
9026 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9027 ERROR 22012: Division by 0
9030 # check transactions-8 success: 1
9031 # INFO: Storage engine used for t1 seems to be able to revert
9032 # changes made by the failing statement.
9033 SET @@session.sql_mode = '';
9035 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9037 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9039 # check special-1 success: 1
9040 UPDATE t1 SET f_charbig = '';
9042 # check special-2 success: 1
9043 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9044 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9045 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9046 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9047 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9048 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9049 'just inserted' FROM t0_template
9050 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9051 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9053 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9054 f_charbig = 'updated by trigger'
9055 WHERE f_int1 = new.f_int1;
9057 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9058 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9059 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9061 # check trigger-1 success: 1
9063 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9064 f_int2 = CAST(f_char1 AS SIGNED INT),
9065 f_charbig = 'just inserted'
9066 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9068 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9069 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9070 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9071 'just inserted' FROM t0_template
9072 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9073 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9075 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9076 f_charbig = 'updated by trigger'
9077 WHERE f_int1 = new.f_int1;
9079 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9080 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9081 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9083 # check trigger-2 success: 1
9085 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9086 f_int2 = CAST(f_char1 AS SIGNED INT),
9087 f_charbig = 'just inserted'
9088 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9090 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9091 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9092 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9093 'just inserted' FROM t0_template
9094 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9095 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9097 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9098 f_charbig = 'updated by trigger'
9099 WHERE f_int1 = new.f_int1;
9101 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9102 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9104 # check trigger-3 success: 1
9106 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9107 f_int2 = CAST(f_char1 AS SIGNED INT),
9108 f_charbig = 'just inserted'
9109 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9111 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9112 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9113 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9114 'just inserted' FROM t0_template
9115 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9116 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9118 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9119 f_charbig = 'updated by trigger'
9120 WHERE f_int1 = - old.f_int1;
9122 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9123 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9125 # check trigger-4 success: 1
9127 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9128 f_int2 = CAST(f_char1 AS SIGNED INT),
9129 f_charbig = 'just inserted'
9130 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9132 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9133 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9134 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9135 'just inserted' FROM t0_template
9136 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9137 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9139 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9140 f_charbig = 'updated by trigger'
9141 WHERE f_int1 = new.f_int1;
9143 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9144 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9146 # check trigger-5 success: 1
9148 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9149 f_int2 = CAST(f_char1 AS SIGNED INT),
9150 f_charbig = 'just inserted'
9151 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9153 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9154 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9155 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9156 'just inserted' FROM t0_template
9157 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9158 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9160 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9161 f_charbig = 'updated by trigger'
9162 WHERE f_int1 = - old.f_int1;
9164 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9165 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9167 # check trigger-6 success: 1
9169 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9170 f_int2 = CAST(f_char1 AS SIGNED INT),
9171 f_charbig = 'just inserted'
9172 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9174 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9175 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9176 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9177 'just inserted' FROM t0_template
9178 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9179 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9181 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9182 f_charbig = 'updated by trigger'
9183 WHERE f_int1 = - old.f_int1;
9186 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9188 # check trigger-7 success: 1
9190 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9191 f_int2 = CAST(f_char1 AS SIGNED INT),
9192 f_charbig = 'just inserted'
9193 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9195 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9196 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9197 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9198 'just inserted' FROM t0_template
9199 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9200 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9202 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9203 f_charbig = 'updated by trigger'
9204 WHERE f_int1 = - old.f_int1;
9207 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9209 # check trigger-8 success: 1
9211 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9212 f_int2 = CAST(f_char1 AS SIGNED INT),
9213 f_charbig = 'just inserted'
9214 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9216 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9218 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9219 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9221 SET new.f_int1 = old.f_int1 + @max_row,
9222 new.f_int2 = old.f_int2 - @max_row,
9223 new.f_charbig = '####updated per update trigger####';
9226 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9227 f_charbig = '####updated per update statement itself####';
9229 # check trigger-9 success: 1
9231 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9232 f_int2 = CAST(f_char1 AS SIGNED INT),
9233 f_charbig = CONCAT('===',f_char1,'===');
9234 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9236 SET new.f_int1 = new.f_int1 + @max_row,
9237 new.f_int2 = new.f_int2 - @max_row,
9238 new.f_charbig = '####updated per update trigger####';
9241 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9242 f_charbig = '####updated per update statement itself####';
9244 # check trigger-10 success: 1
9246 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9247 f_int2 = CAST(f_char1 AS SIGNED INT),
9248 f_charbig = CONCAT('===',f_char1,'===');
9249 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9251 SET new.f_int1 = @my_max1 + @counter,
9252 new.f_int2 = @my_min2 - @counter,
9253 new.f_charbig = '####updated per insert trigger####';
9254 SET @counter = @counter + 1;
9257 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9258 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9259 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9260 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9261 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9265 # check trigger-11 success: 1
9267 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9268 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9269 AND f_charbig = '####updated per insert trigger####';
9270 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9272 SET new.f_int1 = @my_max1 + @counter,
9273 new.f_int2 = @my_min2 - @counter,
9274 new.f_charbig = '####updated per insert trigger####';
9275 SET @counter = @counter + 1;
9278 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9279 INSERT INTO t1 (f_char1, f_char2, f_charbig)
9280 SELECT CAST(f_int1 AS CHAR),
9281 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9282 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9286 # check trigger-12 success: 1
9288 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9289 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9290 AND f_charbig = '####updated per insert trigger####';
9292 Table Op Msg_type Msg_text
9293 test.t1 analyze status OK
9294 CHECK TABLE t1 EXTENDED;
9295 Table Op Msg_type Msg_text
9296 test.t1 check status OK
9297 CHECKSUM TABLE t1 EXTENDED;
9299 test.t1 <some_value>
9301 Table Op Msg_type Msg_text
9302 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
9303 test.t1 optimize status OK
9304 # check layout success: 1
9305 REPAIR TABLE t1 EXTENDED;
9306 Table Op Msg_type Msg_text
9307 test.t1 repair note The storage engine for the table doesn't support repair
9308 # check layout success: 1
9311 # check TRUNCATE success: 1
9312 # check layout success: 1
9313 # End usability test (inc/partition_check.inc)
9320 f_charbig VARCHAR(1000)
9321 , PRIMARY KEY (f_int2,f_int1)
9323 PARTITION BY RANGE(f_int1)
9324 (PARTITION parta VALUES LESS THAN (0),
9325 PARTITION partb VALUES LESS THAN (5),
9326 PARTITION partc VALUES LESS THAN (10),
9327 PARTITION partd VALUES LESS THAN (10 + 5),
9328 PARTITION parte VALUES LESS THAN (20),
9329 PARTITION partf VALUES LESS THAN (2147483646));
9330 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9331 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9332 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9333 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
9334 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9335 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9336 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9337 # Start usability test (inc/partition_check.inc)
9339 SHOW CREATE TABLE t1;
9341 t1 CREATE TABLE `t1` (
9342 `f_int1` int(11) NOT NULL DEFAULT '0',
9343 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
9344 `f_char1` char(20) DEFAULT NULL,
9345 `f_char2` char(20) DEFAULT NULL,
9346 `f_charbig` varchar(1000) DEFAULT NULL,
9347 PRIMARY KEY (`f_int2`,`f_int1`)
9348 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
9349 /*!50100 PARTITION BY RANGE (f_int1)
9350 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
9351 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
9352 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
9353 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
9354 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
9355 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
9357 # check prerequisites-1 success: 1
9358 # check COUNT(*) success: 1
9359 # check MIN/MAX(f_int1) success: 1
9360 # check MIN/MAX(f_int2) success: 1
9361 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9362 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9363 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9364 WHERE f_int1 IN (2,3);
9365 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
9366 # check prerequisites-3 success: 1
9367 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
9368 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9369 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9370 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9371 WHERE f_int1 IN (2,3);
9372 DELETE FROM t1 WHERE f_charbig = 'delete me';
9373 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9374 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9375 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9376 WHERE f_int1 IN (2,3);
9377 DELETE FROM t1 WHERE f_charbig = 'delete me';
9378 # check read via f_int1 success: 1
9379 # check read via f_int2 success: 1
9381 # check multiple-1 success: 1
9382 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9384 # check multiple-2 success: 1
9385 INSERT INTO t1 SELECT * FROM t0_template
9386 WHERE MOD(f_int1,3) = 0;
9388 # check multiple-3 success: 1
9389 UPDATE t1 SET f_int1 = f_int1 + @max_row
9390 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9391 AND @max_row_div2 + @max_row_div4;
9393 # check multiple-4 success: 1
9395 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9396 AND @max_row_div2 + @max_row_div4 + @max_row;
9398 # check multiple-5 success: 1
9399 SELECT COUNT(*) INTO @try_count FROM t0_template
9400 WHERE MOD(f_int1,3) = 0
9401 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9402 SELECT COUNT(*) INTO @clash_count
9403 FROM t1 INNER JOIN t0_template USING(f_int1)
9404 WHERE MOD(f_int1,3) = 0
9405 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9406 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9408 SET f_int1 = @cur_value , f_int2 = @cur_value,
9409 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9410 f_charbig = '#SINGLE#';
9412 # check single-1 success: 1
9413 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9415 SET f_int1 = @cur_value , f_int2 = @cur_value,
9416 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9417 f_charbig = '#SINGLE#';
9419 # check single-2 success: 1
9420 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9421 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9422 UPDATE t1 SET f_int1 = @cur_value2
9423 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9425 # check single-3 success: 1
9426 SET @cur_value1= -1;
9427 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9428 UPDATE t1 SET f_int1 = @cur_value1
9429 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9431 # check single-4 success: 1
9432 SELECT MAX(f_int1) INTO @cur_value FROM t1;
9433 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9435 # check single-5 success: 1
9436 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9438 # check single-6 success: 1
9439 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9440 ERROR HY000: Table has no partition for value 2147483647
9441 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9442 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9443 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9444 f_charbig = '#NULL#';
9446 SET f_int1 = NULL , f_int2 = -@max_row,
9447 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9448 f_charbig = '#NULL#';
9449 ERROR 23000: Column 'f_int1' cannot be null
9450 # check null success: 1
9452 WHERE f_int1 = 0 AND f_int2 = 0
9453 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9454 AND f_charbig = '#NULL#';
9455 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9456 SELECT f_int1, f_int1, '', '', 'was inserted'
9457 FROM t0_template source_tab
9458 WHERE MOD(f_int1,3) = 0
9459 AND f_int1 BETWEEN @max_row_div2 AND @max_row
9461 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
9462 f_int2 = 2 * @max_row + source_tab.f_int1,
9463 f_charbig = 'was updated';
9465 # check unique-1-a success: 1
9467 # check unique-1-b success: 1
9468 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9469 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9470 f_int2 = CAST(f_char1 AS SIGNED INT),
9471 f_charbig = CONCAT('===',f_char1,'===')
9472 WHERE f_charbig = 'was updated';
9473 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9474 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
9475 FROM t0_template source_tab
9476 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9478 # check replace success: 1
9480 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
9482 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
9483 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
9484 UPDATE t1 SET f_int2 = f_int1,
9485 f_char1 = CAST(f_int1 AS CHAR),
9486 f_char2 = CAST(f_int1 AS CHAR),
9487 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
9488 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
9490 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9491 SELECT f_int1, f_int1, '', '', 'was inserted'
9492 FROM t0_template source_tab
9493 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9495 # check transactions-1 success: 1
9498 # check transactions-2 success: 1
9501 # check transactions-3 success: 1
9502 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9506 # check transactions-4 success: 1
9507 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9508 SELECT f_int1, f_int1, '', '', 'was inserted'
9509 FROM t0_template source_tab
9510 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9512 # check transactions-5 success: 1
9515 # check transactions-6 success: 1
9516 # INFO: Storage engine used for t1 seems to be transactional.
9519 # check transactions-7 success: 1
9520 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9522 SET @@session.sql_mode = 'traditional';
9523 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9524 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9525 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9526 '', '', 'was inserted' FROM t0_template
9527 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9528 ERROR 22012: Division by 0
9531 # check transactions-8 success: 1
9532 # INFO: Storage engine used for t1 seems to be able to revert
9533 # changes made by the failing statement.
9534 SET @@session.sql_mode = '';
9536 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9538 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9540 # check special-1 success: 1
9541 UPDATE t1 SET f_charbig = '';
9543 # check special-2 success: 1
9544 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9545 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9546 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9547 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9548 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9549 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9550 'just inserted' FROM t0_template
9551 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9552 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9554 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9555 f_charbig = 'updated by trigger'
9556 WHERE f_int1 = new.f_int1;
9558 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9559 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9560 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9562 # check trigger-1 success: 1
9564 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9565 f_int2 = CAST(f_char1 AS SIGNED INT),
9566 f_charbig = 'just inserted'
9567 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9569 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9570 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9571 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9572 'just inserted' FROM t0_template
9573 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9574 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9576 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9577 f_charbig = 'updated by trigger'
9578 WHERE f_int1 = new.f_int1;
9580 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9581 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9582 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9584 # check trigger-2 success: 1
9586 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9587 f_int2 = CAST(f_char1 AS SIGNED INT),
9588 f_charbig = 'just inserted'
9589 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9591 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9592 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9593 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9594 'just inserted' FROM t0_template
9595 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9596 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9598 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9599 f_charbig = 'updated by trigger'
9600 WHERE f_int1 = new.f_int1;
9602 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9603 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9605 # check trigger-3 success: 1
9607 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9608 f_int2 = CAST(f_char1 AS SIGNED INT),
9609 f_charbig = 'just inserted'
9610 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9612 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9613 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9614 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9615 'just inserted' FROM t0_template
9616 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9617 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9619 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9620 f_charbig = 'updated by trigger'
9621 WHERE f_int1 = - old.f_int1;
9623 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9624 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9626 # check trigger-4 success: 1
9628 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9629 f_int2 = CAST(f_char1 AS SIGNED INT),
9630 f_charbig = 'just inserted'
9631 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9633 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9634 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9635 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9636 'just inserted' FROM t0_template
9637 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9638 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9640 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9641 f_charbig = 'updated by trigger'
9642 WHERE f_int1 = new.f_int1;
9644 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9645 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9647 # check trigger-5 success: 1
9649 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9650 f_int2 = CAST(f_char1 AS SIGNED INT),
9651 f_charbig = 'just inserted'
9652 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9654 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9655 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9656 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9657 'just inserted' FROM t0_template
9658 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9659 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9661 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9662 f_charbig = 'updated by trigger'
9663 WHERE f_int1 = - old.f_int1;
9665 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9666 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9668 # check trigger-6 success: 1
9670 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9671 f_int2 = CAST(f_char1 AS SIGNED INT),
9672 f_charbig = 'just inserted'
9673 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9675 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9676 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9677 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9678 'just inserted' FROM t0_template
9679 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9680 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9682 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9683 f_charbig = 'updated by trigger'
9684 WHERE f_int1 = - old.f_int1;
9687 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9689 # check trigger-7 success: 1
9691 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9692 f_int2 = CAST(f_char1 AS SIGNED INT),
9693 f_charbig = 'just inserted'
9694 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9696 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9697 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9698 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9699 'just inserted' FROM t0_template
9700 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9701 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9703 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9704 f_charbig = 'updated by trigger'
9705 WHERE f_int1 = - old.f_int1;
9708 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9710 # check trigger-8 success: 1
9712 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9713 f_int2 = CAST(f_char1 AS SIGNED INT),
9714 f_charbig = 'just inserted'
9715 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9717 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9719 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9720 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9722 SET new.f_int1 = old.f_int1 + @max_row,
9723 new.f_int2 = old.f_int2 - @max_row,
9724 new.f_charbig = '####updated per update trigger####';
9727 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9728 f_charbig = '####updated per update statement itself####';
9730 # check trigger-9 success: 1
9732 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9733 f_int2 = CAST(f_char1 AS SIGNED INT),
9734 f_charbig = CONCAT('===',f_char1,'===');
9735 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9737 SET new.f_int1 = new.f_int1 + @max_row,
9738 new.f_int2 = new.f_int2 - @max_row,
9739 new.f_charbig = '####updated per update trigger####';
9742 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9743 f_charbig = '####updated per update statement itself####';
9745 # check trigger-10 success: 1
9747 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9748 f_int2 = CAST(f_char1 AS SIGNED INT),
9749 f_charbig = CONCAT('===',f_char1,'===');
9750 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9752 SET new.f_int1 = @my_max1 + @counter,
9753 new.f_int2 = @my_min2 - @counter,
9754 new.f_charbig = '####updated per insert trigger####';
9755 SET @counter = @counter + 1;
9758 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9759 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9760 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9761 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9762 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9766 # check trigger-11 success: 1
9768 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9769 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9770 AND f_charbig = '####updated per insert trigger####';
9771 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9773 SET new.f_int1 = @my_max1 + @counter,
9774 new.f_int2 = @my_min2 - @counter,
9775 new.f_charbig = '####updated per insert trigger####';
9776 SET @counter = @counter + 1;
9779 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9780 INSERT INTO t1 (f_char1, f_char2, f_charbig)
9781 SELECT CAST(f_int1 AS CHAR),
9782 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9783 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9787 # check trigger-12 success: 1
9789 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9790 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9791 AND f_charbig = '####updated per insert trigger####';
9793 Table Op Msg_type Msg_text
9794 test.t1 analyze status OK
9795 CHECK TABLE t1 EXTENDED;
9796 Table Op Msg_type Msg_text
9797 test.t1 check status OK
9798 CHECKSUM TABLE t1 EXTENDED;
9800 test.t1 <some_value>
9802 Table Op Msg_type Msg_text
9803 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
9804 test.t1 optimize status OK
9805 # check layout success: 1
9806 REPAIR TABLE t1 EXTENDED;
9807 Table Op Msg_type Msg_text
9808 test.t1 repair note The storage engine for the table doesn't support repair
9809 # check layout success: 1
9812 # check TRUNCATE success: 1
9813 # check layout success: 1
9814 # End usability test (inc/partition_check.inc)
9821 f_charbig VARCHAR(1000)
9822 , PRIMARY KEY (f_int2,f_int1)
9824 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
9825 (PARTITION parta VALUES LESS THAN (0),
9826 PARTITION partb VALUES LESS THAN (5),
9827 PARTITION partc VALUES LESS THAN (10),
9828 PARTITION partd VALUES LESS THAN (2147483646));
9829 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9830 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9831 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9832 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
9833 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9834 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9835 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9836 # Start usability test (inc/partition_check.inc)
9838 SHOW CREATE TABLE t1;
9840 t1 CREATE TABLE `t1` (
9841 `f_int1` int(11) NOT NULL DEFAULT '0',
9842 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
9843 `f_char1` char(20) DEFAULT NULL,
9844 `f_char2` char(20) DEFAULT NULL,
9845 `f_charbig` varchar(1000) DEFAULT NULL,
9846 PRIMARY KEY (`f_int2`,`f_int1`)
9847 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
9848 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
9849 SUBPARTITION BY HASH (f_int1)
9851 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
9852 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
9853 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
9854 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
9856 # check prerequisites-1 success: 1
9857 # check COUNT(*) success: 1
9858 # check MIN/MAX(f_int1) success: 1
9859 # check MIN/MAX(f_int2) success: 1
9860 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9861 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9862 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9863 WHERE f_int1 IN (2,3);
9864 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
9865 # check prerequisites-3 success: 1
9866 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
9867 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9868 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9869 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9870 WHERE f_int1 IN (2,3);
9871 DELETE FROM t1 WHERE f_charbig = 'delete me';
9872 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9873 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9874 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9875 WHERE f_int1 IN (2,3);
9876 DELETE FROM t1 WHERE f_charbig = 'delete me';
9877 # check read via f_int1 success: 1
9878 # check read via f_int2 success: 1
9880 # check multiple-1 success: 1
9881 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9883 # check multiple-2 success: 1
9884 INSERT INTO t1 SELECT * FROM t0_template
9885 WHERE MOD(f_int1,3) = 0;
9887 # check multiple-3 success: 1
9888 UPDATE t1 SET f_int1 = f_int1 + @max_row
9889 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9890 AND @max_row_div2 + @max_row_div4;
9892 # check multiple-4 success: 1
9894 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9895 AND @max_row_div2 + @max_row_div4 + @max_row;
9897 # check multiple-5 success: 1
9898 SELECT COUNT(*) INTO @try_count FROM t0_template
9899 WHERE MOD(f_int1,3) = 0
9900 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9901 SELECT COUNT(*) INTO @clash_count
9902 FROM t1 INNER JOIN t0_template USING(f_int1)
9903 WHERE MOD(f_int1,3) = 0
9904 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9905 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9907 SET f_int1 = @cur_value , f_int2 = @cur_value,
9908 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9909 f_charbig = '#SINGLE#';
9911 # check single-1 success: 1
9912 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9914 SET f_int1 = @cur_value , f_int2 = @cur_value,
9915 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9916 f_charbig = '#SINGLE#';
9918 # check single-2 success: 1
9919 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9920 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9921 UPDATE t1 SET f_int1 = @cur_value2
9922 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9924 # check single-3 success: 1
9925 SET @cur_value1= -1;
9926 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9927 UPDATE t1 SET f_int1 = @cur_value1
9928 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9930 # check single-4 success: 1
9931 SELECT MAX(f_int1) INTO @cur_value FROM t1;
9932 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9934 # check single-5 success: 1
9935 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9937 # check single-6 success: 1
9938 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9940 Warning 1264 Out of range value for column 'f_int2' at row 1
9942 # check single-7 success: 1
9943 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
9944 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9945 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9946 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9947 f_charbig = '#NULL#';
9949 SET f_int1 = NULL , f_int2 = -@max_row,
9950 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9951 f_charbig = '#NULL#';
9952 ERROR 23000: Column 'f_int1' cannot be null
9953 # check null success: 1
9955 WHERE f_int1 = 0 AND f_int2 = 0
9956 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9957 AND f_charbig = '#NULL#';
9958 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9959 SELECT f_int1, f_int1, '', '', 'was inserted'
9960 FROM t0_template source_tab
9961 WHERE MOD(f_int1,3) = 0
9962 AND f_int1 BETWEEN @max_row_div2 AND @max_row
9964 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
9965 f_int2 = 2 * @max_row + source_tab.f_int1,
9966 f_charbig = 'was updated';
9968 # check unique-1-a success: 1
9970 # check unique-1-b success: 1
9971 DELETE FROM t1 WHERE f_charbig = 'was inserted';
9972 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9973 f_int2 = CAST(f_char1 AS SIGNED INT),
9974 f_charbig = CONCAT('===',f_char1,'===')
9975 WHERE f_charbig = 'was updated';
9976 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9977 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
9978 FROM t0_template source_tab
9979 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9981 # check replace success: 1
9983 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
9985 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
9986 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
9987 UPDATE t1 SET f_int2 = f_int1,
9988 f_char1 = CAST(f_int1 AS CHAR),
9989 f_char2 = CAST(f_int1 AS CHAR),
9990 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
9991 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
9993 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9994 SELECT f_int1, f_int1, '', '', 'was inserted'
9995 FROM t0_template source_tab
9996 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9998 # check transactions-1 success: 1
10001 # check transactions-2 success: 1
10004 # check transactions-3 success: 1
10005 DELETE FROM t1 WHERE f_charbig = 'was inserted';
10009 # check transactions-4 success: 1
10010 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10011 SELECT f_int1, f_int1, '', '', 'was inserted'
10012 FROM t0_template source_tab
10013 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10015 # check transactions-5 success: 1
10018 # check transactions-6 success: 1
10019 # INFO: Storage engine used for t1 seems to be transactional.
10022 # check transactions-7 success: 1
10023 DELETE FROM t1 WHERE f_charbig = 'was inserted';
10025 SET @@session.sql_mode = 'traditional';
10026 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10027 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10028 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10029 '', '', 'was inserted' FROM t0_template
10030 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10031 ERROR 22012: Division by 0
10034 # check transactions-8 success: 1
10035 # INFO: Storage engine used for t1 seems to be able to revert
10036 # changes made by the failing statement.
10037 SET @@session.sql_mode = '';
10039 DELETE FROM t1 WHERE f_charbig = 'was inserted';
10041 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10043 # check special-1 success: 1
10044 UPDATE t1 SET f_charbig = '';
10046 # check special-2 success: 1
10047 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10048 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10049 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10050 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10051 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10052 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10053 'just inserted' FROM t0_template
10054 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10055 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10057 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10058 f_charbig = 'updated by trigger'
10059 WHERE f_int1 = new.f_int1;
10061 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10062 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10063 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10065 # check trigger-1 success: 1
10066 DROP TRIGGER trg_1;
10067 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10068 f_int2 = CAST(f_char1 AS SIGNED INT),
10069 f_charbig = 'just inserted'
10070 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10072 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10073 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10074 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10075 'just inserted' FROM t0_template
10076 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10077 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10079 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10080 f_charbig = 'updated by trigger'
10081 WHERE f_int1 = new.f_int1;
10083 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10084 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10085 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10087 # check trigger-2 success: 1
10088 DROP TRIGGER trg_1;
10089 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10090 f_int2 = CAST(f_char1 AS SIGNED INT),
10091 f_charbig = 'just inserted'
10092 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10094 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10095 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10096 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10097 'just inserted' FROM t0_template
10098 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10099 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10101 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10102 f_charbig = 'updated by trigger'
10103 WHERE f_int1 = new.f_int1;
10105 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10106 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10108 # check trigger-3 success: 1
10109 DROP TRIGGER trg_1;
10110 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10111 f_int2 = CAST(f_char1 AS SIGNED INT),
10112 f_charbig = 'just inserted'
10113 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10115 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10116 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10117 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10118 'just inserted' FROM t0_template
10119 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10120 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10122 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10123 f_charbig = 'updated by trigger'
10124 WHERE f_int1 = - old.f_int1;
10126 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10127 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10129 # check trigger-4 success: 1
10130 DROP TRIGGER trg_1;
10131 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10132 f_int2 = CAST(f_char1 AS SIGNED INT),
10133 f_charbig = 'just inserted'
10134 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10136 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10137 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10138 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10139 'just inserted' FROM t0_template
10140 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10141 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10143 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10144 f_charbig = 'updated by trigger'
10145 WHERE f_int1 = new.f_int1;
10147 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10148 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10150 # check trigger-5 success: 1
10151 DROP TRIGGER trg_1;
10152 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10153 f_int2 = CAST(f_char1 AS SIGNED INT),
10154 f_charbig = 'just inserted'
10155 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10157 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10158 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10159 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10160 'just inserted' FROM t0_template
10161 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10162 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10164 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10165 f_charbig = 'updated by trigger'
10166 WHERE f_int1 = - old.f_int1;
10168 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10169 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10171 # check trigger-6 success: 1
10172 DROP TRIGGER trg_1;
10173 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10174 f_int2 = CAST(f_char1 AS SIGNED INT),
10175 f_charbig = 'just inserted'
10176 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10178 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10179 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10180 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10181 'just inserted' FROM t0_template
10182 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10183 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10185 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10186 f_charbig = 'updated by trigger'
10187 WHERE f_int1 = - old.f_int1;
10190 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10192 # check trigger-7 success: 1
10193 DROP TRIGGER trg_1;
10194 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10195 f_int2 = CAST(f_char1 AS SIGNED INT),
10196 f_charbig = 'just inserted'
10197 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10199 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10200 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10201 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10202 'just inserted' FROM t0_template
10203 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10204 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10206 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10207 f_charbig = 'updated by trigger'
10208 WHERE f_int1 = - old.f_int1;
10211 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10213 # check trigger-8 success: 1
10214 DROP TRIGGER trg_1;
10215 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10216 f_int2 = CAST(f_char1 AS SIGNED INT),
10217 f_charbig = 'just inserted'
10218 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10220 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10222 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10223 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10225 SET new.f_int1 = old.f_int1 + @max_row,
10226 new.f_int2 = old.f_int2 - @max_row,
10227 new.f_charbig = '####updated per update trigger####';
10230 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10231 f_charbig = '####updated per update statement itself####';
10233 # check trigger-9 success: 1
10234 DROP TRIGGER trg_2;
10235 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10236 f_int2 = CAST(f_char1 AS SIGNED INT),
10237 f_charbig = CONCAT('===',f_char1,'===');
10238 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10240 SET new.f_int1 = new.f_int1 + @max_row,
10241 new.f_int2 = new.f_int2 - @max_row,
10242 new.f_charbig = '####updated per update trigger####';
10245 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10246 f_charbig = '####updated per update statement itself####';
10248 # check trigger-10 success: 1
10249 DROP TRIGGER trg_2;
10250 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10251 f_int2 = CAST(f_char1 AS SIGNED INT),
10252 f_charbig = CONCAT('===',f_char1,'===');
10253 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10255 SET new.f_int1 = @my_max1 + @counter,
10256 new.f_int2 = @my_min2 - @counter,
10257 new.f_charbig = '####updated per insert trigger####';
10258 SET @counter = @counter + 1;
10261 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10262 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10263 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10264 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10265 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10267 DROP TRIGGER trg_3;
10269 # check trigger-11 success: 1
10271 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10272 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10273 AND f_charbig = '####updated per insert trigger####';
10274 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10276 SET new.f_int1 = @my_max1 + @counter,
10277 new.f_int2 = @my_min2 - @counter,
10278 new.f_charbig = '####updated per insert trigger####';
10279 SET @counter = @counter + 1;
10282 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10283 INSERT INTO t1 (f_char1, f_char2, f_charbig)
10284 SELECT CAST(f_int1 AS CHAR),
10285 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10286 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10288 DROP TRIGGER trg_3;
10290 # check trigger-12 success: 1
10292 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10293 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10294 AND f_charbig = '####updated per insert trigger####';
10296 Table Op Msg_type Msg_text
10297 test.t1 analyze status OK
10298 CHECK TABLE t1 EXTENDED;
10299 Table Op Msg_type Msg_text
10300 test.t1 check status OK
10301 CHECKSUM TABLE t1 EXTENDED;
10303 test.t1 <some_value>
10305 Table Op Msg_type Msg_text
10306 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
10307 test.t1 optimize status OK
10308 # check layout success: 1
10309 REPAIR TABLE t1 EXTENDED;
10310 Table Op Msg_type Msg_text
10311 test.t1 repair note The storage engine for the table doesn't support repair
10312 # check layout success: 1
10315 # check TRUNCATE success: 1
10316 # check layout success: 1
10317 # End usability test (inc/partition_check.inc)
10324 f_charbig VARCHAR(1000)
10325 , PRIMARY KEY (f_int2,f_int1)
10327 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
10328 (PARTITION part1 VALUES LESS THAN (0)
10329 (SUBPARTITION subpart11, SUBPARTITION subpart12),
10330 PARTITION part2 VALUES LESS THAN (5)
10331 (SUBPARTITION subpart21, SUBPARTITION subpart22),
10332 PARTITION part3 VALUES LESS THAN (10)
10333 (SUBPARTITION subpart31, SUBPARTITION subpart32),
10334 PARTITION part4 VALUES LESS THAN (2147483646)
10335 (SUBPARTITION subpart41, SUBPARTITION subpart42));
10336 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10337 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10338 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10339 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
10340 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10341 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10342 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10343 # Start usability test (inc/partition_check.inc)
10345 SHOW CREATE TABLE t1;
10347 t1 CREATE TABLE `t1` (
10348 `f_int1` int(11) NOT NULL DEFAULT '0',
10349 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
10350 `f_char1` char(20) DEFAULT NULL,
10351 `f_char2` char(20) DEFAULT NULL,
10352 `f_charbig` varchar(1000) DEFAULT NULL,
10353 PRIMARY KEY (`f_int2`,`f_int1`)
10354 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
10355 /*!50100 PARTITION BY RANGE (f_int1)
10356 SUBPARTITION BY KEY (f_int1)
10357 (PARTITION part1 VALUES LESS THAN (0)
10358 (SUBPARTITION subpart11 ENGINE = InnoDB,
10359 SUBPARTITION subpart12 ENGINE = InnoDB),
10360 PARTITION part2 VALUES LESS THAN (5)
10361 (SUBPARTITION subpart21 ENGINE = InnoDB,
10362 SUBPARTITION subpart22 ENGINE = InnoDB),
10363 PARTITION part3 VALUES LESS THAN (10)
10364 (SUBPARTITION subpart31 ENGINE = InnoDB,
10365 SUBPARTITION subpart32 ENGINE = InnoDB),
10366 PARTITION part4 VALUES LESS THAN (2147483646)
10367 (SUBPARTITION subpart41 ENGINE = InnoDB,
10368 SUBPARTITION subpart42 ENGINE = InnoDB)) */
10370 # check prerequisites-1 success: 1
10371 # check COUNT(*) success: 1
10372 # check MIN/MAX(f_int1) success: 1
10373 # check MIN/MAX(f_int2) success: 1
10374 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10375 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10376 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10377 WHERE f_int1 IN (2,3);
10378 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
10379 # check prerequisites-3 success: 1
10380 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
10381 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10382 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10383 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10384 WHERE f_int1 IN (2,3);
10385 DELETE FROM t1 WHERE f_charbig = 'delete me';
10386 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10387 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10388 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10389 WHERE f_int1 IN (2,3);
10390 DELETE FROM t1 WHERE f_charbig = 'delete me';
10391 # check read via f_int1 success: 1
10392 # check read via f_int2 success: 1
10394 # check multiple-1 success: 1
10395 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10397 # check multiple-2 success: 1
10398 INSERT INTO t1 SELECT * FROM t0_template
10399 WHERE MOD(f_int1,3) = 0;
10401 # check multiple-3 success: 1
10402 UPDATE t1 SET f_int1 = f_int1 + @max_row
10403 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10404 AND @max_row_div2 + @max_row_div4;
10406 # check multiple-4 success: 1
10408 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10409 AND @max_row_div2 + @max_row_div4 + @max_row;
10411 # check multiple-5 success: 1
10412 SELECT COUNT(*) INTO @try_count FROM t0_template
10413 WHERE MOD(f_int1,3) = 0
10414 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10415 SELECT COUNT(*) INTO @clash_count
10416 FROM t1 INNER JOIN t0_template USING(f_int1)
10417 WHERE MOD(f_int1,3) = 0
10418 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10419 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10421 SET f_int1 = @cur_value , f_int2 = @cur_value,
10422 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10423 f_charbig = '#SINGLE#';
10425 # check single-1 success: 1
10426 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10428 SET f_int1 = @cur_value , f_int2 = @cur_value,
10429 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10430 f_charbig = '#SINGLE#';
10432 # check single-2 success: 1
10433 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10434 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10435 UPDATE t1 SET f_int1 = @cur_value2
10436 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10438 # check single-3 success: 1
10439 SET @cur_value1= -1;
10440 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10441 UPDATE t1 SET f_int1 = @cur_value1
10442 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10444 # check single-4 success: 1
10445 SELECT MAX(f_int1) INTO @cur_value FROM t1;
10446 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10448 # check single-5 success: 1
10449 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10451 # check single-6 success: 1
10452 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10453 ERROR HY000: Table has no partition for value 2147483647
10454 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10455 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10456 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10457 f_charbig = '#NULL#';
10459 SET f_int1 = NULL , f_int2 = -@max_row,
10460 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10461 f_charbig = '#NULL#';
10462 ERROR 23000: Column 'f_int1' cannot be null
10463 # check null success: 1
10465 WHERE f_int1 = 0 AND f_int2 = 0
10466 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10467 AND f_charbig = '#NULL#';
10468 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10469 SELECT f_int1, f_int1, '', '', 'was inserted'
10470 FROM t0_template source_tab
10471 WHERE MOD(f_int1,3) = 0
10472 AND f_int1 BETWEEN @max_row_div2 AND @max_row
10474 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
10475 f_int2 = 2 * @max_row + source_tab.f_int1,
10476 f_charbig = 'was updated';
10478 # check unique-1-a success: 1
10480 # check unique-1-b success: 1
10481 DELETE FROM t1 WHERE f_charbig = 'was inserted';
10482 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10483 f_int2 = CAST(f_char1 AS SIGNED INT),
10484 f_charbig = CONCAT('===',f_char1,'===')
10485 WHERE f_charbig = 'was updated';
10486 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10487 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
10488 FROM t0_template source_tab
10489 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10491 # check replace success: 1
10493 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
10495 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
10496 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
10497 UPDATE t1 SET f_int2 = f_int1,
10498 f_char1 = CAST(f_int1 AS CHAR),
10499 f_char2 = CAST(f_int1 AS CHAR),
10500 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
10501 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
10503 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10504 SELECT f_int1, f_int1, '', '', 'was inserted'
10505 FROM t0_template source_tab
10506 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10508 # check transactions-1 success: 1
10511 # check transactions-2 success: 1
10514 # check transactions-3 success: 1
10515 DELETE FROM t1 WHERE f_charbig = 'was inserted';
10519 # check transactions-4 success: 1
10520 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10521 SELECT f_int1, f_int1, '', '', 'was inserted'
10522 FROM t0_template source_tab
10523 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10525 # check transactions-5 success: 1
10528 # check transactions-6 success: 1
10529 # INFO: Storage engine used for t1 seems to be transactional.
10532 # check transactions-7 success: 1
10533 DELETE FROM t1 WHERE f_charbig = 'was inserted';
10535 SET @@session.sql_mode = 'traditional';
10536 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10537 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10538 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10539 '', '', 'was inserted' FROM t0_template
10540 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10541 ERROR 22012: Division by 0
10544 # check transactions-8 success: 1
10545 # INFO: Storage engine used for t1 seems to be able to revert
10546 # changes made by the failing statement.
10547 SET @@session.sql_mode = '';
10549 DELETE FROM t1 WHERE f_charbig = 'was inserted';
10551 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10553 # check special-1 success: 1
10554 UPDATE t1 SET f_charbig = '';
10556 # check special-2 success: 1
10557 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10558 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10559 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10560 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10561 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10562 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10563 'just inserted' FROM t0_template
10564 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10565 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10567 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10568 f_charbig = 'updated by trigger'
10569 WHERE f_int1 = new.f_int1;
10571 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10572 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10573 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10575 # check trigger-1 success: 1
10576 DROP TRIGGER trg_1;
10577 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10578 f_int2 = CAST(f_char1 AS SIGNED INT),
10579 f_charbig = 'just inserted'
10580 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10582 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10583 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10584 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10585 'just inserted' FROM t0_template
10586 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10587 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10589 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10590 f_charbig = 'updated by trigger'
10591 WHERE f_int1 = new.f_int1;
10593 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10594 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10595 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10597 # check trigger-2 success: 1
10598 DROP TRIGGER trg_1;
10599 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10600 f_int2 = CAST(f_char1 AS SIGNED INT),
10601 f_charbig = 'just inserted'
10602 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10604 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10605 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10606 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10607 'just inserted' FROM t0_template
10608 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10609 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10611 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10612 f_charbig = 'updated by trigger'
10613 WHERE f_int1 = new.f_int1;
10615 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10616 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10618 # check trigger-3 success: 1
10619 DROP TRIGGER trg_1;
10620 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10621 f_int2 = CAST(f_char1 AS SIGNED INT),
10622 f_charbig = 'just inserted'
10623 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10625 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10626 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10627 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10628 'just inserted' FROM t0_template
10629 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10630 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10632 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10633 f_charbig = 'updated by trigger'
10634 WHERE f_int1 = - old.f_int1;
10636 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10637 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10639 # check trigger-4 success: 1
10640 DROP TRIGGER trg_1;
10641 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10642 f_int2 = CAST(f_char1 AS SIGNED INT),
10643 f_charbig = 'just inserted'
10644 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10646 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10647 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10648 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10649 'just inserted' FROM t0_template
10650 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10651 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10653 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10654 f_charbig = 'updated by trigger'
10655 WHERE f_int1 = new.f_int1;
10657 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10658 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10660 # check trigger-5 success: 1
10661 DROP TRIGGER trg_1;
10662 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10663 f_int2 = CAST(f_char1 AS SIGNED INT),
10664 f_charbig = 'just inserted'
10665 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10667 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10668 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10669 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10670 'just inserted' FROM t0_template
10671 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10672 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10674 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10675 f_charbig = 'updated by trigger'
10676 WHERE f_int1 = - old.f_int1;
10678 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10679 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10681 # check trigger-6 success: 1
10682 DROP TRIGGER trg_1;
10683 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10684 f_int2 = CAST(f_char1 AS SIGNED INT),
10685 f_charbig = 'just inserted'
10686 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10688 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10689 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10690 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10691 'just inserted' FROM t0_template
10692 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10693 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10695 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10696 f_charbig = 'updated by trigger'
10697 WHERE f_int1 = - old.f_int1;
10700 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10702 # check trigger-7 success: 1
10703 DROP TRIGGER trg_1;
10704 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10705 f_int2 = CAST(f_char1 AS SIGNED INT),
10706 f_charbig = 'just inserted'
10707 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10709 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10710 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10711 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10712 'just inserted' FROM t0_template
10713 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10714 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10716 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10717 f_charbig = 'updated by trigger'
10718 WHERE f_int1 = - old.f_int1;
10721 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10723 # check trigger-8 success: 1
10724 DROP TRIGGER trg_1;
10725 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10726 f_int2 = CAST(f_char1 AS SIGNED INT),
10727 f_charbig = 'just inserted'
10728 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10730 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10732 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10733 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10735 SET new.f_int1 = old.f_int1 + @max_row,
10736 new.f_int2 = old.f_int2 - @max_row,
10737 new.f_charbig = '####updated per update trigger####';
10740 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10741 f_charbig = '####updated per update statement itself####';
10743 # check trigger-9 success: 1
10744 DROP TRIGGER trg_2;
10745 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10746 f_int2 = CAST(f_char1 AS SIGNED INT),
10747 f_charbig = CONCAT('===',f_char1,'===');
10748 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10750 SET new.f_int1 = new.f_int1 + @max_row,
10751 new.f_int2 = new.f_int2 - @max_row,
10752 new.f_charbig = '####updated per update trigger####';
10755 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10756 f_charbig = '####updated per update statement itself####';
10758 # check trigger-10 success: 1
10759 DROP TRIGGER trg_2;
10760 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10761 f_int2 = CAST(f_char1 AS SIGNED INT),
10762 f_charbig = CONCAT('===',f_char1,'===');
10763 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10765 SET new.f_int1 = @my_max1 + @counter,
10766 new.f_int2 = @my_min2 - @counter,
10767 new.f_charbig = '####updated per insert trigger####';
10768 SET @counter = @counter + 1;
10771 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10772 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10773 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10774 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10775 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10777 DROP TRIGGER trg_3;
10779 # check trigger-11 success: 1
10781 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10782 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10783 AND f_charbig = '####updated per insert trigger####';
10784 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10786 SET new.f_int1 = @my_max1 + @counter,
10787 new.f_int2 = @my_min2 - @counter,
10788 new.f_charbig = '####updated per insert trigger####';
10789 SET @counter = @counter + 1;
10792 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10793 INSERT INTO t1 (f_char1, f_char2, f_charbig)
10794 SELECT CAST(f_int1 AS CHAR),
10795 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10796 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10798 DROP TRIGGER trg_3;
10800 # check trigger-12 success: 1
10802 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10803 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10804 AND f_charbig = '####updated per insert trigger####';
10806 Table Op Msg_type Msg_text
10807 test.t1 analyze status OK
10808 CHECK TABLE t1 EXTENDED;
10809 Table Op Msg_type Msg_text
10810 test.t1 check status OK
10811 CHECKSUM TABLE t1 EXTENDED;
10813 test.t1 <some_value>
10815 Table Op Msg_type Msg_text
10816 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
10817 test.t1 optimize status OK
10818 # check layout success: 1
10819 REPAIR TABLE t1 EXTENDED;
10820 Table Op Msg_type Msg_text
10821 test.t1 repair note The storage engine for the table doesn't support repair
10822 # check layout success: 1
10825 # check TRUNCATE success: 1
10826 # check layout success: 1
10827 # End usability test (inc/partition_check.inc)
10834 f_charbig VARCHAR(1000)
10835 , PRIMARY KEY (f_int2,f_int1)
10837 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
10838 (PARTITION part1 VALUES IN (0)
10839 (SUBPARTITION sp11, SUBPARTITION sp12),
10840 PARTITION part2 VALUES IN (1)
10841 (SUBPARTITION sp21, SUBPARTITION sp22),
10842 PARTITION part3 VALUES IN (2)
10843 (SUBPARTITION sp31, SUBPARTITION sp32),
10844 PARTITION part4 VALUES IN (NULL)
10845 (SUBPARTITION sp41, SUBPARTITION sp42));
10846 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10847 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10848 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10849 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
10850 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10851 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10852 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10853 # Start usability test (inc/partition_check.inc)
10855 SHOW CREATE TABLE t1;
10857 t1 CREATE TABLE `t1` (
10858 `f_int1` int(11) NOT NULL DEFAULT '0',
10859 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
10860 `f_char1` char(20) DEFAULT NULL,
10861 `f_char2` char(20) DEFAULT NULL,
10862 `f_charbig` varchar(1000) DEFAULT NULL,
10863 PRIMARY KEY (`f_int2`,`f_int1`)
10864 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
10865 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
10866 SUBPARTITION BY HASH (f_int1 + 1)
10867 (PARTITION part1 VALUES IN (0)
10868 (SUBPARTITION sp11 ENGINE = InnoDB,
10869 SUBPARTITION sp12 ENGINE = InnoDB),
10870 PARTITION part2 VALUES IN (1)
10871 (SUBPARTITION sp21 ENGINE = InnoDB,
10872 SUBPARTITION sp22 ENGINE = InnoDB),
10873 PARTITION part3 VALUES IN (2)
10874 (SUBPARTITION sp31 ENGINE = InnoDB,
10875 SUBPARTITION sp32 ENGINE = InnoDB),
10876 PARTITION part4 VALUES IN (NULL)
10877 (SUBPARTITION sp41 ENGINE = InnoDB,
10878 SUBPARTITION sp42 ENGINE = InnoDB)) */
10880 # check prerequisites-1 success: 1
10881 # check COUNT(*) success: 1
10882 # check MIN/MAX(f_int1) success: 1
10883 # check MIN/MAX(f_int2) success: 1
10884 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10885 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10886 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10887 WHERE f_int1 IN (2,3);
10888 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
10889 # check prerequisites-3 success: 1
10890 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
10891 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10892 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10893 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10894 WHERE f_int1 IN (2,3);
10895 DELETE FROM t1 WHERE f_charbig = 'delete me';
10896 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10897 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10898 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10899 WHERE f_int1 IN (2,3);
10900 DELETE FROM t1 WHERE f_charbig = 'delete me';
10901 # check read via f_int1 success: 1
10902 # check read via f_int2 success: 1
10904 # check multiple-1 success: 1
10905 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10907 # check multiple-2 success: 1
10908 INSERT INTO t1 SELECT * FROM t0_template
10909 WHERE MOD(f_int1,3) = 0;
10911 # check multiple-3 success: 1
10912 UPDATE t1 SET f_int1 = f_int1 + @max_row
10913 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10914 AND @max_row_div2 + @max_row_div4;
10916 # check multiple-4 success: 1
10918 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10919 AND @max_row_div2 + @max_row_div4 + @max_row;
10921 # check multiple-5 success: 1
10922 SELECT COUNT(*) INTO @try_count FROM t0_template
10923 WHERE MOD(f_int1,3) = 0
10924 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10925 SELECT COUNT(*) INTO @clash_count
10926 FROM t1 INNER JOIN t0_template USING(f_int1)
10927 WHERE MOD(f_int1,3) = 0
10928 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10929 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10931 SET f_int1 = @cur_value , f_int2 = @cur_value,
10932 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10933 f_charbig = '#SINGLE#';
10935 # check single-1 success: 1
10936 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10938 SET f_int1 = @cur_value , f_int2 = @cur_value,
10939 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10940 f_charbig = '#SINGLE#';
10942 # check single-2 success: 1
10943 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10944 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10945 UPDATE t1 SET f_int1 = @cur_value2
10946 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10948 # check single-3 success: 1
10949 SET @cur_value1= -1;
10950 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10951 UPDATE t1 SET f_int1 = @cur_value1
10952 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10954 # check single-4 success: 1
10955 SELECT MAX(f_int1) INTO @cur_value FROM t1;
10956 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10958 # check single-5 success: 1
10959 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10961 # check single-6 success: 1
10962 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10964 Warning 1264 Out of range value for column 'f_int2' at row 1
10966 # check single-7 success: 1
10967 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
10968 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10969 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10970 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10971 f_charbig = '#NULL#';
10973 SET f_int1 = NULL , f_int2 = -@max_row,
10974 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10975 f_charbig = '#NULL#';
10976 ERROR 23000: Column 'f_int1' cannot be null
10977 # check null success: 1
10979 WHERE f_int1 = 0 AND f_int2 = 0
10980 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10981 AND f_charbig = '#NULL#';
10982 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10983 SELECT f_int1, f_int1, '', '', 'was inserted'
10984 FROM t0_template source_tab
10985 WHERE MOD(f_int1,3) = 0
10986 AND f_int1 BETWEEN @max_row_div2 AND @max_row
10988 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
10989 f_int2 = 2 * @max_row + source_tab.f_int1,
10990 f_charbig = 'was updated';
10992 # check unique-1-a success: 1
10994 # check unique-1-b success: 1
10995 DELETE FROM t1 WHERE f_charbig = 'was inserted';
10996 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10997 f_int2 = CAST(f_char1 AS SIGNED INT),
10998 f_charbig = CONCAT('===',f_char1,'===')
10999 WHERE f_charbig = 'was updated';
11000 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11001 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
11002 FROM t0_template source_tab
11003 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11005 # check replace success: 1
11007 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
11009 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
11010 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
11011 UPDATE t1 SET f_int2 = f_int1,
11012 f_char1 = CAST(f_int1 AS CHAR),
11013 f_char2 = CAST(f_int1 AS CHAR),
11014 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
11015 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
11017 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11018 SELECT f_int1, f_int1, '', '', 'was inserted'
11019 FROM t0_template source_tab
11020 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11022 # check transactions-1 success: 1
11025 # check transactions-2 success: 1
11028 # check transactions-3 success: 1
11029 DELETE FROM t1 WHERE f_charbig = 'was inserted';
11033 # check transactions-4 success: 1
11034 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11035 SELECT f_int1, f_int1, '', '', 'was inserted'
11036 FROM t0_template source_tab
11037 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11039 # check transactions-5 success: 1
11042 # check transactions-6 success: 1
11043 # INFO: Storage engine used for t1 seems to be transactional.
11046 # check transactions-7 success: 1
11047 DELETE FROM t1 WHERE f_charbig = 'was inserted';
11049 SET @@session.sql_mode = 'traditional';
11050 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11051 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11052 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11053 '', '', 'was inserted' FROM t0_template
11054 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11055 ERROR 22012: Division by 0
11058 # check transactions-8 success: 1
11059 # INFO: Storage engine used for t1 seems to be able to revert
11060 # changes made by the failing statement.
11061 SET @@session.sql_mode = '';
11063 DELETE FROM t1 WHERE f_charbig = 'was inserted';
11065 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11067 # check special-1 success: 1
11068 UPDATE t1 SET f_charbig = '';
11070 # check special-2 success: 1
11071 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11072 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11073 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11074 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11075 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11076 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11077 'just inserted' FROM t0_template
11078 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11079 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11081 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11082 f_charbig = 'updated by trigger'
11083 WHERE f_int1 = new.f_int1;
11085 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11086 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11087 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11089 # check trigger-1 success: 1
11090 DROP TRIGGER trg_1;
11091 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11092 f_int2 = CAST(f_char1 AS SIGNED INT),
11093 f_charbig = 'just inserted'
11094 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11096 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11097 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11098 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11099 'just inserted' FROM t0_template
11100 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11101 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11103 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11104 f_charbig = 'updated by trigger'
11105 WHERE f_int1 = new.f_int1;
11107 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11108 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11109 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11111 # check trigger-2 success: 1
11112 DROP TRIGGER trg_1;
11113 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11114 f_int2 = CAST(f_char1 AS SIGNED INT),
11115 f_charbig = 'just inserted'
11116 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11118 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11119 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11120 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11121 'just inserted' FROM t0_template
11122 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11123 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11125 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11126 f_charbig = 'updated by trigger'
11127 WHERE f_int1 = new.f_int1;
11129 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11130 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11132 # check trigger-3 success: 1
11133 DROP TRIGGER trg_1;
11134 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11135 f_int2 = CAST(f_char1 AS SIGNED INT),
11136 f_charbig = 'just inserted'
11137 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11139 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11140 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11141 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11142 'just inserted' FROM t0_template
11143 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11144 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11146 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11147 f_charbig = 'updated by trigger'
11148 WHERE f_int1 = - old.f_int1;
11150 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11151 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11153 # check trigger-4 success: 1
11154 DROP TRIGGER trg_1;
11155 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11156 f_int2 = CAST(f_char1 AS SIGNED INT),
11157 f_charbig = 'just inserted'
11158 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11160 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11161 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11162 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11163 'just inserted' FROM t0_template
11164 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11165 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11167 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11168 f_charbig = 'updated by trigger'
11169 WHERE f_int1 = new.f_int1;
11171 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11172 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11174 # check trigger-5 success: 1
11175 DROP TRIGGER trg_1;
11176 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11177 f_int2 = CAST(f_char1 AS SIGNED INT),
11178 f_charbig = 'just inserted'
11179 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11181 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11182 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11183 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11184 'just inserted' FROM t0_template
11185 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11186 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11188 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11189 f_charbig = 'updated by trigger'
11190 WHERE f_int1 = - old.f_int1;
11192 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11193 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11195 # check trigger-6 success: 1
11196 DROP TRIGGER trg_1;
11197 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11198 f_int2 = CAST(f_char1 AS SIGNED INT),
11199 f_charbig = 'just inserted'
11200 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11202 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11203 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11204 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11205 'just inserted' FROM t0_template
11206 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11207 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11209 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11210 f_charbig = 'updated by trigger'
11211 WHERE f_int1 = - old.f_int1;
11214 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11216 # check trigger-7 success: 1
11217 DROP TRIGGER trg_1;
11218 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11219 f_int2 = CAST(f_char1 AS SIGNED INT),
11220 f_charbig = 'just inserted'
11221 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11223 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11224 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11225 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11226 'just inserted' FROM t0_template
11227 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11228 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11230 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11231 f_charbig = 'updated by trigger'
11232 WHERE f_int1 = - old.f_int1;
11235 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11237 # check trigger-8 success: 1
11238 DROP TRIGGER trg_1;
11239 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11240 f_int2 = CAST(f_char1 AS SIGNED INT),
11241 f_charbig = 'just inserted'
11242 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11244 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11246 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11247 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11249 SET new.f_int1 = old.f_int1 + @max_row,
11250 new.f_int2 = old.f_int2 - @max_row,
11251 new.f_charbig = '####updated per update trigger####';
11254 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11255 f_charbig = '####updated per update statement itself####';
11257 # check trigger-9 success: 1
11258 DROP TRIGGER trg_2;
11259 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11260 f_int2 = CAST(f_char1 AS SIGNED INT),
11261 f_charbig = CONCAT('===',f_char1,'===');
11262 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11264 SET new.f_int1 = new.f_int1 + @max_row,
11265 new.f_int2 = new.f_int2 - @max_row,
11266 new.f_charbig = '####updated per update trigger####';
11269 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11270 f_charbig = '####updated per update statement itself####';
11272 # check trigger-10 success: 1
11273 DROP TRIGGER trg_2;
11274 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11275 f_int2 = CAST(f_char1 AS SIGNED INT),
11276 f_charbig = CONCAT('===',f_char1,'===');
11277 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11279 SET new.f_int1 = @my_max1 + @counter,
11280 new.f_int2 = @my_min2 - @counter,
11281 new.f_charbig = '####updated per insert trigger####';
11282 SET @counter = @counter + 1;
11285 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11286 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11287 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11288 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11289 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11291 DROP TRIGGER trg_3;
11293 # check trigger-11 success: 1
11295 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11296 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11297 AND f_charbig = '####updated per insert trigger####';
11298 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11300 SET new.f_int1 = @my_max1 + @counter,
11301 new.f_int2 = @my_min2 - @counter,
11302 new.f_charbig = '####updated per insert trigger####';
11303 SET @counter = @counter + 1;
11306 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11307 INSERT INTO t1 (f_char1, f_char2, f_charbig)
11308 SELECT CAST(f_int1 AS CHAR),
11309 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11310 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11312 DROP TRIGGER trg_3;
11314 # check trigger-12 success: 1
11316 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11317 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11318 AND f_charbig = '####updated per insert trigger####';
11320 Table Op Msg_type Msg_text
11321 test.t1 analyze status OK
11322 CHECK TABLE t1 EXTENDED;
11323 Table Op Msg_type Msg_text
11324 test.t1 check status OK
11325 CHECKSUM TABLE t1 EXTENDED;
11327 test.t1 <some_value>
11329 Table Op Msg_type Msg_text
11330 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
11331 test.t1 optimize status OK
11332 # check layout success: 1
11333 REPAIR TABLE t1 EXTENDED;
11334 Table Op Msg_type Msg_text
11335 test.t1 repair note The storage engine for the table doesn't support repair
11336 # check layout success: 1
11339 # check TRUNCATE success: 1
11340 # check layout success: 1
11341 # End usability test (inc/partition_check.inc)
11348 f_charbig VARCHAR(1000)
11349 , PRIMARY KEY (f_int2,f_int1)
11351 PARTITION BY LIST(ABS(MOD(f_int1,2)))
11352 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
11353 (PARTITION part1 VALUES IN (0),
11354 PARTITION part2 VALUES IN (1),
11355 PARTITION part3 VALUES IN (NULL));
11356 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11357 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11358 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11359 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
11360 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11361 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11362 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11363 # Start usability test (inc/partition_check.inc)
11365 SHOW CREATE TABLE t1;
11367 t1 CREATE TABLE `t1` (
11368 `f_int1` int(11) NOT NULL DEFAULT '0',
11369 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
11370 `f_char1` char(20) DEFAULT NULL,
11371 `f_char2` char(20) DEFAULT NULL,
11372 `f_charbig` varchar(1000) DEFAULT NULL,
11373 PRIMARY KEY (`f_int2`,`f_int1`)
11374 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
11375 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
11376 SUBPARTITION BY KEY (f_int1)
11378 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
11379 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
11380 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
11382 # check prerequisites-1 success: 1
11383 # check COUNT(*) success: 1
11384 # check MIN/MAX(f_int1) success: 1
11385 # check MIN/MAX(f_int2) success: 1
11386 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11387 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11388 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11389 WHERE f_int1 IN (2,3);
11390 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
11391 # check prerequisites-3 success: 1
11392 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
11393 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11394 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11395 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11396 WHERE f_int1 IN (2,3);
11397 DELETE FROM t1 WHERE f_charbig = 'delete me';
11398 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11399 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11400 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11401 WHERE f_int1 IN (2,3);
11402 DELETE FROM t1 WHERE f_charbig = 'delete me';
11403 # check read via f_int1 success: 1
11404 # check read via f_int2 success: 1
11406 # check multiple-1 success: 1
11407 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11409 # check multiple-2 success: 1
11410 INSERT INTO t1 SELECT * FROM t0_template
11411 WHERE MOD(f_int1,3) = 0;
11413 # check multiple-3 success: 1
11414 UPDATE t1 SET f_int1 = f_int1 + @max_row
11415 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11416 AND @max_row_div2 + @max_row_div4;
11418 # check multiple-4 success: 1
11420 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11421 AND @max_row_div2 + @max_row_div4 + @max_row;
11423 # check multiple-5 success: 1
11424 SELECT COUNT(*) INTO @try_count FROM t0_template
11425 WHERE MOD(f_int1,3) = 0
11426 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11427 SELECT COUNT(*) INTO @clash_count
11428 FROM t1 INNER JOIN t0_template USING(f_int1)
11429 WHERE MOD(f_int1,3) = 0
11430 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11431 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11433 SET f_int1 = @cur_value , f_int2 = @cur_value,
11434 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11435 f_charbig = '#SINGLE#';
11437 # check single-1 success: 1
11438 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11440 SET f_int1 = @cur_value , f_int2 = @cur_value,
11441 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11442 f_charbig = '#SINGLE#';
11444 # check single-2 success: 1
11445 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11446 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11447 UPDATE t1 SET f_int1 = @cur_value2
11448 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11450 # check single-3 success: 1
11451 SET @cur_value1= -1;
11452 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11453 UPDATE t1 SET f_int1 = @cur_value1
11454 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11456 # check single-4 success: 1
11457 SELECT MAX(f_int1) INTO @cur_value FROM t1;
11458 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11460 # check single-5 success: 1
11461 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11463 # check single-6 success: 1
11464 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11466 Warning 1264 Out of range value for column 'f_int2' at row 1
11468 # check single-7 success: 1
11469 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11470 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11471 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11472 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11473 f_charbig = '#NULL#';
11475 SET f_int1 = NULL , f_int2 = -@max_row,
11476 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11477 f_charbig = '#NULL#';
11478 ERROR 23000: Column 'f_int1' cannot be null
11479 # check null success: 1
11481 WHERE f_int1 = 0 AND f_int2 = 0
11482 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11483 AND f_charbig = '#NULL#';
11484 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11485 SELECT f_int1, f_int1, '', '', 'was inserted'
11486 FROM t0_template source_tab
11487 WHERE MOD(f_int1,3) = 0
11488 AND f_int1 BETWEEN @max_row_div2 AND @max_row
11490 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
11491 f_int2 = 2 * @max_row + source_tab.f_int1,
11492 f_charbig = 'was updated';
11494 # check unique-1-a success: 1
11496 # check unique-1-b success: 1
11497 DELETE FROM t1 WHERE f_charbig = 'was inserted';
11498 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11499 f_int2 = CAST(f_char1 AS SIGNED INT),
11500 f_charbig = CONCAT('===',f_char1,'===')
11501 WHERE f_charbig = 'was updated';
11502 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11503 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
11504 FROM t0_template source_tab
11505 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11507 # check replace success: 1
11509 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
11511 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
11512 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
11513 UPDATE t1 SET f_int2 = f_int1,
11514 f_char1 = CAST(f_int1 AS CHAR),
11515 f_char2 = CAST(f_int1 AS CHAR),
11516 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
11517 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
11519 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11520 SELECT f_int1, f_int1, '', '', 'was inserted'
11521 FROM t0_template source_tab
11522 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11524 # check transactions-1 success: 1
11527 # check transactions-2 success: 1
11530 # check transactions-3 success: 1
11531 DELETE FROM t1 WHERE f_charbig = 'was inserted';
11535 # check transactions-4 success: 1
11536 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11537 SELECT f_int1, f_int1, '', '', 'was inserted'
11538 FROM t0_template source_tab
11539 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11541 # check transactions-5 success: 1
11544 # check transactions-6 success: 1
11545 # INFO: Storage engine used for t1 seems to be transactional.
11548 # check transactions-7 success: 1
11549 DELETE FROM t1 WHERE f_charbig = 'was inserted';
11551 SET @@session.sql_mode = 'traditional';
11552 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11553 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11554 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11555 '', '', 'was inserted' FROM t0_template
11556 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11557 ERROR 22012: Division by 0
11560 # check transactions-8 success: 1
11561 # INFO: Storage engine used for t1 seems to be able to revert
11562 # changes made by the failing statement.
11563 SET @@session.sql_mode = '';
11565 DELETE FROM t1 WHERE f_charbig = 'was inserted';
11567 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11569 # check special-1 success: 1
11570 UPDATE t1 SET f_charbig = '';
11572 # check special-2 success: 1
11573 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11574 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11575 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11576 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11577 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11578 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11579 'just inserted' FROM t0_template
11580 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11581 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11583 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11584 f_charbig = 'updated by trigger'
11585 WHERE f_int1 = new.f_int1;
11587 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11588 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11589 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11591 # check trigger-1 success: 1
11592 DROP TRIGGER trg_1;
11593 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11594 f_int2 = CAST(f_char1 AS SIGNED INT),
11595 f_charbig = 'just inserted'
11596 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11598 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11599 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11600 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11601 'just inserted' FROM t0_template
11602 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11603 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11605 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11606 f_charbig = 'updated by trigger'
11607 WHERE f_int1 = new.f_int1;
11609 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11610 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11611 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11613 # check trigger-2 success: 1
11614 DROP TRIGGER trg_1;
11615 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11616 f_int2 = CAST(f_char1 AS SIGNED INT),
11617 f_charbig = 'just inserted'
11618 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11620 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11621 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11622 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11623 'just inserted' FROM t0_template
11624 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11625 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11627 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11628 f_charbig = 'updated by trigger'
11629 WHERE f_int1 = new.f_int1;
11631 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11632 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11634 # check trigger-3 success: 1
11635 DROP TRIGGER trg_1;
11636 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11637 f_int2 = CAST(f_char1 AS SIGNED INT),
11638 f_charbig = 'just inserted'
11639 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11641 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11642 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11643 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11644 'just inserted' FROM t0_template
11645 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11646 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11648 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11649 f_charbig = 'updated by trigger'
11650 WHERE f_int1 = - old.f_int1;
11652 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11653 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11655 # check trigger-4 success: 1
11656 DROP TRIGGER trg_1;
11657 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11658 f_int2 = CAST(f_char1 AS SIGNED INT),
11659 f_charbig = 'just inserted'
11660 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11662 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11663 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11664 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11665 'just inserted' FROM t0_template
11666 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11667 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11669 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11670 f_charbig = 'updated by trigger'
11671 WHERE f_int1 = new.f_int1;
11673 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11674 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11676 # check trigger-5 success: 1
11677 DROP TRIGGER trg_1;
11678 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11679 f_int2 = CAST(f_char1 AS SIGNED INT),
11680 f_charbig = 'just inserted'
11681 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11683 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11684 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11685 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11686 'just inserted' FROM t0_template
11687 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11688 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11690 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11691 f_charbig = 'updated by trigger'
11692 WHERE f_int1 = - old.f_int1;
11694 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11695 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11697 # check trigger-6 success: 1
11698 DROP TRIGGER trg_1;
11699 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11700 f_int2 = CAST(f_char1 AS SIGNED INT),
11701 f_charbig = 'just inserted'
11702 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11704 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11705 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11706 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11707 'just inserted' FROM t0_template
11708 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11709 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11711 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11712 f_charbig = 'updated by trigger'
11713 WHERE f_int1 = - old.f_int1;
11716 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11718 # check trigger-7 success: 1
11719 DROP TRIGGER trg_1;
11720 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11721 f_int2 = CAST(f_char1 AS SIGNED INT),
11722 f_charbig = 'just inserted'
11723 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11725 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11726 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11727 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11728 'just inserted' FROM t0_template
11729 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11730 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11732 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11733 f_charbig = 'updated by trigger'
11734 WHERE f_int1 = - old.f_int1;
11737 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11739 # check trigger-8 success: 1
11740 DROP TRIGGER trg_1;
11741 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11742 f_int2 = CAST(f_char1 AS SIGNED INT),
11743 f_charbig = 'just inserted'
11744 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11746 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11748 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11749 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11751 SET new.f_int1 = old.f_int1 + @max_row,
11752 new.f_int2 = old.f_int2 - @max_row,
11753 new.f_charbig = '####updated per update trigger####';
11756 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11757 f_charbig = '####updated per update statement itself####';
11759 # check trigger-9 success: 1
11760 DROP TRIGGER trg_2;
11761 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11762 f_int2 = CAST(f_char1 AS SIGNED INT),
11763 f_charbig = CONCAT('===',f_char1,'===');
11764 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11766 SET new.f_int1 = new.f_int1 + @max_row,
11767 new.f_int2 = new.f_int2 - @max_row,
11768 new.f_charbig = '####updated per update trigger####';
11771 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11772 f_charbig = '####updated per update statement itself####';
11774 # check trigger-10 success: 1
11775 DROP TRIGGER trg_2;
11776 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11777 f_int2 = CAST(f_char1 AS SIGNED INT),
11778 f_charbig = CONCAT('===',f_char1,'===');
11779 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11781 SET new.f_int1 = @my_max1 + @counter,
11782 new.f_int2 = @my_min2 - @counter,
11783 new.f_charbig = '####updated per insert trigger####';
11784 SET @counter = @counter + 1;
11787 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
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), 'just inserted' FROM t0_template
11791 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11793 DROP TRIGGER trg_3;
11795 # check trigger-11 success: 1
11797 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11798 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11799 AND f_charbig = '####updated per insert trigger####';
11800 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11802 SET new.f_int1 = @my_max1 + @counter,
11803 new.f_int2 = @my_min2 - @counter,
11804 new.f_charbig = '####updated per insert trigger####';
11805 SET @counter = @counter + 1;
11808 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11809 INSERT INTO t1 (f_char1, f_char2, f_charbig)
11810 SELECT CAST(f_int1 AS CHAR),
11811 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11812 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11814 DROP TRIGGER trg_3;
11816 # check trigger-12 success: 1
11818 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11819 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11820 AND f_charbig = '####updated per insert trigger####';
11822 Table Op Msg_type Msg_text
11823 test.t1 analyze status OK
11824 CHECK TABLE t1 EXTENDED;
11825 Table Op Msg_type Msg_text
11826 test.t1 check status OK
11827 CHECKSUM TABLE t1 EXTENDED;
11829 test.t1 <some_value>
11831 Table Op Msg_type Msg_text
11832 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
11833 test.t1 optimize status OK
11834 # check layout success: 1
11835 REPAIR TABLE t1 EXTENDED;
11836 Table Op Msg_type Msg_text
11837 test.t1 repair note The storage engine for the table doesn't support repair
11838 # check layout success: 1
11841 # check TRUNCATE success: 1
11842 # check layout success: 1
11843 # End usability test (inc/partition_check.inc)
11845 # 2.1.3 UNIQUE INDEX exists
11846 DROP TABLE IF EXISTS t1;
11852 f_charbig VARCHAR(1000)
11853 , UNIQUE INDEX uidx1 (f_int1,f_int2)
11855 PARTITION BY HASH(f_int1) PARTITIONS 2;
11856 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11857 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11858 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11859 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
11860 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11861 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11862 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11863 # Start usability test (inc/partition_check.inc)
11865 SHOW CREATE TABLE t1;
11867 t1 CREATE TABLE `t1` (
11868 `f_int1` int(11) DEFAULT NULL,
11869 `f_int2` mediumint(9) DEFAULT NULL,
11870 `f_char1` char(20) DEFAULT NULL,
11871 `f_char2` char(20) DEFAULT NULL,
11872 `f_charbig` varchar(1000) DEFAULT NULL,
11873 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
11874 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
11875 /*!50100 PARTITION BY HASH (f_int1)
11878 # check prerequisites-1 success: 1
11879 # check COUNT(*) success: 1
11880 # check MIN/MAX(f_int1) success: 1
11881 # check MIN/MAX(f_int2) success: 1
11882 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11883 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11884 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11885 WHERE f_int1 IN (2,3);
11886 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
11887 # check prerequisites-3 success: 1
11888 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
11889 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11890 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11891 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11892 WHERE f_int1 IN (2,3);
11893 DELETE FROM t1 WHERE f_charbig = 'delete me';
11894 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11895 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11896 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11897 WHERE f_int1 IN (2,3);
11898 DELETE FROM t1 WHERE f_charbig = 'delete me';
11899 # check read via f_int1 success: 1
11900 # check read via f_int2 success: 1
11902 # check multiple-1 success: 1
11903 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11905 # check multiple-2 success: 1
11906 INSERT INTO t1 SELECT * FROM t0_template
11907 WHERE MOD(f_int1,3) = 0;
11909 # check multiple-3 success: 1
11910 UPDATE t1 SET f_int1 = f_int1 + @max_row
11911 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11912 AND @max_row_div2 + @max_row_div4;
11914 # check multiple-4 success: 1
11916 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11917 AND @max_row_div2 + @max_row_div4 + @max_row;
11919 # check multiple-5 success: 1
11920 SELECT COUNT(*) INTO @try_count FROM t0_template
11921 WHERE MOD(f_int1,3) = 0
11922 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11923 SELECT COUNT(*) INTO @clash_count
11924 FROM t1 INNER JOIN t0_template USING(f_int1)
11925 WHERE MOD(f_int1,3) = 0
11926 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11927 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11929 SET f_int1 = @cur_value , f_int2 = @cur_value,
11930 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11931 f_charbig = '#SINGLE#';
11933 # check single-1 success: 1
11934 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11936 SET f_int1 = @cur_value , f_int2 = @cur_value,
11937 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11938 f_charbig = '#SINGLE#';
11940 # check single-2 success: 1
11941 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11942 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11943 UPDATE t1 SET f_int1 = @cur_value2
11944 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11946 # check single-3 success: 1
11947 SET @cur_value1= -1;
11948 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11949 UPDATE t1 SET f_int1 = @cur_value1
11950 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11952 # check single-4 success: 1
11953 SELECT MAX(f_int1) INTO @cur_value FROM t1;
11954 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11956 # check single-5 success: 1
11957 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11959 # check single-6 success: 1
11960 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11962 Warning 1264 Out of range value for column 'f_int2' at row 1
11964 # check single-7 success: 1
11965 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11966 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11967 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11968 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11969 f_charbig = '#NULL#';
11971 SET f_int1 = NULL , f_int2 = -@max_row,
11972 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11973 f_charbig = '#NULL#';
11974 # check null success: 1
11976 # check null-1 success: 1
11977 UPDATE t1 SET f_int1 = -@max_row
11978 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11979 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11981 # check null-2 success: 1
11982 UPDATE t1 SET f_int1 = NULL
11983 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11984 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11986 # check null-3 success: 1
11988 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11989 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11991 # check null-4 success: 1
11993 WHERE f_int1 = 0 AND f_int2 = 0
11994 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11995 AND f_charbig = '#NULL#';
11996 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11997 SELECT f_int1, f_int1, '', '', 'was inserted'
11998 FROM t0_template source_tab
11999 WHERE MOD(f_int1,3) = 0
12000 AND f_int1 BETWEEN @max_row_div2 AND @max_row
12002 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
12003 f_int2 = 2 * @max_row + source_tab.f_int1,
12004 f_charbig = 'was updated';
12006 # check unique-1-a success: 1
12008 # check unique-1-b success: 1
12009 DELETE FROM t1 WHERE f_charbig = 'was inserted';
12010 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12011 f_int2 = CAST(f_char1 AS SIGNED INT),
12012 f_charbig = CONCAT('===',f_char1,'===')
12013 WHERE f_charbig = 'was updated';
12014 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12015 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
12016 FROM t0_template source_tab
12017 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12019 # check replace success: 1
12021 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
12023 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
12024 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
12025 UPDATE t1 SET f_int2 = f_int1,
12026 f_char1 = CAST(f_int1 AS CHAR),
12027 f_char2 = CAST(f_int1 AS CHAR),
12028 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
12029 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
12031 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12032 SELECT f_int1, f_int1, '', '', 'was inserted'
12033 FROM t0_template source_tab
12034 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12036 # check transactions-1 success: 1
12039 # check transactions-2 success: 1
12042 # check transactions-3 success: 1
12043 DELETE FROM t1 WHERE f_charbig = 'was inserted';
12047 # check transactions-4 success: 1
12048 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12049 SELECT f_int1, f_int1, '', '', 'was inserted'
12050 FROM t0_template source_tab
12051 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12053 # check transactions-5 success: 1
12056 # check transactions-6 success: 1
12057 # INFO: Storage engine used for t1 seems to be transactional.
12060 # check transactions-7 success: 1
12061 DELETE FROM t1 WHERE f_charbig = 'was inserted';
12063 SET @@session.sql_mode = 'traditional';
12064 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12065 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12066 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12067 '', '', 'was inserted' FROM t0_template
12068 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12069 ERROR 22012: Division by 0
12072 # check transactions-8 success: 1
12073 # INFO: Storage engine used for t1 seems to be able to revert
12074 # changes made by the failing statement.
12075 SET @@session.sql_mode = '';
12077 DELETE FROM t1 WHERE f_charbig = 'was inserted';
12079 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12081 # check special-1 success: 1
12082 UPDATE t1 SET f_charbig = '';
12084 # check special-2 success: 1
12085 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12086 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12087 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12088 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12089 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12090 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12091 'just inserted' FROM t0_template
12092 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12093 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12095 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12096 f_charbig = 'updated by trigger'
12097 WHERE f_int1 = new.f_int1;
12099 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12100 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12101 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12103 # check trigger-1 success: 1
12104 DROP TRIGGER trg_1;
12105 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12106 f_int2 = CAST(f_char1 AS SIGNED INT),
12107 f_charbig = 'just inserted'
12108 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12110 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12111 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12112 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12113 'just inserted' FROM t0_template
12114 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12115 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12117 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12118 f_charbig = 'updated by trigger'
12119 WHERE f_int1 = new.f_int1;
12121 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12122 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12123 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12125 # check trigger-2 success: 1
12126 DROP TRIGGER trg_1;
12127 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12128 f_int2 = CAST(f_char1 AS SIGNED INT),
12129 f_charbig = 'just inserted'
12130 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12132 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12133 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12134 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12135 'just inserted' FROM t0_template
12136 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12137 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12139 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12140 f_charbig = 'updated by trigger'
12141 WHERE f_int1 = new.f_int1;
12143 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12144 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12146 # check trigger-3 success: 1
12147 DROP TRIGGER trg_1;
12148 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12149 f_int2 = CAST(f_char1 AS SIGNED INT),
12150 f_charbig = 'just inserted'
12151 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12153 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12154 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12155 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12156 'just inserted' FROM t0_template
12157 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12158 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12160 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12161 f_charbig = 'updated by trigger'
12162 WHERE f_int1 = - old.f_int1;
12164 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12165 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12167 # check trigger-4 success: 1
12168 DROP TRIGGER trg_1;
12169 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12170 f_int2 = CAST(f_char1 AS SIGNED INT),
12171 f_charbig = 'just inserted'
12172 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12174 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12175 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12176 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12177 'just inserted' FROM t0_template
12178 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12179 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12181 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12182 f_charbig = 'updated by trigger'
12183 WHERE f_int1 = new.f_int1;
12185 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12186 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12188 # check trigger-5 success: 1
12189 DROP TRIGGER trg_1;
12190 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12191 f_int2 = CAST(f_char1 AS SIGNED INT),
12192 f_charbig = 'just inserted'
12193 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12195 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12196 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12197 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12198 'just inserted' FROM t0_template
12199 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12200 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12202 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12203 f_charbig = 'updated by trigger'
12204 WHERE f_int1 = - old.f_int1;
12206 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12207 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12209 # check trigger-6 success: 1
12210 DROP TRIGGER trg_1;
12211 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12212 f_int2 = CAST(f_char1 AS SIGNED INT),
12213 f_charbig = 'just inserted'
12214 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12216 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12217 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12218 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12219 'just inserted' FROM t0_template
12220 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12221 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12223 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12224 f_charbig = 'updated by trigger'
12225 WHERE f_int1 = - old.f_int1;
12228 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12230 # check trigger-7 success: 1
12231 DROP TRIGGER trg_1;
12232 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12233 f_int2 = CAST(f_char1 AS SIGNED INT),
12234 f_charbig = 'just inserted'
12235 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12237 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12238 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12239 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12240 'just inserted' FROM t0_template
12241 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12242 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12244 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12245 f_charbig = 'updated by trigger'
12246 WHERE f_int1 = - old.f_int1;
12249 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12251 # check trigger-8 success: 1
12252 DROP TRIGGER trg_1;
12253 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12254 f_int2 = CAST(f_char1 AS SIGNED INT),
12255 f_charbig = 'just inserted'
12256 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12258 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12260 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12261 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12263 SET new.f_int1 = old.f_int1 + @max_row,
12264 new.f_int2 = old.f_int2 - @max_row,
12265 new.f_charbig = '####updated per update trigger####';
12268 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12269 f_charbig = '####updated per update statement itself####';
12271 # check trigger-9 success: 1
12272 DROP TRIGGER trg_2;
12273 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12274 f_int2 = CAST(f_char1 AS SIGNED INT),
12275 f_charbig = CONCAT('===',f_char1,'===');
12276 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12278 SET new.f_int1 = new.f_int1 + @max_row,
12279 new.f_int2 = new.f_int2 - @max_row,
12280 new.f_charbig = '####updated per update trigger####';
12283 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12284 f_charbig = '####updated per update statement itself####';
12286 # check trigger-10 success: 1
12287 DROP TRIGGER trg_2;
12288 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12289 f_int2 = CAST(f_char1 AS SIGNED INT),
12290 f_charbig = CONCAT('===',f_char1,'===');
12291 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12293 SET new.f_int1 = @my_max1 + @counter,
12294 new.f_int2 = @my_min2 - @counter,
12295 new.f_charbig = '####updated per insert trigger####';
12296 SET @counter = @counter + 1;
12299 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12300 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12301 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12302 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12303 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12305 DROP TRIGGER trg_3;
12307 # check trigger-11 success: 1
12309 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12310 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12311 AND f_charbig = '####updated per insert trigger####';
12312 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12314 SET new.f_int1 = @my_max1 + @counter,
12315 new.f_int2 = @my_min2 - @counter,
12316 new.f_charbig = '####updated per insert trigger####';
12317 SET @counter = @counter + 1;
12320 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12321 INSERT INTO t1 (f_char1, f_char2, f_charbig)
12322 SELECT CAST(f_int1 AS CHAR),
12323 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12324 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12326 DROP TRIGGER trg_3;
12328 # check trigger-12 success: 1
12330 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12331 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12332 AND f_charbig = '####updated per insert trigger####';
12334 Table Op Msg_type Msg_text
12335 test.t1 analyze status OK
12336 CHECK TABLE t1 EXTENDED;
12337 Table Op Msg_type Msg_text
12338 test.t1 check status OK
12339 CHECKSUM TABLE t1 EXTENDED;
12341 test.t1 <some_value>
12343 Table Op Msg_type Msg_text
12344 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
12345 test.t1 optimize status OK
12346 # check layout success: 1
12347 REPAIR TABLE t1 EXTENDED;
12348 Table Op Msg_type Msg_text
12349 test.t1 repair note The storage engine for the table doesn't support repair
12350 # check layout success: 1
12353 # check TRUNCATE success: 1
12354 # check layout success: 1
12355 # End usability test (inc/partition_check.inc)
12362 f_charbig VARCHAR(1000)
12363 , UNIQUE INDEX uidx1 (f_int1,f_int2)
12365 PARTITION BY KEY(f_int1) PARTITIONS 5;
12366 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12367 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12368 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12369 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
12370 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12371 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12372 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12373 # Start usability test (inc/partition_check.inc)
12375 SHOW CREATE TABLE t1;
12377 t1 CREATE TABLE `t1` (
12378 `f_int1` int(11) DEFAULT NULL,
12379 `f_int2` mediumint(9) DEFAULT NULL,
12380 `f_char1` char(20) DEFAULT NULL,
12381 `f_char2` char(20) DEFAULT NULL,
12382 `f_charbig` varchar(1000) DEFAULT NULL,
12383 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
12384 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
12385 /*!50100 PARTITION BY KEY (f_int1)
12388 # check prerequisites-1 success: 1
12389 # check COUNT(*) success: 1
12390 # check MIN/MAX(f_int1) success: 1
12391 # check MIN/MAX(f_int2) success: 1
12392 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12393 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12394 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12395 WHERE f_int1 IN (2,3);
12396 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
12397 # check prerequisites-3 success: 1
12398 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
12399 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12400 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12401 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12402 WHERE f_int1 IN (2,3);
12403 DELETE FROM t1 WHERE f_charbig = 'delete me';
12404 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12405 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12406 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12407 WHERE f_int1 IN (2,3);
12408 DELETE FROM t1 WHERE f_charbig = 'delete me';
12409 # check read via f_int1 success: 1
12410 # check read via f_int2 success: 1
12412 # check multiple-1 success: 1
12413 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12415 # check multiple-2 success: 1
12416 INSERT INTO t1 SELECT * FROM t0_template
12417 WHERE MOD(f_int1,3) = 0;
12419 # check multiple-3 success: 1
12420 UPDATE t1 SET f_int1 = f_int1 + @max_row
12421 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12422 AND @max_row_div2 + @max_row_div4;
12424 # check multiple-4 success: 1
12426 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12427 AND @max_row_div2 + @max_row_div4 + @max_row;
12429 # check multiple-5 success: 1
12430 SELECT COUNT(*) INTO @try_count FROM t0_template
12431 WHERE MOD(f_int1,3) = 0
12432 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12433 SELECT COUNT(*) INTO @clash_count
12434 FROM t1 INNER JOIN t0_template USING(f_int1)
12435 WHERE MOD(f_int1,3) = 0
12436 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12437 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12439 SET f_int1 = @cur_value , f_int2 = @cur_value,
12440 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12441 f_charbig = '#SINGLE#';
12443 # check single-1 success: 1
12444 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12446 SET f_int1 = @cur_value , f_int2 = @cur_value,
12447 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12448 f_charbig = '#SINGLE#';
12450 # check single-2 success: 1
12451 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12452 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12453 UPDATE t1 SET f_int1 = @cur_value2
12454 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12456 # check single-3 success: 1
12457 SET @cur_value1= -1;
12458 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12459 UPDATE t1 SET f_int1 = @cur_value1
12460 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12462 # check single-4 success: 1
12463 SELECT MAX(f_int1) INTO @cur_value FROM t1;
12464 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12466 # check single-5 success: 1
12467 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12469 # check single-6 success: 1
12470 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12472 Warning 1264 Out of range value for column 'f_int2' at row 1
12474 # check single-7 success: 1
12475 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12476 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12477 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12478 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12479 f_charbig = '#NULL#';
12481 SET f_int1 = NULL , f_int2 = -@max_row,
12482 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12483 f_charbig = '#NULL#';
12484 # check null success: 1
12486 # check null-1 success: 1
12487 UPDATE t1 SET f_int1 = -@max_row
12488 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12489 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12491 # check null-2 success: 1
12492 UPDATE t1 SET f_int1 = NULL
12493 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12494 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12496 # check null-3 success: 1
12498 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12499 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12501 # check null-4 success: 1
12503 WHERE f_int1 = 0 AND f_int2 = 0
12504 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12505 AND f_charbig = '#NULL#';
12506 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12507 SELECT f_int1, f_int1, '', '', 'was inserted'
12508 FROM t0_template source_tab
12509 WHERE MOD(f_int1,3) = 0
12510 AND f_int1 BETWEEN @max_row_div2 AND @max_row
12512 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
12513 f_int2 = 2 * @max_row + source_tab.f_int1,
12514 f_charbig = 'was updated';
12516 # check unique-1-a success: 1
12518 # check unique-1-b success: 1
12519 DELETE FROM t1 WHERE f_charbig = 'was inserted';
12520 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12521 f_int2 = CAST(f_char1 AS SIGNED INT),
12522 f_charbig = CONCAT('===',f_char1,'===')
12523 WHERE f_charbig = 'was updated';
12524 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12525 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
12526 FROM t0_template source_tab
12527 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12529 # check replace success: 1
12531 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
12533 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
12534 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
12535 UPDATE t1 SET f_int2 = f_int1,
12536 f_char1 = CAST(f_int1 AS CHAR),
12537 f_char2 = CAST(f_int1 AS CHAR),
12538 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
12539 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
12541 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12542 SELECT f_int1, f_int1, '', '', 'was inserted'
12543 FROM t0_template source_tab
12544 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12546 # check transactions-1 success: 1
12549 # check transactions-2 success: 1
12552 # check transactions-3 success: 1
12553 DELETE FROM t1 WHERE f_charbig = 'was inserted';
12557 # check transactions-4 success: 1
12558 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12559 SELECT f_int1, f_int1, '', '', 'was inserted'
12560 FROM t0_template source_tab
12561 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12563 # check transactions-5 success: 1
12566 # check transactions-6 success: 1
12567 # INFO: Storage engine used for t1 seems to be transactional.
12570 # check transactions-7 success: 1
12571 DELETE FROM t1 WHERE f_charbig = 'was inserted';
12573 SET @@session.sql_mode = 'traditional';
12574 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12575 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12576 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12577 '', '', 'was inserted' FROM t0_template
12578 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12579 ERROR 22012: Division by 0
12582 # check transactions-8 success: 1
12583 # INFO: Storage engine used for t1 seems to be able to revert
12584 # changes made by the failing statement.
12585 SET @@session.sql_mode = '';
12587 DELETE FROM t1 WHERE f_charbig = 'was inserted';
12589 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12591 # check special-1 success: 1
12592 UPDATE t1 SET f_charbig = '';
12594 # check special-2 success: 1
12595 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12596 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12597 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12598 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12599 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12600 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12601 'just inserted' FROM t0_template
12602 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12603 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12605 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12606 f_charbig = 'updated by trigger'
12607 WHERE f_int1 = new.f_int1;
12609 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12610 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12611 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12613 # check trigger-1 success: 1
12614 DROP TRIGGER trg_1;
12615 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12616 f_int2 = CAST(f_char1 AS SIGNED INT),
12617 f_charbig = 'just inserted'
12618 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12620 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12621 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12622 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12623 'just inserted' FROM t0_template
12624 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12625 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12627 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12628 f_charbig = 'updated by trigger'
12629 WHERE f_int1 = new.f_int1;
12631 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12632 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12633 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12635 # check trigger-2 success: 1
12636 DROP TRIGGER trg_1;
12637 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12638 f_int2 = CAST(f_char1 AS SIGNED INT),
12639 f_charbig = 'just inserted'
12640 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12642 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12643 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12644 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12645 'just inserted' FROM t0_template
12646 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12647 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12649 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12650 f_charbig = 'updated by trigger'
12651 WHERE f_int1 = new.f_int1;
12653 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12654 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12656 # check trigger-3 success: 1
12657 DROP TRIGGER trg_1;
12658 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12659 f_int2 = CAST(f_char1 AS SIGNED INT),
12660 f_charbig = 'just inserted'
12661 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12663 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12664 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12665 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12666 'just inserted' FROM t0_template
12667 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12668 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12670 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12671 f_charbig = 'updated by trigger'
12672 WHERE f_int1 = - old.f_int1;
12674 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12675 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12677 # check trigger-4 success: 1
12678 DROP TRIGGER trg_1;
12679 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12680 f_int2 = CAST(f_char1 AS SIGNED INT),
12681 f_charbig = 'just inserted'
12682 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12684 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12685 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12686 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12687 'just inserted' FROM t0_template
12688 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12689 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12691 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12692 f_charbig = 'updated by trigger'
12693 WHERE f_int1 = new.f_int1;
12695 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12696 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12698 # check trigger-5 success: 1
12699 DROP TRIGGER trg_1;
12700 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12701 f_int2 = CAST(f_char1 AS SIGNED INT),
12702 f_charbig = 'just inserted'
12703 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12705 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12706 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12707 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12708 'just inserted' FROM t0_template
12709 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12710 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12712 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12713 f_charbig = 'updated by trigger'
12714 WHERE f_int1 = - old.f_int1;
12716 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12717 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12719 # check trigger-6 success: 1
12720 DROP TRIGGER trg_1;
12721 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12722 f_int2 = CAST(f_char1 AS SIGNED INT),
12723 f_charbig = 'just inserted'
12724 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12726 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12727 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12728 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12729 'just inserted' FROM t0_template
12730 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12731 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12733 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12734 f_charbig = 'updated by trigger'
12735 WHERE f_int1 = - old.f_int1;
12738 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12740 # check trigger-7 success: 1
12741 DROP TRIGGER trg_1;
12742 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12743 f_int2 = CAST(f_char1 AS SIGNED INT),
12744 f_charbig = 'just inserted'
12745 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12747 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12748 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12749 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12750 'just inserted' FROM t0_template
12751 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12752 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12754 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12755 f_charbig = 'updated by trigger'
12756 WHERE f_int1 = - old.f_int1;
12759 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12761 # check trigger-8 success: 1
12762 DROP TRIGGER trg_1;
12763 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12764 f_int2 = CAST(f_char1 AS SIGNED INT),
12765 f_charbig = 'just inserted'
12766 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12768 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12770 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12771 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12773 SET new.f_int1 = old.f_int1 + @max_row,
12774 new.f_int2 = old.f_int2 - @max_row,
12775 new.f_charbig = '####updated per update trigger####';
12778 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12779 f_charbig = '####updated per update statement itself####';
12781 # check trigger-9 success: 1
12782 DROP TRIGGER trg_2;
12783 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12784 f_int2 = CAST(f_char1 AS SIGNED INT),
12785 f_charbig = CONCAT('===',f_char1,'===');
12786 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12788 SET new.f_int1 = new.f_int1 + @max_row,
12789 new.f_int2 = new.f_int2 - @max_row,
12790 new.f_charbig = '####updated per update trigger####';
12793 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12794 f_charbig = '####updated per update statement itself####';
12796 # check trigger-10 success: 1
12797 DROP TRIGGER trg_2;
12798 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12799 f_int2 = CAST(f_char1 AS SIGNED INT),
12800 f_charbig = CONCAT('===',f_char1,'===');
12801 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12803 SET new.f_int1 = @my_max1 + @counter,
12804 new.f_int2 = @my_min2 - @counter,
12805 new.f_charbig = '####updated per insert trigger####';
12806 SET @counter = @counter + 1;
12809 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12810 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12811 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12812 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12813 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12815 DROP TRIGGER trg_3;
12817 # check trigger-11 success: 1
12819 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12820 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12821 AND f_charbig = '####updated per insert trigger####';
12822 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12824 SET new.f_int1 = @my_max1 + @counter,
12825 new.f_int2 = @my_min2 - @counter,
12826 new.f_charbig = '####updated per insert trigger####';
12827 SET @counter = @counter + 1;
12830 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12831 INSERT INTO t1 (f_char1, f_char2, f_charbig)
12832 SELECT CAST(f_int1 AS CHAR),
12833 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12834 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12836 DROP TRIGGER trg_3;
12838 # check trigger-12 success: 1
12840 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12841 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12842 AND f_charbig = '####updated per insert trigger####';
12844 Table Op Msg_type Msg_text
12845 test.t1 analyze status OK
12846 CHECK TABLE t1 EXTENDED;
12847 Table Op Msg_type Msg_text
12848 test.t1 check status OK
12849 CHECKSUM TABLE t1 EXTENDED;
12851 test.t1 <some_value>
12853 Table Op Msg_type Msg_text
12854 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
12855 test.t1 optimize status OK
12856 # check layout success: 1
12857 REPAIR TABLE t1 EXTENDED;
12858 Table Op Msg_type Msg_text
12859 test.t1 repair note The storage engine for the table doesn't support repair
12860 # check layout success: 1
12863 # check TRUNCATE success: 1
12864 # check layout success: 1
12865 # End usability test (inc/partition_check.inc)
12872 f_charbig VARCHAR(1000)
12873 , UNIQUE INDEX uidx1 (f_int1,f_int2)
12875 PARTITION BY LIST(MOD(f_int1,4))
12876 (PARTITION part_3 VALUES IN (-3),
12877 PARTITION part_2 VALUES IN (-2),
12878 PARTITION part_1 VALUES IN (-1),
12879 PARTITION part_N VALUES IN (NULL),
12880 PARTITION part0 VALUES IN (0),
12881 PARTITION part1 VALUES IN (1),
12882 PARTITION part2 VALUES IN (2),
12883 PARTITION part3 VALUES IN (3));
12884 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12885 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12886 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12887 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
12888 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12889 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12890 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12891 # Start usability test (inc/partition_check.inc)
12893 SHOW CREATE TABLE t1;
12895 t1 CREATE TABLE `t1` (
12896 `f_int1` int(11) DEFAULT NULL,
12897 `f_int2` mediumint(9) DEFAULT NULL,
12898 `f_char1` char(20) DEFAULT NULL,
12899 `f_char2` char(20) DEFAULT NULL,
12900 `f_charbig` varchar(1000) DEFAULT NULL,
12901 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
12902 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
12903 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
12904 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
12905 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
12906 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
12907 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
12908 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
12909 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
12910 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
12911 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
12913 # check prerequisites-1 success: 1
12914 # check COUNT(*) success: 1
12915 # check MIN/MAX(f_int1) success: 1
12916 # check MIN/MAX(f_int2) success: 1
12917 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12918 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12919 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12920 WHERE f_int1 IN (2,3);
12921 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
12922 # check prerequisites-3 success: 1
12923 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
12924 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12925 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12926 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12927 WHERE f_int1 IN (2,3);
12928 DELETE FROM t1 WHERE f_charbig = 'delete me';
12929 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12930 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12931 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12932 WHERE f_int1 IN (2,3);
12933 DELETE FROM t1 WHERE f_charbig = 'delete me';
12934 # check read via f_int1 success: 1
12935 # check read via f_int2 success: 1
12937 # check multiple-1 success: 1
12938 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12940 # check multiple-2 success: 1
12941 INSERT INTO t1 SELECT * FROM t0_template
12942 WHERE MOD(f_int1,3) = 0;
12944 # check multiple-3 success: 1
12945 UPDATE t1 SET f_int1 = f_int1 + @max_row
12946 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12947 AND @max_row_div2 + @max_row_div4;
12949 # check multiple-4 success: 1
12951 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12952 AND @max_row_div2 + @max_row_div4 + @max_row;
12954 # check multiple-5 success: 1
12955 SELECT COUNT(*) INTO @try_count FROM t0_template
12956 WHERE MOD(f_int1,3) = 0
12957 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12958 SELECT COUNT(*) INTO @clash_count
12959 FROM t1 INNER JOIN t0_template USING(f_int1)
12960 WHERE MOD(f_int1,3) = 0
12961 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12962 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12964 SET f_int1 = @cur_value , f_int2 = @cur_value,
12965 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12966 f_charbig = '#SINGLE#';
12968 # check single-1 success: 1
12969 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12971 SET f_int1 = @cur_value , f_int2 = @cur_value,
12972 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12973 f_charbig = '#SINGLE#';
12975 # check single-2 success: 1
12976 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12977 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12978 UPDATE t1 SET f_int1 = @cur_value2
12979 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12981 # check single-3 success: 1
12982 SET @cur_value1= -1;
12983 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12984 UPDATE t1 SET f_int1 = @cur_value1
12985 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12987 # check single-4 success: 1
12988 SELECT MAX(f_int1) INTO @cur_value FROM t1;
12989 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12991 # check single-5 success: 1
12992 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12994 # check single-6 success: 1
12995 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12997 Warning 1264 Out of range value for column 'f_int2' at row 1
12999 # check single-7 success: 1
13000 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13001 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13002 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13003 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13004 f_charbig = '#NULL#';
13006 SET f_int1 = NULL , f_int2 = -@max_row,
13007 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13008 f_charbig = '#NULL#';
13009 # check null success: 1
13011 # check null-1 success: 1
13012 UPDATE t1 SET f_int1 = -@max_row
13013 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13014 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13016 # check null-2 success: 1
13017 UPDATE t1 SET f_int1 = NULL
13018 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13019 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13021 # check null-3 success: 1
13023 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13024 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13026 # check null-4 success: 1
13028 WHERE f_int1 = 0 AND f_int2 = 0
13029 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13030 AND f_charbig = '#NULL#';
13031 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13032 SELECT f_int1, f_int1, '', '', 'was inserted'
13033 FROM t0_template source_tab
13034 WHERE MOD(f_int1,3) = 0
13035 AND f_int1 BETWEEN @max_row_div2 AND @max_row
13037 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
13038 f_int2 = 2 * @max_row + source_tab.f_int1,
13039 f_charbig = 'was updated';
13041 # check unique-1-a success: 1
13043 # check unique-1-b success: 1
13044 DELETE FROM t1 WHERE f_charbig = 'was inserted';
13045 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13046 f_int2 = CAST(f_char1 AS SIGNED INT),
13047 f_charbig = CONCAT('===',f_char1,'===')
13048 WHERE f_charbig = 'was updated';
13049 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13050 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
13051 FROM t0_template source_tab
13052 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13054 # check replace success: 1
13056 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
13058 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
13059 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
13060 UPDATE t1 SET f_int2 = f_int1,
13061 f_char1 = CAST(f_int1 AS CHAR),
13062 f_char2 = CAST(f_int1 AS CHAR),
13063 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
13064 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
13066 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13067 SELECT f_int1, f_int1, '', '', 'was inserted'
13068 FROM t0_template source_tab
13069 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13071 # check transactions-1 success: 1
13074 # check transactions-2 success: 1
13077 # check transactions-3 success: 1
13078 DELETE FROM t1 WHERE f_charbig = 'was inserted';
13082 # check transactions-4 success: 1
13083 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13084 SELECT f_int1, f_int1, '', '', 'was inserted'
13085 FROM t0_template source_tab
13086 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13088 # check transactions-5 success: 1
13091 # check transactions-6 success: 1
13092 # INFO: Storage engine used for t1 seems to be transactional.
13095 # check transactions-7 success: 1
13096 DELETE FROM t1 WHERE f_charbig = 'was inserted';
13098 SET @@session.sql_mode = 'traditional';
13099 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13100 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13101 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13102 '', '', 'was inserted' FROM t0_template
13103 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13104 ERROR 22012: Division by 0
13107 # check transactions-8 success: 1
13108 # INFO: Storage engine used for t1 seems to be able to revert
13109 # changes made by the failing statement.
13110 SET @@session.sql_mode = '';
13112 DELETE FROM t1 WHERE f_charbig = 'was inserted';
13114 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13116 # check special-1 success: 1
13117 UPDATE t1 SET f_charbig = '';
13119 # check special-2 success: 1
13120 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13121 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13122 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13123 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13124 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13125 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13126 'just inserted' FROM t0_template
13127 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13128 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13130 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13131 f_charbig = 'updated by trigger'
13132 WHERE f_int1 = new.f_int1;
13134 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13135 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13136 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13138 # check trigger-1 success: 1
13139 DROP TRIGGER trg_1;
13140 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13141 f_int2 = CAST(f_char1 AS SIGNED INT),
13142 f_charbig = 'just inserted'
13143 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13145 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13146 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13147 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13148 'just inserted' FROM t0_template
13149 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13150 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13152 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13153 f_charbig = 'updated by trigger'
13154 WHERE f_int1 = new.f_int1;
13156 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13157 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13158 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13160 # check trigger-2 success: 1
13161 DROP TRIGGER trg_1;
13162 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13163 f_int2 = CAST(f_char1 AS SIGNED INT),
13164 f_charbig = 'just inserted'
13165 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13167 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13168 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13169 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13170 'just inserted' FROM t0_template
13171 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13172 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13174 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13175 f_charbig = 'updated by trigger'
13176 WHERE f_int1 = new.f_int1;
13178 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13179 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13181 # check trigger-3 success: 1
13182 DROP TRIGGER trg_1;
13183 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13184 f_int2 = CAST(f_char1 AS SIGNED INT),
13185 f_charbig = 'just inserted'
13186 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13188 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13189 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13190 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13191 'just inserted' FROM t0_template
13192 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13193 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13195 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13196 f_charbig = 'updated by trigger'
13197 WHERE f_int1 = - old.f_int1;
13199 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13200 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13202 # check trigger-4 success: 1
13203 DROP TRIGGER trg_1;
13204 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13205 f_int2 = CAST(f_char1 AS SIGNED INT),
13206 f_charbig = 'just inserted'
13207 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13209 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13210 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13211 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13212 'just inserted' FROM t0_template
13213 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13214 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13216 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13217 f_charbig = 'updated by trigger'
13218 WHERE f_int1 = new.f_int1;
13220 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13221 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13223 # check trigger-5 success: 1
13224 DROP TRIGGER trg_1;
13225 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13226 f_int2 = CAST(f_char1 AS SIGNED INT),
13227 f_charbig = 'just inserted'
13228 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13230 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13231 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13232 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13233 'just inserted' FROM t0_template
13234 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13235 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13237 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13238 f_charbig = 'updated by trigger'
13239 WHERE f_int1 = - old.f_int1;
13241 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13242 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13244 # check trigger-6 success: 1
13245 DROP TRIGGER trg_1;
13246 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13247 f_int2 = CAST(f_char1 AS SIGNED INT),
13248 f_charbig = 'just inserted'
13249 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13251 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13252 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13253 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13254 'just inserted' FROM t0_template
13255 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13256 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13258 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13259 f_charbig = 'updated by trigger'
13260 WHERE f_int1 = - old.f_int1;
13263 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13265 # check trigger-7 success: 1
13266 DROP TRIGGER trg_1;
13267 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13268 f_int2 = CAST(f_char1 AS SIGNED INT),
13269 f_charbig = 'just inserted'
13270 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13272 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13273 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13274 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13275 'just inserted' FROM t0_template
13276 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13277 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13279 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13280 f_charbig = 'updated by trigger'
13281 WHERE f_int1 = - old.f_int1;
13284 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13286 # check trigger-8 success: 1
13287 DROP TRIGGER trg_1;
13288 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13289 f_int2 = CAST(f_char1 AS SIGNED INT),
13290 f_charbig = 'just inserted'
13291 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13293 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13295 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13296 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13298 SET new.f_int1 = old.f_int1 + @max_row,
13299 new.f_int2 = old.f_int2 - @max_row,
13300 new.f_charbig = '####updated per update trigger####';
13303 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13304 f_charbig = '####updated per update statement itself####';
13306 # check trigger-9 success: 1
13307 DROP TRIGGER trg_2;
13308 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13309 f_int2 = CAST(f_char1 AS SIGNED INT),
13310 f_charbig = CONCAT('===',f_char1,'===');
13311 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13313 SET new.f_int1 = new.f_int1 + @max_row,
13314 new.f_int2 = new.f_int2 - @max_row,
13315 new.f_charbig = '####updated per update trigger####';
13318 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13319 f_charbig = '####updated per update statement itself####';
13321 # check trigger-10 success: 1
13322 DROP TRIGGER trg_2;
13323 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13324 f_int2 = CAST(f_char1 AS SIGNED INT),
13325 f_charbig = CONCAT('===',f_char1,'===');
13326 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13328 SET new.f_int1 = @my_max1 + @counter,
13329 new.f_int2 = @my_min2 - @counter,
13330 new.f_charbig = '####updated per insert trigger####';
13331 SET @counter = @counter + 1;
13334 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13335 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13336 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13337 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13338 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13340 DROP TRIGGER trg_3;
13342 # check trigger-11 success: 1
13344 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13345 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13346 AND f_charbig = '####updated per insert trigger####';
13347 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13349 SET new.f_int1 = @my_max1 + @counter,
13350 new.f_int2 = @my_min2 - @counter,
13351 new.f_charbig = '####updated per insert trigger####';
13352 SET @counter = @counter + 1;
13355 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13356 INSERT INTO t1 (f_char1, f_char2, f_charbig)
13357 SELECT CAST(f_int1 AS CHAR),
13358 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13359 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13361 DROP TRIGGER trg_3;
13363 # check trigger-12 success: 1
13365 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13366 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13367 AND f_charbig = '####updated per insert trigger####';
13369 Table Op Msg_type Msg_text
13370 test.t1 analyze status OK
13371 CHECK TABLE t1 EXTENDED;
13372 Table Op Msg_type Msg_text
13373 test.t1 check status OK
13374 CHECKSUM TABLE t1 EXTENDED;
13376 test.t1 <some_value>
13378 Table Op Msg_type Msg_text
13379 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
13380 test.t1 optimize status OK
13381 # check layout success: 1
13382 REPAIR TABLE t1 EXTENDED;
13383 Table Op Msg_type Msg_text
13384 test.t1 repair note The storage engine for the table doesn't support repair
13385 # check layout success: 1
13388 # check TRUNCATE success: 1
13389 # check layout success: 1
13390 # End usability test (inc/partition_check.inc)
13397 f_charbig VARCHAR(1000)
13398 , UNIQUE INDEX uidx1 (f_int1,f_int2)
13400 PARTITION BY RANGE(f_int1)
13401 (PARTITION parta VALUES LESS THAN (0),
13402 PARTITION partb VALUES LESS THAN (5),
13403 PARTITION partc VALUES LESS THAN (10),
13404 PARTITION partd VALUES LESS THAN (10 + 5),
13405 PARTITION parte VALUES LESS THAN (20),
13406 PARTITION partf VALUES LESS THAN (2147483646));
13407 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13408 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13409 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13410 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
13411 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13412 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13413 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13414 # Start usability test (inc/partition_check.inc)
13416 SHOW CREATE TABLE t1;
13418 t1 CREATE TABLE `t1` (
13419 `f_int1` int(11) DEFAULT NULL,
13420 `f_int2` mediumint(9) DEFAULT NULL,
13421 `f_char1` char(20) DEFAULT NULL,
13422 `f_char2` char(20) DEFAULT NULL,
13423 `f_charbig` varchar(1000) DEFAULT NULL,
13424 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
13425 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
13426 /*!50100 PARTITION BY RANGE (f_int1)
13427 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
13428 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
13429 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
13430 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
13431 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
13432 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
13434 # check prerequisites-1 success: 1
13435 # check COUNT(*) success: 1
13436 # check MIN/MAX(f_int1) success: 1
13437 # check MIN/MAX(f_int2) success: 1
13438 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13439 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13440 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13441 WHERE f_int1 IN (2,3);
13442 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
13443 # check prerequisites-3 success: 1
13444 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
13445 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13446 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13447 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13448 WHERE f_int1 IN (2,3);
13449 DELETE FROM t1 WHERE f_charbig = 'delete me';
13450 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13451 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13452 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13453 WHERE f_int1 IN (2,3);
13454 DELETE FROM t1 WHERE f_charbig = 'delete me';
13455 # check read via f_int1 success: 1
13456 # check read via f_int2 success: 1
13458 # check multiple-1 success: 1
13459 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13461 # check multiple-2 success: 1
13462 INSERT INTO t1 SELECT * FROM t0_template
13463 WHERE MOD(f_int1,3) = 0;
13465 # check multiple-3 success: 1
13466 UPDATE t1 SET f_int1 = f_int1 + @max_row
13467 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13468 AND @max_row_div2 + @max_row_div4;
13470 # check multiple-4 success: 1
13472 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13473 AND @max_row_div2 + @max_row_div4 + @max_row;
13475 # check multiple-5 success: 1
13476 SELECT COUNT(*) INTO @try_count FROM t0_template
13477 WHERE MOD(f_int1,3) = 0
13478 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13479 SELECT COUNT(*) INTO @clash_count
13480 FROM t1 INNER JOIN t0_template USING(f_int1)
13481 WHERE MOD(f_int1,3) = 0
13482 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13483 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13485 SET f_int1 = @cur_value , f_int2 = @cur_value,
13486 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13487 f_charbig = '#SINGLE#';
13489 # check single-1 success: 1
13490 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13492 SET f_int1 = @cur_value , f_int2 = @cur_value,
13493 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13494 f_charbig = '#SINGLE#';
13496 # check single-2 success: 1
13497 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13498 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13499 UPDATE t1 SET f_int1 = @cur_value2
13500 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13502 # check single-3 success: 1
13503 SET @cur_value1= -1;
13504 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13505 UPDATE t1 SET f_int1 = @cur_value1
13506 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13508 # check single-4 success: 1
13509 SELECT MAX(f_int1) INTO @cur_value FROM t1;
13510 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13512 # check single-5 success: 1
13513 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13515 # check single-6 success: 1
13516 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13517 ERROR HY000: Table has no partition for value 2147483647
13518 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13519 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13520 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13521 f_charbig = '#NULL#';
13523 SET f_int1 = NULL , f_int2 = -@max_row,
13524 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13525 f_charbig = '#NULL#';
13526 # check null success: 1
13528 # check null-1 success: 1
13529 UPDATE t1 SET f_int1 = -@max_row
13530 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13531 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13533 # check null-2 success: 1
13534 UPDATE t1 SET f_int1 = NULL
13535 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13536 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13538 # check null-3 success: 1
13540 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13541 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13543 # check null-4 success: 1
13545 WHERE f_int1 = 0 AND f_int2 = 0
13546 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13547 AND f_charbig = '#NULL#';
13548 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13549 SELECT f_int1, f_int1, '', '', 'was inserted'
13550 FROM t0_template source_tab
13551 WHERE MOD(f_int1,3) = 0
13552 AND f_int1 BETWEEN @max_row_div2 AND @max_row
13554 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
13555 f_int2 = 2 * @max_row + source_tab.f_int1,
13556 f_charbig = 'was updated';
13558 # check unique-1-a success: 1
13560 # check unique-1-b success: 1
13561 DELETE FROM t1 WHERE f_charbig = 'was inserted';
13562 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13563 f_int2 = CAST(f_char1 AS SIGNED INT),
13564 f_charbig = CONCAT('===',f_char1,'===')
13565 WHERE f_charbig = 'was updated';
13566 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13567 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
13568 FROM t0_template source_tab
13569 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13571 # check replace success: 1
13573 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
13575 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
13576 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
13577 UPDATE t1 SET f_int2 = f_int1,
13578 f_char1 = CAST(f_int1 AS CHAR),
13579 f_char2 = CAST(f_int1 AS CHAR),
13580 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
13581 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
13583 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13584 SELECT f_int1, f_int1, '', '', 'was inserted'
13585 FROM t0_template source_tab
13586 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13588 # check transactions-1 success: 1
13591 # check transactions-2 success: 1
13594 # check transactions-3 success: 1
13595 DELETE FROM t1 WHERE f_charbig = 'was inserted';
13599 # check transactions-4 success: 1
13600 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13601 SELECT f_int1, f_int1, '', '', 'was inserted'
13602 FROM t0_template source_tab
13603 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13605 # check transactions-5 success: 1
13608 # check transactions-6 success: 1
13609 # INFO: Storage engine used for t1 seems to be transactional.
13612 # check transactions-7 success: 1
13613 DELETE FROM t1 WHERE f_charbig = 'was inserted';
13615 SET @@session.sql_mode = 'traditional';
13616 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13617 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13618 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13619 '', '', 'was inserted' FROM t0_template
13620 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13621 ERROR 22012: Division by 0
13624 # check transactions-8 success: 1
13625 # INFO: Storage engine used for t1 seems to be able to revert
13626 # changes made by the failing statement.
13627 SET @@session.sql_mode = '';
13629 DELETE FROM t1 WHERE f_charbig = 'was inserted';
13631 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13633 # check special-1 success: 1
13634 UPDATE t1 SET f_charbig = '';
13636 # check special-2 success: 1
13637 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13638 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13639 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13640 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13641 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13642 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13643 'just inserted' FROM t0_template
13644 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13645 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13647 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13648 f_charbig = 'updated by trigger'
13649 WHERE f_int1 = new.f_int1;
13651 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13652 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13653 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13655 # check trigger-1 success: 1
13656 DROP TRIGGER trg_1;
13657 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13658 f_int2 = CAST(f_char1 AS SIGNED INT),
13659 f_charbig = 'just inserted'
13660 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13662 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13663 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13664 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13665 'just inserted' FROM t0_template
13666 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13667 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13669 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13670 f_charbig = 'updated by trigger'
13671 WHERE f_int1 = new.f_int1;
13673 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13674 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13675 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13677 # check trigger-2 success: 1
13678 DROP TRIGGER trg_1;
13679 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13680 f_int2 = CAST(f_char1 AS SIGNED INT),
13681 f_charbig = 'just inserted'
13682 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13684 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13685 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13686 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13687 'just inserted' FROM t0_template
13688 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13689 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13691 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13692 f_charbig = 'updated by trigger'
13693 WHERE f_int1 = new.f_int1;
13695 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13696 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13698 # check trigger-3 success: 1
13699 DROP TRIGGER trg_1;
13700 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13701 f_int2 = CAST(f_char1 AS SIGNED INT),
13702 f_charbig = 'just inserted'
13703 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13705 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13706 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13707 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13708 'just inserted' FROM t0_template
13709 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13710 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13712 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13713 f_charbig = 'updated by trigger'
13714 WHERE f_int1 = - old.f_int1;
13716 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13717 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13719 # check trigger-4 success: 1
13720 DROP TRIGGER trg_1;
13721 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13722 f_int2 = CAST(f_char1 AS SIGNED INT),
13723 f_charbig = 'just inserted'
13724 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13726 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13727 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13728 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13729 'just inserted' FROM t0_template
13730 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13731 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13733 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13734 f_charbig = 'updated by trigger'
13735 WHERE f_int1 = new.f_int1;
13737 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13738 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13740 # check trigger-5 success: 1
13741 DROP TRIGGER trg_1;
13742 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13743 f_int2 = CAST(f_char1 AS SIGNED INT),
13744 f_charbig = 'just inserted'
13745 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13747 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13748 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13749 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13750 'just inserted' FROM t0_template
13751 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13752 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13754 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13755 f_charbig = 'updated by trigger'
13756 WHERE f_int1 = - old.f_int1;
13758 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13759 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13761 # check trigger-6 success: 1
13762 DROP TRIGGER trg_1;
13763 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13764 f_int2 = CAST(f_char1 AS SIGNED INT),
13765 f_charbig = 'just inserted'
13766 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13768 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13769 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13770 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13771 'just inserted' FROM t0_template
13772 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13773 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13775 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13776 f_charbig = 'updated by trigger'
13777 WHERE f_int1 = - old.f_int1;
13780 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13782 # check trigger-7 success: 1
13783 DROP TRIGGER trg_1;
13784 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13785 f_int2 = CAST(f_char1 AS SIGNED INT),
13786 f_charbig = 'just inserted'
13787 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13789 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13790 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13791 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13792 'just inserted' FROM t0_template
13793 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13794 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13796 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13797 f_charbig = 'updated by trigger'
13798 WHERE f_int1 = - old.f_int1;
13801 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13803 # check trigger-8 success: 1
13804 DROP TRIGGER trg_1;
13805 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13806 f_int2 = CAST(f_char1 AS SIGNED INT),
13807 f_charbig = 'just inserted'
13808 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13810 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13812 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13813 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13815 SET new.f_int1 = old.f_int1 + @max_row,
13816 new.f_int2 = old.f_int2 - @max_row,
13817 new.f_charbig = '####updated per update trigger####';
13820 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13821 f_charbig = '####updated per update statement itself####';
13823 # check trigger-9 success: 1
13824 DROP TRIGGER trg_2;
13825 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13826 f_int2 = CAST(f_char1 AS SIGNED INT),
13827 f_charbig = CONCAT('===',f_char1,'===');
13828 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13830 SET new.f_int1 = new.f_int1 + @max_row,
13831 new.f_int2 = new.f_int2 - @max_row,
13832 new.f_charbig = '####updated per update trigger####';
13835 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13836 f_charbig = '####updated per update statement itself####';
13838 # check trigger-10 success: 1
13839 DROP TRIGGER trg_2;
13840 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13841 f_int2 = CAST(f_char1 AS SIGNED INT),
13842 f_charbig = CONCAT('===',f_char1,'===');
13843 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13845 SET new.f_int1 = @my_max1 + @counter,
13846 new.f_int2 = @my_min2 - @counter,
13847 new.f_charbig = '####updated per insert trigger####';
13848 SET @counter = @counter + 1;
13851 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13852 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13853 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13854 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13855 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13857 DROP TRIGGER trg_3;
13859 # check trigger-11 success: 1
13861 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13862 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13863 AND f_charbig = '####updated per insert trigger####';
13864 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13866 SET new.f_int1 = @my_max1 + @counter,
13867 new.f_int2 = @my_min2 - @counter,
13868 new.f_charbig = '####updated per insert trigger####';
13869 SET @counter = @counter + 1;
13872 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13873 INSERT INTO t1 (f_char1, f_char2, f_charbig)
13874 SELECT CAST(f_int1 AS CHAR),
13875 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13876 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13878 DROP TRIGGER trg_3;
13880 # check trigger-12 success: 1
13882 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13883 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13884 AND f_charbig = '####updated per insert trigger####';
13886 Table Op Msg_type Msg_text
13887 test.t1 analyze status OK
13888 CHECK TABLE t1 EXTENDED;
13889 Table Op Msg_type Msg_text
13890 test.t1 check status OK
13891 CHECKSUM TABLE t1 EXTENDED;
13893 test.t1 <some_value>
13895 Table Op Msg_type Msg_text
13896 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
13897 test.t1 optimize status OK
13898 # check layout success: 1
13899 REPAIR TABLE t1 EXTENDED;
13900 Table Op Msg_type Msg_text
13901 test.t1 repair note The storage engine for the table doesn't support repair
13902 # check layout success: 1
13905 # check TRUNCATE success: 1
13906 # check layout success: 1
13907 # End usability test (inc/partition_check.inc)
13914 f_charbig VARCHAR(1000)
13915 , UNIQUE INDEX uidx1 (f_int1,f_int2)
13917 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
13918 (PARTITION parta VALUES LESS THAN (0),
13919 PARTITION partb VALUES LESS THAN (5),
13920 PARTITION partc VALUES LESS THAN (10),
13921 PARTITION partd VALUES LESS THAN (2147483646));
13922 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13923 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13924 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13925 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
13926 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13927 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13928 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13929 # Start usability test (inc/partition_check.inc)
13931 SHOW CREATE TABLE t1;
13933 t1 CREATE TABLE `t1` (
13934 `f_int1` int(11) DEFAULT NULL,
13935 `f_int2` mediumint(9) DEFAULT NULL,
13936 `f_char1` char(20) DEFAULT NULL,
13937 `f_char2` char(20) DEFAULT NULL,
13938 `f_charbig` varchar(1000) DEFAULT NULL,
13939 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
13940 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
13941 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
13942 SUBPARTITION BY HASH (f_int1)
13944 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
13945 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
13946 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
13947 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
13949 # check prerequisites-1 success: 1
13950 # check COUNT(*) success: 1
13951 # check MIN/MAX(f_int1) success: 1
13952 # check MIN/MAX(f_int2) success: 1
13953 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13954 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13955 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13956 WHERE f_int1 IN (2,3);
13957 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
13958 # check prerequisites-3 success: 1
13959 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
13960 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13961 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13962 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13963 WHERE f_int1 IN (2,3);
13964 DELETE FROM t1 WHERE f_charbig = 'delete me';
13965 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13966 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13967 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13968 WHERE f_int1 IN (2,3);
13969 DELETE FROM t1 WHERE f_charbig = 'delete me';
13970 # check read via f_int1 success: 1
13971 # check read via f_int2 success: 1
13973 # check multiple-1 success: 1
13974 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13976 # check multiple-2 success: 1
13977 INSERT INTO t1 SELECT * FROM t0_template
13978 WHERE MOD(f_int1,3) = 0;
13980 # check multiple-3 success: 1
13981 UPDATE t1 SET f_int1 = f_int1 + @max_row
13982 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13983 AND @max_row_div2 + @max_row_div4;
13985 # check multiple-4 success: 1
13987 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13988 AND @max_row_div2 + @max_row_div4 + @max_row;
13990 # check multiple-5 success: 1
13991 SELECT COUNT(*) INTO @try_count FROM t0_template
13992 WHERE MOD(f_int1,3) = 0
13993 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13994 SELECT COUNT(*) INTO @clash_count
13995 FROM t1 INNER JOIN t0_template USING(f_int1)
13996 WHERE MOD(f_int1,3) = 0
13997 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13998 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14000 SET f_int1 = @cur_value , f_int2 = @cur_value,
14001 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14002 f_charbig = '#SINGLE#';
14004 # check single-1 success: 1
14005 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14007 SET f_int1 = @cur_value , f_int2 = @cur_value,
14008 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14009 f_charbig = '#SINGLE#';
14011 # check single-2 success: 1
14012 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14013 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14014 UPDATE t1 SET f_int1 = @cur_value2
14015 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14017 # check single-3 success: 1
14018 SET @cur_value1= -1;
14019 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14020 UPDATE t1 SET f_int1 = @cur_value1
14021 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14023 # check single-4 success: 1
14024 SELECT MAX(f_int1) INTO @cur_value FROM t1;
14025 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14027 # check single-5 success: 1
14028 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14030 # check single-6 success: 1
14031 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14033 Warning 1264 Out of range value for column 'f_int2' at row 1
14035 # check single-7 success: 1
14036 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14037 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14038 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14039 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14040 f_charbig = '#NULL#';
14042 SET f_int1 = NULL , f_int2 = -@max_row,
14043 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14044 f_charbig = '#NULL#';
14045 # check null success: 1
14047 # check null-1 success: 1
14048 UPDATE t1 SET f_int1 = -@max_row
14049 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14050 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14052 # check null-2 success: 1
14053 UPDATE t1 SET f_int1 = NULL
14054 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14055 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14057 # check null-3 success: 1
14059 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14060 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14062 # check null-4 success: 1
14064 WHERE f_int1 = 0 AND f_int2 = 0
14065 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14066 AND f_charbig = '#NULL#';
14067 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14068 SELECT f_int1, f_int1, '', '', 'was inserted'
14069 FROM t0_template source_tab
14070 WHERE MOD(f_int1,3) = 0
14071 AND f_int1 BETWEEN @max_row_div2 AND @max_row
14073 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
14074 f_int2 = 2 * @max_row + source_tab.f_int1,
14075 f_charbig = 'was updated';
14077 # check unique-1-a success: 1
14079 # check unique-1-b success: 1
14080 DELETE FROM t1 WHERE f_charbig = 'was inserted';
14081 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14082 f_int2 = CAST(f_char1 AS SIGNED INT),
14083 f_charbig = CONCAT('===',f_char1,'===')
14084 WHERE f_charbig = 'was updated';
14085 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14086 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
14087 FROM t0_template source_tab
14088 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14090 # check replace success: 1
14092 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
14094 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
14095 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
14096 UPDATE t1 SET f_int2 = f_int1,
14097 f_char1 = CAST(f_int1 AS CHAR),
14098 f_char2 = CAST(f_int1 AS CHAR),
14099 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
14100 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
14102 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14103 SELECT f_int1, f_int1, '', '', 'was inserted'
14104 FROM t0_template source_tab
14105 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14107 # check transactions-1 success: 1
14110 # check transactions-2 success: 1
14113 # check transactions-3 success: 1
14114 DELETE FROM t1 WHERE f_charbig = 'was inserted';
14118 # check transactions-4 success: 1
14119 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14120 SELECT f_int1, f_int1, '', '', 'was inserted'
14121 FROM t0_template source_tab
14122 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14124 # check transactions-5 success: 1
14127 # check transactions-6 success: 1
14128 # INFO: Storage engine used for t1 seems to be transactional.
14131 # check transactions-7 success: 1
14132 DELETE FROM t1 WHERE f_charbig = 'was inserted';
14134 SET @@session.sql_mode = 'traditional';
14135 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14136 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14137 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14138 '', '', 'was inserted' FROM t0_template
14139 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14140 ERROR 22012: Division by 0
14143 # check transactions-8 success: 1
14144 # INFO: Storage engine used for t1 seems to be able to revert
14145 # changes made by the failing statement.
14146 SET @@session.sql_mode = '';
14148 DELETE FROM t1 WHERE f_charbig = 'was inserted';
14150 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14152 # check special-1 success: 1
14153 UPDATE t1 SET f_charbig = '';
14155 # check special-2 success: 1
14156 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14157 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14158 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14159 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14160 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14161 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14162 'just inserted' FROM t0_template
14163 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14164 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14166 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14167 f_charbig = 'updated by trigger'
14168 WHERE f_int1 = new.f_int1;
14170 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14171 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14172 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14174 # check trigger-1 success: 1
14175 DROP TRIGGER trg_1;
14176 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14177 f_int2 = CAST(f_char1 AS SIGNED INT),
14178 f_charbig = 'just inserted'
14179 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14181 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14182 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14183 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14184 'just inserted' FROM t0_template
14185 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14186 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14188 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14189 f_charbig = 'updated by trigger'
14190 WHERE f_int1 = new.f_int1;
14192 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14193 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14194 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14196 # check trigger-2 success: 1
14197 DROP TRIGGER trg_1;
14198 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14199 f_int2 = CAST(f_char1 AS SIGNED INT),
14200 f_charbig = 'just inserted'
14201 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14203 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14204 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14205 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14206 'just inserted' FROM t0_template
14207 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14208 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14210 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14211 f_charbig = 'updated by trigger'
14212 WHERE f_int1 = new.f_int1;
14214 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14215 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14217 # check trigger-3 success: 1
14218 DROP TRIGGER trg_1;
14219 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14220 f_int2 = CAST(f_char1 AS SIGNED INT),
14221 f_charbig = 'just inserted'
14222 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14224 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14225 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14226 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14227 'just inserted' FROM t0_template
14228 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14229 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14231 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14232 f_charbig = 'updated by trigger'
14233 WHERE f_int1 = - old.f_int1;
14235 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14236 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14238 # check trigger-4 success: 1
14239 DROP TRIGGER trg_1;
14240 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14241 f_int2 = CAST(f_char1 AS SIGNED INT),
14242 f_charbig = 'just inserted'
14243 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14245 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14246 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14247 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14248 'just inserted' FROM t0_template
14249 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14250 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14252 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14253 f_charbig = 'updated by trigger'
14254 WHERE f_int1 = new.f_int1;
14256 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14257 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14259 # check trigger-5 success: 1
14260 DROP TRIGGER trg_1;
14261 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14262 f_int2 = CAST(f_char1 AS SIGNED INT),
14263 f_charbig = 'just inserted'
14264 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14266 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14267 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14268 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14269 'just inserted' FROM t0_template
14270 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14271 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14273 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14274 f_charbig = 'updated by trigger'
14275 WHERE f_int1 = - old.f_int1;
14277 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14278 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14280 # check trigger-6 success: 1
14281 DROP TRIGGER trg_1;
14282 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14283 f_int2 = CAST(f_char1 AS SIGNED INT),
14284 f_charbig = 'just inserted'
14285 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14287 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14288 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14289 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14290 'just inserted' FROM t0_template
14291 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14292 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14294 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14295 f_charbig = 'updated by trigger'
14296 WHERE f_int1 = - old.f_int1;
14299 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14301 # check trigger-7 success: 1
14302 DROP TRIGGER trg_1;
14303 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14304 f_int2 = CAST(f_char1 AS SIGNED INT),
14305 f_charbig = 'just inserted'
14306 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14308 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14309 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14310 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14311 'just inserted' FROM t0_template
14312 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14313 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14315 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14316 f_charbig = 'updated by trigger'
14317 WHERE f_int1 = - old.f_int1;
14320 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14322 # check trigger-8 success: 1
14323 DROP TRIGGER trg_1;
14324 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14325 f_int2 = CAST(f_char1 AS SIGNED INT),
14326 f_charbig = 'just inserted'
14327 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14329 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14331 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14332 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14334 SET new.f_int1 = old.f_int1 + @max_row,
14335 new.f_int2 = old.f_int2 - @max_row,
14336 new.f_charbig = '####updated per update trigger####';
14339 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14340 f_charbig = '####updated per update statement itself####';
14342 # check trigger-9 success: 1
14343 DROP TRIGGER trg_2;
14344 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14345 f_int2 = CAST(f_char1 AS SIGNED INT),
14346 f_charbig = CONCAT('===',f_char1,'===');
14347 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14349 SET new.f_int1 = new.f_int1 + @max_row,
14350 new.f_int2 = new.f_int2 - @max_row,
14351 new.f_charbig = '####updated per update trigger####';
14354 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14355 f_charbig = '####updated per update statement itself####';
14357 # check trigger-10 success: 1
14358 DROP TRIGGER trg_2;
14359 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14360 f_int2 = CAST(f_char1 AS SIGNED INT),
14361 f_charbig = CONCAT('===',f_char1,'===');
14362 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14364 SET new.f_int1 = @my_max1 + @counter,
14365 new.f_int2 = @my_min2 - @counter,
14366 new.f_charbig = '####updated per insert trigger####';
14367 SET @counter = @counter + 1;
14370 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14371 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14372 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14373 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14374 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14376 DROP TRIGGER trg_3;
14378 # check trigger-11 success: 1
14380 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14381 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14382 AND f_charbig = '####updated per insert trigger####';
14383 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14385 SET new.f_int1 = @my_max1 + @counter,
14386 new.f_int2 = @my_min2 - @counter,
14387 new.f_charbig = '####updated per insert trigger####';
14388 SET @counter = @counter + 1;
14391 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14392 INSERT INTO t1 (f_char1, f_char2, f_charbig)
14393 SELECT CAST(f_int1 AS CHAR),
14394 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14395 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14397 DROP TRIGGER trg_3;
14399 # check trigger-12 success: 1
14401 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14402 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14403 AND f_charbig = '####updated per insert trigger####';
14405 Table Op Msg_type Msg_text
14406 test.t1 analyze status OK
14407 CHECK TABLE t1 EXTENDED;
14408 Table Op Msg_type Msg_text
14409 test.t1 check status OK
14410 CHECKSUM TABLE t1 EXTENDED;
14412 test.t1 <some_value>
14414 Table Op Msg_type Msg_text
14415 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
14416 test.t1 optimize status OK
14417 # check layout success: 1
14418 REPAIR TABLE t1 EXTENDED;
14419 Table Op Msg_type Msg_text
14420 test.t1 repair note The storage engine for the table doesn't support repair
14421 # check layout success: 1
14424 # check TRUNCATE success: 1
14425 # check layout success: 1
14426 # End usability test (inc/partition_check.inc)
14433 f_charbig VARCHAR(1000)
14434 , UNIQUE INDEX uidx1 (f_int1,f_int2)
14436 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
14437 (PARTITION part1 VALUES LESS THAN (0)
14438 (SUBPARTITION subpart11, SUBPARTITION subpart12),
14439 PARTITION part2 VALUES LESS THAN (5)
14440 (SUBPARTITION subpart21, SUBPARTITION subpart22),
14441 PARTITION part3 VALUES LESS THAN (10)
14442 (SUBPARTITION subpart31, SUBPARTITION subpart32),
14443 PARTITION part4 VALUES LESS THAN (2147483646)
14444 (SUBPARTITION subpart41, SUBPARTITION subpart42));
14445 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14446 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14447 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14448 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
14449 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14450 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14451 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14452 # Start usability test (inc/partition_check.inc)
14454 SHOW CREATE TABLE t1;
14456 t1 CREATE TABLE `t1` (
14457 `f_int1` int(11) DEFAULT NULL,
14458 `f_int2` mediumint(9) DEFAULT NULL,
14459 `f_char1` char(20) DEFAULT NULL,
14460 `f_char2` char(20) DEFAULT NULL,
14461 `f_charbig` varchar(1000) DEFAULT NULL,
14462 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
14463 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
14464 /*!50100 PARTITION BY RANGE (f_int1)
14465 SUBPARTITION BY KEY (f_int1)
14466 (PARTITION part1 VALUES LESS THAN (0)
14467 (SUBPARTITION subpart11 ENGINE = InnoDB,
14468 SUBPARTITION subpart12 ENGINE = InnoDB),
14469 PARTITION part2 VALUES LESS THAN (5)
14470 (SUBPARTITION subpart21 ENGINE = InnoDB,
14471 SUBPARTITION subpart22 ENGINE = InnoDB),
14472 PARTITION part3 VALUES LESS THAN (10)
14473 (SUBPARTITION subpart31 ENGINE = InnoDB,
14474 SUBPARTITION subpart32 ENGINE = InnoDB),
14475 PARTITION part4 VALUES LESS THAN (2147483646)
14476 (SUBPARTITION subpart41 ENGINE = InnoDB,
14477 SUBPARTITION subpart42 ENGINE = InnoDB)) */
14479 # check prerequisites-1 success: 1
14480 # check COUNT(*) success: 1
14481 # check MIN/MAX(f_int1) success: 1
14482 # check MIN/MAX(f_int2) success: 1
14483 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14484 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14485 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14486 WHERE f_int1 IN (2,3);
14487 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
14488 # check prerequisites-3 success: 1
14489 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
14490 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14491 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14492 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14493 WHERE f_int1 IN (2,3);
14494 DELETE FROM t1 WHERE f_charbig = 'delete me';
14495 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14496 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14497 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14498 WHERE f_int1 IN (2,3);
14499 DELETE FROM t1 WHERE f_charbig = 'delete me';
14500 # check read via f_int1 success: 1
14501 # check read via f_int2 success: 1
14503 # check multiple-1 success: 1
14504 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14506 # check multiple-2 success: 1
14507 INSERT INTO t1 SELECT * FROM t0_template
14508 WHERE MOD(f_int1,3) = 0;
14510 # check multiple-3 success: 1
14511 UPDATE t1 SET f_int1 = f_int1 + @max_row
14512 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14513 AND @max_row_div2 + @max_row_div4;
14515 # check multiple-4 success: 1
14517 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14518 AND @max_row_div2 + @max_row_div4 + @max_row;
14520 # check multiple-5 success: 1
14521 SELECT COUNT(*) INTO @try_count FROM t0_template
14522 WHERE MOD(f_int1,3) = 0
14523 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14524 SELECT COUNT(*) INTO @clash_count
14525 FROM t1 INNER JOIN t0_template USING(f_int1)
14526 WHERE MOD(f_int1,3) = 0
14527 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14528 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14530 SET f_int1 = @cur_value , f_int2 = @cur_value,
14531 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14532 f_charbig = '#SINGLE#';
14534 # check single-1 success: 1
14535 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14537 SET f_int1 = @cur_value , f_int2 = @cur_value,
14538 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14539 f_charbig = '#SINGLE#';
14541 # check single-2 success: 1
14542 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14543 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14544 UPDATE t1 SET f_int1 = @cur_value2
14545 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14547 # check single-3 success: 1
14548 SET @cur_value1= -1;
14549 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14550 UPDATE t1 SET f_int1 = @cur_value1
14551 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14553 # check single-4 success: 1
14554 SELECT MAX(f_int1) INTO @cur_value FROM t1;
14555 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14557 # check single-5 success: 1
14558 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14560 # check single-6 success: 1
14561 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14562 ERROR HY000: Table has no partition for value 2147483647
14563 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14564 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14565 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14566 f_charbig = '#NULL#';
14568 SET f_int1 = NULL , f_int2 = -@max_row,
14569 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14570 f_charbig = '#NULL#';
14571 # check null success: 1
14573 # check null-1 success: 1
14574 UPDATE t1 SET f_int1 = -@max_row
14575 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14576 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14578 # check null-2 success: 1
14579 UPDATE t1 SET f_int1 = NULL
14580 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14581 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14583 # check null-3 success: 1
14585 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14586 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14588 # check null-4 success: 1
14590 WHERE f_int1 = 0 AND f_int2 = 0
14591 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14592 AND f_charbig = '#NULL#';
14593 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14594 SELECT f_int1, f_int1, '', '', 'was inserted'
14595 FROM t0_template source_tab
14596 WHERE MOD(f_int1,3) = 0
14597 AND f_int1 BETWEEN @max_row_div2 AND @max_row
14599 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
14600 f_int2 = 2 * @max_row + source_tab.f_int1,
14601 f_charbig = 'was updated';
14603 # check unique-1-a success: 1
14605 # check unique-1-b success: 1
14606 DELETE FROM t1 WHERE f_charbig = 'was inserted';
14607 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14608 f_int2 = CAST(f_char1 AS SIGNED INT),
14609 f_charbig = CONCAT('===',f_char1,'===')
14610 WHERE f_charbig = 'was updated';
14611 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14612 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
14613 FROM t0_template source_tab
14614 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14616 # check replace success: 1
14618 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
14620 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
14621 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
14622 UPDATE t1 SET f_int2 = f_int1,
14623 f_char1 = CAST(f_int1 AS CHAR),
14624 f_char2 = CAST(f_int1 AS CHAR),
14625 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
14626 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
14628 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14629 SELECT f_int1, f_int1, '', '', 'was inserted'
14630 FROM t0_template source_tab
14631 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14633 # check transactions-1 success: 1
14636 # check transactions-2 success: 1
14639 # check transactions-3 success: 1
14640 DELETE FROM t1 WHERE f_charbig = 'was inserted';
14644 # check transactions-4 success: 1
14645 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14646 SELECT f_int1, f_int1, '', '', 'was inserted'
14647 FROM t0_template source_tab
14648 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14650 # check transactions-5 success: 1
14653 # check transactions-6 success: 1
14654 # INFO: Storage engine used for t1 seems to be transactional.
14657 # check transactions-7 success: 1
14658 DELETE FROM t1 WHERE f_charbig = 'was inserted';
14660 SET @@session.sql_mode = 'traditional';
14661 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14662 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14663 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14664 '', '', 'was inserted' FROM t0_template
14665 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14666 ERROR 22012: Division by 0
14669 # check transactions-8 success: 1
14670 # INFO: Storage engine used for t1 seems to be able to revert
14671 # changes made by the failing statement.
14672 SET @@session.sql_mode = '';
14674 DELETE FROM t1 WHERE f_charbig = 'was inserted';
14676 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14678 # check special-1 success: 1
14679 UPDATE t1 SET f_charbig = '';
14681 # check special-2 success: 1
14682 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14683 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14684 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14685 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14686 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14687 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14688 'just inserted' FROM t0_template
14689 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14690 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14692 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14693 f_charbig = 'updated by trigger'
14694 WHERE f_int1 = new.f_int1;
14696 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14697 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14698 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14700 # check trigger-1 success: 1
14701 DROP TRIGGER trg_1;
14702 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14703 f_int2 = CAST(f_char1 AS SIGNED INT),
14704 f_charbig = 'just inserted'
14705 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14707 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14708 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14709 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14710 'just inserted' FROM t0_template
14711 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14712 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14714 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14715 f_charbig = 'updated by trigger'
14716 WHERE f_int1 = new.f_int1;
14718 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14719 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14720 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14722 # check trigger-2 success: 1
14723 DROP TRIGGER trg_1;
14724 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14725 f_int2 = CAST(f_char1 AS SIGNED INT),
14726 f_charbig = 'just inserted'
14727 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14729 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14730 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14731 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14732 'just inserted' FROM t0_template
14733 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14734 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14736 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14737 f_charbig = 'updated by trigger'
14738 WHERE f_int1 = new.f_int1;
14740 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14741 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14743 # check trigger-3 success: 1
14744 DROP TRIGGER trg_1;
14745 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14746 f_int2 = CAST(f_char1 AS SIGNED INT),
14747 f_charbig = 'just inserted'
14748 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14750 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14751 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14752 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14753 'just inserted' FROM t0_template
14754 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14755 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14757 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14758 f_charbig = 'updated by trigger'
14759 WHERE f_int1 = - old.f_int1;
14761 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14762 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14764 # check trigger-4 success: 1
14765 DROP TRIGGER trg_1;
14766 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14767 f_int2 = CAST(f_char1 AS SIGNED INT),
14768 f_charbig = 'just inserted'
14769 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14771 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14772 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14773 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14774 'just inserted' FROM t0_template
14775 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14776 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14778 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14779 f_charbig = 'updated by trigger'
14780 WHERE f_int1 = new.f_int1;
14782 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14783 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14785 # check trigger-5 success: 1
14786 DROP TRIGGER trg_1;
14787 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14788 f_int2 = CAST(f_char1 AS SIGNED INT),
14789 f_charbig = 'just inserted'
14790 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14792 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14793 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14794 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14795 'just inserted' FROM t0_template
14796 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14797 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14799 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14800 f_charbig = 'updated by trigger'
14801 WHERE f_int1 = - old.f_int1;
14803 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14804 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14806 # check trigger-6 success: 1
14807 DROP TRIGGER trg_1;
14808 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14809 f_int2 = CAST(f_char1 AS SIGNED INT),
14810 f_charbig = 'just inserted'
14811 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14813 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14814 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14815 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14816 'just inserted' FROM t0_template
14817 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14818 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14820 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14821 f_charbig = 'updated by trigger'
14822 WHERE f_int1 = - old.f_int1;
14825 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14827 # check trigger-7 success: 1
14828 DROP TRIGGER trg_1;
14829 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14830 f_int2 = CAST(f_char1 AS SIGNED INT),
14831 f_charbig = 'just inserted'
14832 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14834 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14835 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14836 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14837 'just inserted' FROM t0_template
14838 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14839 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14841 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14842 f_charbig = 'updated by trigger'
14843 WHERE f_int1 = - old.f_int1;
14846 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14848 # check trigger-8 success: 1
14849 DROP TRIGGER trg_1;
14850 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14851 f_int2 = CAST(f_char1 AS SIGNED INT),
14852 f_charbig = 'just inserted'
14853 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14855 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14857 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14858 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14860 SET new.f_int1 = old.f_int1 + @max_row,
14861 new.f_int2 = old.f_int2 - @max_row,
14862 new.f_charbig = '####updated per update trigger####';
14865 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14866 f_charbig = '####updated per update statement itself####';
14868 # check trigger-9 success: 1
14869 DROP TRIGGER trg_2;
14870 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14871 f_int2 = CAST(f_char1 AS SIGNED INT),
14872 f_charbig = CONCAT('===',f_char1,'===');
14873 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14875 SET new.f_int1 = new.f_int1 + @max_row,
14876 new.f_int2 = new.f_int2 - @max_row,
14877 new.f_charbig = '####updated per update trigger####';
14880 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14881 f_charbig = '####updated per update statement itself####';
14883 # check trigger-10 success: 1
14884 DROP TRIGGER trg_2;
14885 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14886 f_int2 = CAST(f_char1 AS SIGNED INT),
14887 f_charbig = CONCAT('===',f_char1,'===');
14888 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14890 SET new.f_int1 = @my_max1 + @counter,
14891 new.f_int2 = @my_min2 - @counter,
14892 new.f_charbig = '####updated per insert trigger####';
14893 SET @counter = @counter + 1;
14896 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14897 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14898 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14899 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14900 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14902 DROP TRIGGER trg_3;
14904 # check trigger-11 success: 1
14906 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14907 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14908 AND f_charbig = '####updated per insert trigger####';
14909 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14911 SET new.f_int1 = @my_max1 + @counter,
14912 new.f_int2 = @my_min2 - @counter,
14913 new.f_charbig = '####updated per insert trigger####';
14914 SET @counter = @counter + 1;
14917 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14918 INSERT INTO t1 (f_char1, f_char2, f_charbig)
14919 SELECT CAST(f_int1 AS CHAR),
14920 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14921 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14923 DROP TRIGGER trg_3;
14925 # check trigger-12 success: 1
14927 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14928 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14929 AND f_charbig = '####updated per insert trigger####';
14931 Table Op Msg_type Msg_text
14932 test.t1 analyze status OK
14933 CHECK TABLE t1 EXTENDED;
14934 Table Op Msg_type Msg_text
14935 test.t1 check status OK
14936 CHECKSUM TABLE t1 EXTENDED;
14938 test.t1 <some_value>
14940 Table Op Msg_type Msg_text
14941 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
14942 test.t1 optimize status OK
14943 # check layout success: 1
14944 REPAIR TABLE t1 EXTENDED;
14945 Table Op Msg_type Msg_text
14946 test.t1 repair note The storage engine for the table doesn't support repair
14947 # check layout success: 1
14950 # check TRUNCATE success: 1
14951 # check layout success: 1
14952 # End usability test (inc/partition_check.inc)
14959 f_charbig VARCHAR(1000)
14960 , UNIQUE INDEX uidx1 (f_int1,f_int2)
14962 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
14963 (PARTITION part1 VALUES IN (0)
14964 (SUBPARTITION sp11, SUBPARTITION sp12),
14965 PARTITION part2 VALUES IN (1)
14966 (SUBPARTITION sp21, SUBPARTITION sp22),
14967 PARTITION part3 VALUES IN (2)
14968 (SUBPARTITION sp31, SUBPARTITION sp32),
14969 PARTITION part4 VALUES IN (NULL)
14970 (SUBPARTITION sp41, SUBPARTITION sp42));
14971 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14972 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14973 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14974 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
14975 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14976 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14977 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14978 # Start usability test (inc/partition_check.inc)
14980 SHOW CREATE TABLE t1;
14982 t1 CREATE TABLE `t1` (
14983 `f_int1` int(11) DEFAULT NULL,
14984 `f_int2` mediumint(9) DEFAULT NULL,
14985 `f_char1` char(20) DEFAULT NULL,
14986 `f_char2` char(20) DEFAULT NULL,
14987 `f_charbig` varchar(1000) DEFAULT NULL,
14988 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
14989 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
14990 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
14991 SUBPARTITION BY HASH (f_int1 + 1)
14992 (PARTITION part1 VALUES IN (0)
14993 (SUBPARTITION sp11 ENGINE = InnoDB,
14994 SUBPARTITION sp12 ENGINE = InnoDB),
14995 PARTITION part2 VALUES IN (1)
14996 (SUBPARTITION sp21 ENGINE = InnoDB,
14997 SUBPARTITION sp22 ENGINE = InnoDB),
14998 PARTITION part3 VALUES IN (2)
14999 (SUBPARTITION sp31 ENGINE = InnoDB,
15000 SUBPARTITION sp32 ENGINE = InnoDB),
15001 PARTITION part4 VALUES IN (NULL)
15002 (SUBPARTITION sp41 ENGINE = InnoDB,
15003 SUBPARTITION sp42 ENGINE = InnoDB)) */
15005 # check prerequisites-1 success: 1
15006 # check COUNT(*) success: 1
15007 # check MIN/MAX(f_int1) success: 1
15008 # check MIN/MAX(f_int2) success: 1
15009 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15010 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15011 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15012 WHERE f_int1 IN (2,3);
15013 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
15014 # check prerequisites-3 success: 1
15015 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
15016 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15017 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15018 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15019 WHERE f_int1 IN (2,3);
15020 DELETE FROM t1 WHERE f_charbig = 'delete me';
15021 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15022 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15023 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15024 WHERE f_int1 IN (2,3);
15025 DELETE FROM t1 WHERE f_charbig = 'delete me';
15026 # check read via f_int1 success: 1
15027 # check read via f_int2 success: 1
15029 # check multiple-1 success: 1
15030 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15032 # check multiple-2 success: 1
15033 INSERT INTO t1 SELECT * FROM t0_template
15034 WHERE MOD(f_int1,3) = 0;
15036 # check multiple-3 success: 1
15037 UPDATE t1 SET f_int1 = f_int1 + @max_row
15038 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15039 AND @max_row_div2 + @max_row_div4;
15041 # check multiple-4 success: 1
15043 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15044 AND @max_row_div2 + @max_row_div4 + @max_row;
15046 # check multiple-5 success: 1
15047 SELECT COUNT(*) INTO @try_count FROM t0_template
15048 WHERE MOD(f_int1,3) = 0
15049 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15050 SELECT COUNT(*) INTO @clash_count
15051 FROM t1 INNER JOIN t0_template USING(f_int1)
15052 WHERE MOD(f_int1,3) = 0
15053 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15054 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15056 SET f_int1 = @cur_value , f_int2 = @cur_value,
15057 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15058 f_charbig = '#SINGLE#';
15060 # check single-1 success: 1
15061 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15063 SET f_int1 = @cur_value , f_int2 = @cur_value,
15064 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15065 f_charbig = '#SINGLE#';
15067 # check single-2 success: 1
15068 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15069 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15070 UPDATE t1 SET f_int1 = @cur_value2
15071 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15073 # check single-3 success: 1
15074 SET @cur_value1= -1;
15075 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15076 UPDATE t1 SET f_int1 = @cur_value1
15077 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15079 # check single-4 success: 1
15080 SELECT MAX(f_int1) INTO @cur_value FROM t1;
15081 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15083 # check single-5 success: 1
15084 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15086 # check single-6 success: 1
15087 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15089 Warning 1264 Out of range value for column 'f_int2' at row 1
15091 # check single-7 success: 1
15092 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15093 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15094 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15095 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15096 f_charbig = '#NULL#';
15098 SET f_int1 = NULL , f_int2 = -@max_row,
15099 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15100 f_charbig = '#NULL#';
15101 # check null success: 1
15103 # check null-1 success: 1
15104 UPDATE t1 SET f_int1 = -@max_row
15105 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15106 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15108 # check null-2 success: 1
15109 UPDATE t1 SET f_int1 = NULL
15110 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15111 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15113 # check null-3 success: 1
15115 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15116 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15118 # check null-4 success: 1
15120 WHERE f_int1 = 0 AND f_int2 = 0
15121 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15122 AND f_charbig = '#NULL#';
15123 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15124 SELECT f_int1, f_int1, '', '', 'was inserted'
15125 FROM t0_template source_tab
15126 WHERE MOD(f_int1,3) = 0
15127 AND f_int1 BETWEEN @max_row_div2 AND @max_row
15129 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
15130 f_int2 = 2 * @max_row + source_tab.f_int1,
15131 f_charbig = 'was updated';
15133 # check unique-1-a success: 1
15135 # check unique-1-b success: 1
15136 DELETE FROM t1 WHERE f_charbig = 'was inserted';
15137 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15138 f_int2 = CAST(f_char1 AS SIGNED INT),
15139 f_charbig = CONCAT('===',f_char1,'===')
15140 WHERE f_charbig = 'was updated';
15141 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15142 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
15143 FROM t0_template source_tab
15144 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15146 # check replace success: 1
15148 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
15150 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
15151 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
15152 UPDATE t1 SET f_int2 = f_int1,
15153 f_char1 = CAST(f_int1 AS CHAR),
15154 f_char2 = CAST(f_int1 AS CHAR),
15155 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
15156 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
15158 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15159 SELECT f_int1, f_int1, '', '', 'was inserted'
15160 FROM t0_template source_tab
15161 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15163 # check transactions-1 success: 1
15166 # check transactions-2 success: 1
15169 # check transactions-3 success: 1
15170 DELETE FROM t1 WHERE f_charbig = 'was inserted';
15174 # check transactions-4 success: 1
15175 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15176 SELECT f_int1, f_int1, '', '', 'was inserted'
15177 FROM t0_template source_tab
15178 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15180 # check transactions-5 success: 1
15183 # check transactions-6 success: 1
15184 # INFO: Storage engine used for t1 seems to be transactional.
15187 # check transactions-7 success: 1
15188 DELETE FROM t1 WHERE f_charbig = 'was inserted';
15190 SET @@session.sql_mode = 'traditional';
15191 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15192 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15193 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15194 '', '', 'was inserted' FROM t0_template
15195 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15196 ERROR 22012: Division by 0
15199 # check transactions-8 success: 1
15200 # INFO: Storage engine used for t1 seems to be able to revert
15201 # changes made by the failing statement.
15202 SET @@session.sql_mode = '';
15204 DELETE FROM t1 WHERE f_charbig = 'was inserted';
15206 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15208 # check special-1 success: 1
15209 UPDATE t1 SET f_charbig = '';
15211 # check special-2 success: 1
15212 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15213 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15214 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15215 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15216 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15217 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15218 'just inserted' FROM t0_template
15219 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15220 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15222 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15223 f_charbig = 'updated by trigger'
15224 WHERE f_int1 = new.f_int1;
15226 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15227 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15228 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15230 # check trigger-1 success: 1
15231 DROP TRIGGER trg_1;
15232 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15233 f_int2 = CAST(f_char1 AS SIGNED INT),
15234 f_charbig = 'just inserted'
15235 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15237 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15238 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15239 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15240 'just inserted' FROM t0_template
15241 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15242 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15244 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15245 f_charbig = 'updated by trigger'
15246 WHERE f_int1 = new.f_int1;
15248 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15249 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15250 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15252 # check trigger-2 success: 1
15253 DROP TRIGGER trg_1;
15254 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15255 f_int2 = CAST(f_char1 AS SIGNED INT),
15256 f_charbig = 'just inserted'
15257 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15259 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15260 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15261 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15262 'just inserted' FROM t0_template
15263 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15264 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15266 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15267 f_charbig = 'updated by trigger'
15268 WHERE f_int1 = new.f_int1;
15270 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15271 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15273 # check trigger-3 success: 1
15274 DROP TRIGGER trg_1;
15275 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15276 f_int2 = CAST(f_char1 AS SIGNED INT),
15277 f_charbig = 'just inserted'
15278 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15280 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15281 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15282 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15283 'just inserted' FROM t0_template
15284 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15285 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15287 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15288 f_charbig = 'updated by trigger'
15289 WHERE f_int1 = - old.f_int1;
15291 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15292 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15294 # check trigger-4 success: 1
15295 DROP TRIGGER trg_1;
15296 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15297 f_int2 = CAST(f_char1 AS SIGNED INT),
15298 f_charbig = 'just inserted'
15299 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15301 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15302 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15303 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15304 'just inserted' FROM t0_template
15305 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15306 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15308 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15309 f_charbig = 'updated by trigger'
15310 WHERE f_int1 = new.f_int1;
15312 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15313 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15315 # check trigger-5 success: 1
15316 DROP TRIGGER trg_1;
15317 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15318 f_int2 = CAST(f_char1 AS SIGNED INT),
15319 f_charbig = 'just inserted'
15320 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15322 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15323 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15324 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15325 'just inserted' FROM t0_template
15326 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15327 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15329 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15330 f_charbig = 'updated by trigger'
15331 WHERE f_int1 = - old.f_int1;
15333 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15334 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15336 # check trigger-6 success: 1
15337 DROP TRIGGER trg_1;
15338 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15339 f_int2 = CAST(f_char1 AS SIGNED INT),
15340 f_charbig = 'just inserted'
15341 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15343 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15344 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15345 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15346 'just inserted' FROM t0_template
15347 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15348 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15350 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15351 f_charbig = 'updated by trigger'
15352 WHERE f_int1 = - old.f_int1;
15355 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15357 # check trigger-7 success: 1
15358 DROP TRIGGER trg_1;
15359 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15360 f_int2 = CAST(f_char1 AS SIGNED INT),
15361 f_charbig = 'just inserted'
15362 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15364 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15365 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15366 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15367 'just inserted' FROM t0_template
15368 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15369 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15371 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15372 f_charbig = 'updated by trigger'
15373 WHERE f_int1 = - old.f_int1;
15376 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15378 # check trigger-8 success: 1
15379 DROP TRIGGER trg_1;
15380 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15381 f_int2 = CAST(f_char1 AS SIGNED INT),
15382 f_charbig = 'just inserted'
15383 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15385 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15387 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15388 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15390 SET new.f_int1 = old.f_int1 + @max_row,
15391 new.f_int2 = old.f_int2 - @max_row,
15392 new.f_charbig = '####updated per update trigger####';
15395 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15396 f_charbig = '####updated per update statement itself####';
15398 # check trigger-9 success: 1
15399 DROP TRIGGER trg_2;
15400 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15401 f_int2 = CAST(f_char1 AS SIGNED INT),
15402 f_charbig = CONCAT('===',f_char1,'===');
15403 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15405 SET new.f_int1 = new.f_int1 + @max_row,
15406 new.f_int2 = new.f_int2 - @max_row,
15407 new.f_charbig = '####updated per update trigger####';
15410 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15411 f_charbig = '####updated per update statement itself####';
15413 # check trigger-10 success: 1
15414 DROP TRIGGER trg_2;
15415 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15416 f_int2 = CAST(f_char1 AS SIGNED INT),
15417 f_charbig = CONCAT('===',f_char1,'===');
15418 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15420 SET new.f_int1 = @my_max1 + @counter,
15421 new.f_int2 = @my_min2 - @counter,
15422 new.f_charbig = '####updated per insert trigger####';
15423 SET @counter = @counter + 1;
15426 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15427 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15428 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15429 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15430 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15432 DROP TRIGGER trg_3;
15434 # check trigger-11 success: 1
15436 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15437 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15438 AND f_charbig = '####updated per insert trigger####';
15439 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15441 SET new.f_int1 = @my_max1 + @counter,
15442 new.f_int2 = @my_min2 - @counter,
15443 new.f_charbig = '####updated per insert trigger####';
15444 SET @counter = @counter + 1;
15447 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15448 INSERT INTO t1 (f_char1, f_char2, f_charbig)
15449 SELECT CAST(f_int1 AS CHAR),
15450 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15451 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15453 DROP TRIGGER trg_3;
15455 # check trigger-12 success: 1
15457 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15458 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15459 AND f_charbig = '####updated per insert trigger####';
15461 Table Op Msg_type Msg_text
15462 test.t1 analyze status OK
15463 CHECK TABLE t1 EXTENDED;
15464 Table Op Msg_type Msg_text
15465 test.t1 check status OK
15466 CHECKSUM TABLE t1 EXTENDED;
15468 test.t1 <some_value>
15470 Table Op Msg_type Msg_text
15471 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
15472 test.t1 optimize status OK
15473 # check layout success: 1
15474 REPAIR TABLE t1 EXTENDED;
15475 Table Op Msg_type Msg_text
15476 test.t1 repair note The storage engine for the table doesn't support repair
15477 # check layout success: 1
15480 # check TRUNCATE success: 1
15481 # check layout success: 1
15482 # End usability test (inc/partition_check.inc)
15489 f_charbig VARCHAR(1000)
15490 , UNIQUE INDEX uidx1 (f_int1,f_int2)
15492 PARTITION BY LIST(ABS(MOD(f_int1,2)))
15493 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
15494 (PARTITION part1 VALUES IN (0),
15495 PARTITION part2 VALUES IN (1),
15496 PARTITION part3 VALUES IN (NULL));
15497 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15498 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15499 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15500 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
15501 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15502 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15503 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15504 # Start usability test (inc/partition_check.inc)
15506 SHOW CREATE TABLE t1;
15508 t1 CREATE TABLE `t1` (
15509 `f_int1` int(11) DEFAULT NULL,
15510 `f_int2` mediumint(9) DEFAULT NULL,
15511 `f_char1` char(20) DEFAULT NULL,
15512 `f_char2` char(20) DEFAULT NULL,
15513 `f_charbig` varchar(1000) DEFAULT NULL,
15514 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
15515 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
15516 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
15517 SUBPARTITION BY KEY (f_int1)
15519 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
15520 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
15521 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
15523 # check prerequisites-1 success: 1
15524 # check COUNT(*) success: 1
15525 # check MIN/MAX(f_int1) success: 1
15526 # check MIN/MAX(f_int2) success: 1
15527 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15528 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15529 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15530 WHERE f_int1 IN (2,3);
15531 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
15532 # check prerequisites-3 success: 1
15533 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
15534 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15535 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15536 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15537 WHERE f_int1 IN (2,3);
15538 DELETE FROM t1 WHERE f_charbig = 'delete me';
15539 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15540 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15541 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15542 WHERE f_int1 IN (2,3);
15543 DELETE FROM t1 WHERE f_charbig = 'delete me';
15544 # check read via f_int1 success: 1
15545 # check read via f_int2 success: 1
15547 # check multiple-1 success: 1
15548 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15550 # check multiple-2 success: 1
15551 INSERT INTO t1 SELECT * FROM t0_template
15552 WHERE MOD(f_int1,3) = 0;
15554 # check multiple-3 success: 1
15555 UPDATE t1 SET f_int1 = f_int1 + @max_row
15556 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15557 AND @max_row_div2 + @max_row_div4;
15559 # check multiple-4 success: 1
15561 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15562 AND @max_row_div2 + @max_row_div4 + @max_row;
15564 # check multiple-5 success: 1
15565 SELECT COUNT(*) INTO @try_count FROM t0_template
15566 WHERE MOD(f_int1,3) = 0
15567 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15568 SELECT COUNT(*) INTO @clash_count
15569 FROM t1 INNER JOIN t0_template USING(f_int1)
15570 WHERE MOD(f_int1,3) = 0
15571 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15572 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15574 SET f_int1 = @cur_value , f_int2 = @cur_value,
15575 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15576 f_charbig = '#SINGLE#';
15578 # check single-1 success: 1
15579 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15581 SET f_int1 = @cur_value , f_int2 = @cur_value,
15582 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15583 f_charbig = '#SINGLE#';
15585 # check single-2 success: 1
15586 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15587 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15588 UPDATE t1 SET f_int1 = @cur_value2
15589 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15591 # check single-3 success: 1
15592 SET @cur_value1= -1;
15593 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15594 UPDATE t1 SET f_int1 = @cur_value1
15595 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15597 # check single-4 success: 1
15598 SELECT MAX(f_int1) INTO @cur_value FROM t1;
15599 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15601 # check single-5 success: 1
15602 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15604 # check single-6 success: 1
15605 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15607 Warning 1264 Out of range value for column 'f_int2' at row 1
15609 # check single-7 success: 1
15610 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15611 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15612 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15613 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15614 f_charbig = '#NULL#';
15616 SET f_int1 = NULL , f_int2 = -@max_row,
15617 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15618 f_charbig = '#NULL#';
15619 # check null success: 1
15621 # check null-1 success: 1
15622 UPDATE t1 SET f_int1 = -@max_row
15623 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15624 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15626 # check null-2 success: 1
15627 UPDATE t1 SET f_int1 = NULL
15628 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15629 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15631 # check null-3 success: 1
15633 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15634 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15636 # check null-4 success: 1
15638 WHERE f_int1 = 0 AND f_int2 = 0
15639 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15640 AND f_charbig = '#NULL#';
15641 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15642 SELECT f_int1, f_int1, '', '', 'was inserted'
15643 FROM t0_template source_tab
15644 WHERE MOD(f_int1,3) = 0
15645 AND f_int1 BETWEEN @max_row_div2 AND @max_row
15647 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
15648 f_int2 = 2 * @max_row + source_tab.f_int1,
15649 f_charbig = 'was updated';
15651 # check unique-1-a success: 1
15653 # check unique-1-b success: 1
15654 DELETE FROM t1 WHERE f_charbig = 'was inserted';
15655 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15656 f_int2 = CAST(f_char1 AS SIGNED INT),
15657 f_charbig = CONCAT('===',f_char1,'===')
15658 WHERE f_charbig = 'was updated';
15659 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15660 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
15661 FROM t0_template source_tab
15662 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15664 # check replace success: 1
15666 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
15668 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
15669 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
15670 UPDATE t1 SET f_int2 = f_int1,
15671 f_char1 = CAST(f_int1 AS CHAR),
15672 f_char2 = CAST(f_int1 AS CHAR),
15673 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
15674 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
15676 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15677 SELECT f_int1, f_int1, '', '', 'was inserted'
15678 FROM t0_template source_tab
15679 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15681 # check transactions-1 success: 1
15684 # check transactions-2 success: 1
15687 # check transactions-3 success: 1
15688 DELETE FROM t1 WHERE f_charbig = 'was inserted';
15692 # check transactions-4 success: 1
15693 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15694 SELECT f_int1, f_int1, '', '', 'was inserted'
15695 FROM t0_template source_tab
15696 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15698 # check transactions-5 success: 1
15701 # check transactions-6 success: 1
15702 # INFO: Storage engine used for t1 seems to be transactional.
15705 # check transactions-7 success: 1
15706 DELETE FROM t1 WHERE f_charbig = 'was inserted';
15708 SET @@session.sql_mode = 'traditional';
15709 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15710 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15711 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15712 '', '', 'was inserted' FROM t0_template
15713 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15714 ERROR 22012: Division by 0
15717 # check transactions-8 success: 1
15718 # INFO: Storage engine used for t1 seems to be able to revert
15719 # changes made by the failing statement.
15720 SET @@session.sql_mode = '';
15722 DELETE FROM t1 WHERE f_charbig = 'was inserted';
15724 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15726 # check special-1 success: 1
15727 UPDATE t1 SET f_charbig = '';
15729 # check special-2 success: 1
15730 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15731 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15732 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15733 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15734 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15735 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15736 'just inserted' FROM t0_template
15737 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15738 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15740 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15741 f_charbig = 'updated by trigger'
15742 WHERE f_int1 = new.f_int1;
15744 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15745 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15746 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15748 # check trigger-1 success: 1
15749 DROP TRIGGER trg_1;
15750 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15751 f_int2 = CAST(f_char1 AS SIGNED INT),
15752 f_charbig = 'just inserted'
15753 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15755 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15756 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15757 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15758 'just inserted' FROM t0_template
15759 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15760 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15762 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15763 f_charbig = 'updated by trigger'
15764 WHERE f_int1 = new.f_int1;
15766 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15767 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15768 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15770 # check trigger-2 success: 1
15771 DROP TRIGGER trg_1;
15772 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15773 f_int2 = CAST(f_char1 AS SIGNED INT),
15774 f_charbig = 'just inserted'
15775 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15777 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15778 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15779 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15780 'just inserted' FROM t0_template
15781 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15782 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15784 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15785 f_charbig = 'updated by trigger'
15786 WHERE f_int1 = new.f_int1;
15788 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15789 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15791 # check trigger-3 success: 1
15792 DROP TRIGGER trg_1;
15793 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15794 f_int2 = CAST(f_char1 AS SIGNED INT),
15795 f_charbig = 'just inserted'
15796 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15798 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15799 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15800 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15801 'just inserted' FROM t0_template
15802 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15803 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15805 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15806 f_charbig = 'updated by trigger'
15807 WHERE f_int1 = - old.f_int1;
15809 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15810 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15812 # check trigger-4 success: 1
15813 DROP TRIGGER trg_1;
15814 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15815 f_int2 = CAST(f_char1 AS SIGNED INT),
15816 f_charbig = 'just inserted'
15817 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15819 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15820 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15821 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15822 'just inserted' FROM t0_template
15823 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15824 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15826 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15827 f_charbig = 'updated by trigger'
15828 WHERE f_int1 = new.f_int1;
15830 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15831 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15833 # check trigger-5 success: 1
15834 DROP TRIGGER trg_1;
15835 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15836 f_int2 = CAST(f_char1 AS SIGNED INT),
15837 f_charbig = 'just inserted'
15838 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15840 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15841 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15842 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15843 'just inserted' FROM t0_template
15844 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15845 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15847 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15848 f_charbig = 'updated by trigger'
15849 WHERE f_int1 = - old.f_int1;
15851 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15852 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15854 # check trigger-6 success: 1
15855 DROP TRIGGER trg_1;
15856 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15857 f_int2 = CAST(f_char1 AS SIGNED INT),
15858 f_charbig = 'just inserted'
15859 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15861 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15862 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15863 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15864 'just inserted' FROM t0_template
15865 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15866 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15868 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15869 f_charbig = 'updated by trigger'
15870 WHERE f_int1 = - old.f_int1;
15873 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15875 # check trigger-7 success: 1
15876 DROP TRIGGER trg_1;
15877 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15878 f_int2 = CAST(f_char1 AS SIGNED INT),
15879 f_charbig = 'just inserted'
15880 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15882 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15883 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15884 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15885 'just inserted' FROM t0_template
15886 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15887 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15889 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15890 f_charbig = 'updated by trigger'
15891 WHERE f_int1 = - old.f_int1;
15894 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15896 # check trigger-8 success: 1
15897 DROP TRIGGER trg_1;
15898 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15899 f_int2 = CAST(f_char1 AS SIGNED INT),
15900 f_charbig = 'just inserted'
15901 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15903 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15905 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15906 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15908 SET new.f_int1 = old.f_int1 + @max_row,
15909 new.f_int2 = old.f_int2 - @max_row,
15910 new.f_charbig = '####updated per update trigger####';
15913 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15914 f_charbig = '####updated per update statement itself####';
15916 # check trigger-9 success: 1
15917 DROP TRIGGER trg_2;
15918 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15919 f_int2 = CAST(f_char1 AS SIGNED INT),
15920 f_charbig = CONCAT('===',f_char1,'===');
15921 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15923 SET new.f_int1 = new.f_int1 + @max_row,
15924 new.f_int2 = new.f_int2 - @max_row,
15925 new.f_charbig = '####updated per update trigger####';
15928 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15929 f_charbig = '####updated per update statement itself####';
15931 # check trigger-10 success: 1
15932 DROP TRIGGER trg_2;
15933 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15934 f_int2 = CAST(f_char1 AS SIGNED INT),
15935 f_charbig = CONCAT('===',f_char1,'===');
15936 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15938 SET new.f_int1 = @my_max1 + @counter,
15939 new.f_int2 = @my_min2 - @counter,
15940 new.f_charbig = '####updated per insert trigger####';
15941 SET @counter = @counter + 1;
15944 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15945 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15946 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15947 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15948 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15950 DROP TRIGGER trg_3;
15952 # check trigger-11 success: 1
15954 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15955 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15956 AND f_charbig = '####updated per insert trigger####';
15957 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15959 SET new.f_int1 = @my_max1 + @counter,
15960 new.f_int2 = @my_min2 - @counter,
15961 new.f_charbig = '####updated per insert trigger####';
15962 SET @counter = @counter + 1;
15965 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15966 INSERT INTO t1 (f_char1, f_char2, f_charbig)
15967 SELECT CAST(f_int1 AS CHAR),
15968 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15969 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15971 DROP TRIGGER trg_3;
15973 # check trigger-12 success: 1
15975 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15976 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15977 AND f_charbig = '####updated per insert trigger####';
15979 Table Op Msg_type Msg_text
15980 test.t1 analyze status OK
15981 CHECK TABLE t1 EXTENDED;
15982 Table Op Msg_type Msg_text
15983 test.t1 check status OK
15984 CHECKSUM TABLE t1 EXTENDED;
15986 test.t1 <some_value>
15988 Table Op Msg_type Msg_text
15989 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
15990 test.t1 optimize status OK
15991 # check layout success: 1
15992 REPAIR TABLE t1 EXTENDED;
15993 Table Op Msg_type Msg_text
15994 test.t1 repair note The storage engine for the table doesn't support repair
15995 # check layout success: 1
15998 # check TRUNCATE success: 1
15999 # check layout success: 1
16000 # End usability test (inc/partition_check.inc)
16002 DROP TABLE IF EXISTS t1;
16008 f_charbig VARCHAR(1000)
16009 , UNIQUE INDEX uidx1 (f_int2,f_int1)
16011 PARTITION BY HASH(f_int1) PARTITIONS 2;
16012 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16013 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16014 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16015 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
16016 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16017 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16018 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16019 # Start usability test (inc/partition_check.inc)
16021 SHOW CREATE TABLE t1;
16023 t1 CREATE TABLE `t1` (
16024 `f_int1` int(11) DEFAULT NULL,
16025 `f_int2` mediumint(9) DEFAULT NULL,
16026 `f_char1` char(20) DEFAULT NULL,
16027 `f_char2` char(20) DEFAULT NULL,
16028 `f_charbig` varchar(1000) DEFAULT NULL,
16029 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
16030 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
16031 /*!50100 PARTITION BY HASH (f_int1)
16034 # check prerequisites-1 success: 1
16035 # check COUNT(*) success: 1
16036 # check MIN/MAX(f_int1) success: 1
16037 # check MIN/MAX(f_int2) success: 1
16038 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16039 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16040 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16041 WHERE f_int1 IN (2,3);
16042 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
16043 # check prerequisites-3 success: 1
16044 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
16045 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16046 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16047 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16048 WHERE f_int1 IN (2,3);
16049 DELETE FROM t1 WHERE f_charbig = 'delete me';
16050 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16051 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16052 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16053 WHERE f_int1 IN (2,3);
16054 DELETE FROM t1 WHERE f_charbig = 'delete me';
16055 # check read via f_int1 success: 1
16056 # check read via f_int2 success: 1
16058 # check multiple-1 success: 1
16059 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16061 # check multiple-2 success: 1
16062 INSERT INTO t1 SELECT * FROM t0_template
16063 WHERE MOD(f_int1,3) = 0;
16065 # check multiple-3 success: 1
16066 UPDATE t1 SET f_int1 = f_int1 + @max_row
16067 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16068 AND @max_row_div2 + @max_row_div4;
16070 # check multiple-4 success: 1
16072 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16073 AND @max_row_div2 + @max_row_div4 + @max_row;
16075 # check multiple-5 success: 1
16076 SELECT COUNT(*) INTO @try_count FROM t0_template
16077 WHERE MOD(f_int1,3) = 0
16078 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16079 SELECT COUNT(*) INTO @clash_count
16080 FROM t1 INNER JOIN t0_template USING(f_int1)
16081 WHERE MOD(f_int1,3) = 0
16082 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16083 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16085 SET f_int1 = @cur_value , f_int2 = @cur_value,
16086 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16087 f_charbig = '#SINGLE#';
16089 # check single-1 success: 1
16090 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16092 SET f_int1 = @cur_value , f_int2 = @cur_value,
16093 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16094 f_charbig = '#SINGLE#';
16096 # check single-2 success: 1
16097 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16098 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16099 UPDATE t1 SET f_int1 = @cur_value2
16100 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16102 # check single-3 success: 1
16103 SET @cur_value1= -1;
16104 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16105 UPDATE t1 SET f_int1 = @cur_value1
16106 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16108 # check single-4 success: 1
16109 SELECT MAX(f_int1) INTO @cur_value FROM t1;
16110 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16112 # check single-5 success: 1
16113 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16115 # check single-6 success: 1
16116 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16118 Warning 1264 Out of range value for column 'f_int2' at row 1
16120 # check single-7 success: 1
16121 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16122 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16123 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16124 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16125 f_charbig = '#NULL#';
16127 SET f_int1 = NULL , f_int2 = -@max_row,
16128 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16129 f_charbig = '#NULL#';
16130 # check null success: 1
16132 # check null-1 success: 1
16133 UPDATE t1 SET f_int1 = -@max_row
16134 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16135 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16137 # check null-2 success: 1
16138 UPDATE t1 SET f_int1 = NULL
16139 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16140 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16142 # check null-3 success: 1
16144 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16145 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16147 # check null-4 success: 1
16149 WHERE f_int1 = 0 AND f_int2 = 0
16150 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16151 AND f_charbig = '#NULL#';
16152 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16153 SELECT f_int1, f_int1, '', '', 'was inserted'
16154 FROM t0_template source_tab
16155 WHERE MOD(f_int1,3) = 0
16156 AND f_int1 BETWEEN @max_row_div2 AND @max_row
16158 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
16159 f_int2 = 2 * @max_row + source_tab.f_int1,
16160 f_charbig = 'was updated';
16162 # check unique-1-a success: 1
16164 # check unique-1-b success: 1
16165 DELETE FROM t1 WHERE f_charbig = 'was inserted';
16166 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16167 f_int2 = CAST(f_char1 AS SIGNED INT),
16168 f_charbig = CONCAT('===',f_char1,'===')
16169 WHERE f_charbig = 'was updated';
16170 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16171 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
16172 FROM t0_template source_tab
16173 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16175 # check replace success: 1
16177 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
16179 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
16180 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
16181 UPDATE t1 SET f_int2 = f_int1,
16182 f_char1 = CAST(f_int1 AS CHAR),
16183 f_char2 = CAST(f_int1 AS CHAR),
16184 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
16185 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
16187 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16188 SELECT f_int1, f_int1, '', '', 'was inserted'
16189 FROM t0_template source_tab
16190 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16192 # check transactions-1 success: 1
16195 # check transactions-2 success: 1
16198 # check transactions-3 success: 1
16199 DELETE FROM t1 WHERE f_charbig = 'was inserted';
16203 # check transactions-4 success: 1
16204 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16205 SELECT f_int1, f_int1, '', '', 'was inserted'
16206 FROM t0_template source_tab
16207 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16209 # check transactions-5 success: 1
16212 # check transactions-6 success: 1
16213 # INFO: Storage engine used for t1 seems to be transactional.
16216 # check transactions-7 success: 1
16217 DELETE FROM t1 WHERE f_charbig = 'was inserted';
16219 SET @@session.sql_mode = 'traditional';
16220 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16221 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16222 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16223 '', '', 'was inserted' FROM t0_template
16224 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16225 ERROR 22012: Division by 0
16228 # check transactions-8 success: 1
16229 # INFO: Storage engine used for t1 seems to be able to revert
16230 # changes made by the failing statement.
16231 SET @@session.sql_mode = '';
16233 DELETE FROM t1 WHERE f_charbig = 'was inserted';
16235 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16237 # check special-1 success: 1
16238 UPDATE t1 SET f_charbig = '';
16240 # check special-2 success: 1
16241 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16242 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16243 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16244 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16245 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16246 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16247 'just inserted' FROM t0_template
16248 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16249 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16251 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16252 f_charbig = 'updated by trigger'
16253 WHERE f_int1 = new.f_int1;
16255 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16256 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16257 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16259 # check trigger-1 success: 1
16260 DROP TRIGGER trg_1;
16261 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16262 f_int2 = CAST(f_char1 AS SIGNED INT),
16263 f_charbig = 'just inserted'
16264 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16266 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16267 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16268 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16269 'just inserted' FROM t0_template
16270 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16271 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16273 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16274 f_charbig = 'updated by trigger'
16275 WHERE f_int1 = new.f_int1;
16277 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16278 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16279 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16281 # check trigger-2 success: 1
16282 DROP TRIGGER trg_1;
16283 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16284 f_int2 = CAST(f_char1 AS SIGNED INT),
16285 f_charbig = 'just inserted'
16286 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16288 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16289 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16290 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16291 'just inserted' FROM t0_template
16292 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16293 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16295 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16296 f_charbig = 'updated by trigger'
16297 WHERE f_int1 = new.f_int1;
16299 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16300 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16302 # check trigger-3 success: 1
16303 DROP TRIGGER trg_1;
16304 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16305 f_int2 = CAST(f_char1 AS SIGNED INT),
16306 f_charbig = 'just inserted'
16307 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16309 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16310 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16311 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16312 'just inserted' FROM t0_template
16313 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16314 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16316 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16317 f_charbig = 'updated by trigger'
16318 WHERE f_int1 = - old.f_int1;
16320 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16321 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16323 # check trigger-4 success: 1
16324 DROP TRIGGER trg_1;
16325 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16326 f_int2 = CAST(f_char1 AS SIGNED INT),
16327 f_charbig = 'just inserted'
16328 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16330 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16331 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16332 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16333 'just inserted' FROM t0_template
16334 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16335 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16337 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16338 f_charbig = 'updated by trigger'
16339 WHERE f_int1 = new.f_int1;
16341 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16342 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16344 # check trigger-5 success: 1
16345 DROP TRIGGER trg_1;
16346 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16347 f_int2 = CAST(f_char1 AS SIGNED INT),
16348 f_charbig = 'just inserted'
16349 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16351 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16352 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16353 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16354 'just inserted' FROM t0_template
16355 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16356 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16358 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16359 f_charbig = 'updated by trigger'
16360 WHERE f_int1 = - old.f_int1;
16362 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16363 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16365 # check trigger-6 success: 1
16366 DROP TRIGGER trg_1;
16367 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16368 f_int2 = CAST(f_char1 AS SIGNED INT),
16369 f_charbig = 'just inserted'
16370 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16372 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16373 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16374 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16375 'just inserted' FROM t0_template
16376 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16377 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16379 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16380 f_charbig = 'updated by trigger'
16381 WHERE f_int1 = - old.f_int1;
16384 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16386 # check trigger-7 success: 1
16387 DROP TRIGGER trg_1;
16388 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16389 f_int2 = CAST(f_char1 AS SIGNED INT),
16390 f_charbig = 'just inserted'
16391 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16393 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16394 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16395 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16396 'just inserted' FROM t0_template
16397 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16398 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16400 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16401 f_charbig = 'updated by trigger'
16402 WHERE f_int1 = - old.f_int1;
16405 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16407 # check trigger-8 success: 1
16408 DROP TRIGGER trg_1;
16409 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16410 f_int2 = CAST(f_char1 AS SIGNED INT),
16411 f_charbig = 'just inserted'
16412 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16414 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16416 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16417 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16419 SET new.f_int1 = old.f_int1 + @max_row,
16420 new.f_int2 = old.f_int2 - @max_row,
16421 new.f_charbig = '####updated per update trigger####';
16424 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16425 f_charbig = '####updated per update statement itself####';
16427 # check trigger-9 success: 1
16428 DROP TRIGGER trg_2;
16429 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16430 f_int2 = CAST(f_char1 AS SIGNED INT),
16431 f_charbig = CONCAT('===',f_char1,'===');
16432 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16434 SET new.f_int1 = new.f_int1 + @max_row,
16435 new.f_int2 = new.f_int2 - @max_row,
16436 new.f_charbig = '####updated per update trigger####';
16439 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16440 f_charbig = '####updated per update statement itself####';
16442 # check trigger-10 success: 1
16443 DROP TRIGGER trg_2;
16444 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16445 f_int2 = CAST(f_char1 AS SIGNED INT),
16446 f_charbig = CONCAT('===',f_char1,'===');
16447 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16449 SET new.f_int1 = @my_max1 + @counter,
16450 new.f_int2 = @my_min2 - @counter,
16451 new.f_charbig = '####updated per insert trigger####';
16452 SET @counter = @counter + 1;
16455 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16456 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16457 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16458 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16459 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16461 DROP TRIGGER trg_3;
16463 # check trigger-11 success: 1
16465 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16466 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16467 AND f_charbig = '####updated per insert trigger####';
16468 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16470 SET new.f_int1 = @my_max1 + @counter,
16471 new.f_int2 = @my_min2 - @counter,
16472 new.f_charbig = '####updated per insert trigger####';
16473 SET @counter = @counter + 1;
16476 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16477 INSERT INTO t1 (f_char1, f_char2, f_charbig)
16478 SELECT CAST(f_int1 AS CHAR),
16479 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16480 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16482 DROP TRIGGER trg_3;
16484 # check trigger-12 success: 1
16486 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16487 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16488 AND f_charbig = '####updated per insert trigger####';
16490 Table Op Msg_type Msg_text
16491 test.t1 analyze status OK
16492 CHECK TABLE t1 EXTENDED;
16493 Table Op Msg_type Msg_text
16494 test.t1 check status OK
16495 CHECKSUM TABLE t1 EXTENDED;
16497 test.t1 <some_value>
16499 Table Op Msg_type Msg_text
16500 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
16501 test.t1 optimize status OK
16502 # check layout success: 1
16503 REPAIR TABLE t1 EXTENDED;
16504 Table Op Msg_type Msg_text
16505 test.t1 repair note The storage engine for the table doesn't support repair
16506 # check layout success: 1
16509 # check TRUNCATE success: 1
16510 # check layout success: 1
16511 # End usability test (inc/partition_check.inc)
16518 f_charbig VARCHAR(1000)
16519 , UNIQUE INDEX uidx1 (f_int2,f_int1)
16521 PARTITION BY KEY(f_int1) PARTITIONS 5;
16522 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16523 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16524 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16525 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
16526 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16527 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16528 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16529 # Start usability test (inc/partition_check.inc)
16531 SHOW CREATE TABLE t1;
16533 t1 CREATE TABLE `t1` (
16534 `f_int1` int(11) DEFAULT NULL,
16535 `f_int2` mediumint(9) DEFAULT NULL,
16536 `f_char1` char(20) DEFAULT NULL,
16537 `f_char2` char(20) DEFAULT NULL,
16538 `f_charbig` varchar(1000) DEFAULT NULL,
16539 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
16540 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
16541 /*!50100 PARTITION BY KEY (f_int1)
16544 # check prerequisites-1 success: 1
16545 # check COUNT(*) success: 1
16546 # check MIN/MAX(f_int1) success: 1
16547 # check MIN/MAX(f_int2) success: 1
16548 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16549 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16550 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16551 WHERE f_int1 IN (2,3);
16552 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
16553 # check prerequisites-3 success: 1
16554 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
16555 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16556 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16557 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16558 WHERE f_int1 IN (2,3);
16559 DELETE FROM t1 WHERE f_charbig = 'delete me';
16560 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16561 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16562 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16563 WHERE f_int1 IN (2,3);
16564 DELETE FROM t1 WHERE f_charbig = 'delete me';
16565 # check read via f_int1 success: 1
16566 # check read via f_int2 success: 1
16568 # check multiple-1 success: 1
16569 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16571 # check multiple-2 success: 1
16572 INSERT INTO t1 SELECT * FROM t0_template
16573 WHERE MOD(f_int1,3) = 0;
16575 # check multiple-3 success: 1
16576 UPDATE t1 SET f_int1 = f_int1 + @max_row
16577 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16578 AND @max_row_div2 + @max_row_div4;
16580 # check multiple-4 success: 1
16582 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16583 AND @max_row_div2 + @max_row_div4 + @max_row;
16585 # check multiple-5 success: 1
16586 SELECT COUNT(*) INTO @try_count FROM t0_template
16587 WHERE MOD(f_int1,3) = 0
16588 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16589 SELECT COUNT(*) INTO @clash_count
16590 FROM t1 INNER JOIN t0_template USING(f_int1)
16591 WHERE MOD(f_int1,3) = 0
16592 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16593 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16595 SET f_int1 = @cur_value , f_int2 = @cur_value,
16596 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16597 f_charbig = '#SINGLE#';
16599 # check single-1 success: 1
16600 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16602 SET f_int1 = @cur_value , f_int2 = @cur_value,
16603 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16604 f_charbig = '#SINGLE#';
16606 # check single-2 success: 1
16607 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16608 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16609 UPDATE t1 SET f_int1 = @cur_value2
16610 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16612 # check single-3 success: 1
16613 SET @cur_value1= -1;
16614 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16615 UPDATE t1 SET f_int1 = @cur_value1
16616 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16618 # check single-4 success: 1
16619 SELECT MAX(f_int1) INTO @cur_value FROM t1;
16620 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16622 # check single-5 success: 1
16623 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16625 # check single-6 success: 1
16626 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16628 Warning 1264 Out of range value for column 'f_int2' at row 1
16630 # check single-7 success: 1
16631 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16632 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16633 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16634 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16635 f_charbig = '#NULL#';
16637 SET f_int1 = NULL , f_int2 = -@max_row,
16638 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16639 f_charbig = '#NULL#';
16640 # check null success: 1
16642 # check null-1 success: 1
16643 UPDATE t1 SET f_int1 = -@max_row
16644 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16645 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16647 # check null-2 success: 1
16648 UPDATE t1 SET f_int1 = NULL
16649 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16650 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16652 # check null-3 success: 1
16654 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16655 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16657 # check null-4 success: 1
16659 WHERE f_int1 = 0 AND f_int2 = 0
16660 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16661 AND f_charbig = '#NULL#';
16662 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16663 SELECT f_int1, f_int1, '', '', 'was inserted'
16664 FROM t0_template source_tab
16665 WHERE MOD(f_int1,3) = 0
16666 AND f_int1 BETWEEN @max_row_div2 AND @max_row
16668 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
16669 f_int2 = 2 * @max_row + source_tab.f_int1,
16670 f_charbig = 'was updated';
16672 # check unique-1-a success: 1
16674 # check unique-1-b success: 1
16675 DELETE FROM t1 WHERE f_charbig = 'was inserted';
16676 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16677 f_int2 = CAST(f_char1 AS SIGNED INT),
16678 f_charbig = CONCAT('===',f_char1,'===')
16679 WHERE f_charbig = 'was updated';
16680 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16681 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
16682 FROM t0_template source_tab
16683 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16685 # check replace success: 1
16687 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
16689 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
16690 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
16691 UPDATE t1 SET f_int2 = f_int1,
16692 f_char1 = CAST(f_int1 AS CHAR),
16693 f_char2 = CAST(f_int1 AS CHAR),
16694 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
16695 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
16697 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16698 SELECT f_int1, f_int1, '', '', 'was inserted'
16699 FROM t0_template source_tab
16700 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16702 # check transactions-1 success: 1
16705 # check transactions-2 success: 1
16708 # check transactions-3 success: 1
16709 DELETE FROM t1 WHERE f_charbig = 'was inserted';
16713 # check transactions-4 success: 1
16714 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16715 SELECT f_int1, f_int1, '', '', 'was inserted'
16716 FROM t0_template source_tab
16717 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16719 # check transactions-5 success: 1
16722 # check transactions-6 success: 1
16723 # INFO: Storage engine used for t1 seems to be transactional.
16726 # check transactions-7 success: 1
16727 DELETE FROM t1 WHERE f_charbig = 'was inserted';
16729 SET @@session.sql_mode = 'traditional';
16730 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16731 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16732 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16733 '', '', 'was inserted' FROM t0_template
16734 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16735 ERROR 22012: Division by 0
16738 # check transactions-8 success: 1
16739 # INFO: Storage engine used for t1 seems to be able to revert
16740 # changes made by the failing statement.
16741 SET @@session.sql_mode = '';
16743 DELETE FROM t1 WHERE f_charbig = 'was inserted';
16745 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16747 # check special-1 success: 1
16748 UPDATE t1 SET f_charbig = '';
16750 # check special-2 success: 1
16751 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16752 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16753 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16754 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16755 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16756 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16757 'just inserted' FROM t0_template
16758 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16759 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16761 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16762 f_charbig = 'updated by trigger'
16763 WHERE f_int1 = new.f_int1;
16765 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16766 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16767 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16769 # check trigger-1 success: 1
16770 DROP TRIGGER trg_1;
16771 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16772 f_int2 = CAST(f_char1 AS SIGNED INT),
16773 f_charbig = 'just inserted'
16774 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16776 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16777 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16778 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16779 'just inserted' FROM t0_template
16780 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16781 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16783 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16784 f_charbig = 'updated by trigger'
16785 WHERE f_int1 = new.f_int1;
16787 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16788 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16789 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16791 # check trigger-2 success: 1
16792 DROP TRIGGER trg_1;
16793 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16794 f_int2 = CAST(f_char1 AS SIGNED INT),
16795 f_charbig = 'just inserted'
16796 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16798 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16799 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16800 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16801 'just inserted' FROM t0_template
16802 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16803 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16805 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16806 f_charbig = 'updated by trigger'
16807 WHERE f_int1 = new.f_int1;
16809 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16810 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16812 # check trigger-3 success: 1
16813 DROP TRIGGER trg_1;
16814 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16815 f_int2 = CAST(f_char1 AS SIGNED INT),
16816 f_charbig = 'just inserted'
16817 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16819 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16820 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16821 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16822 'just inserted' FROM t0_template
16823 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16824 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16826 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16827 f_charbig = 'updated by trigger'
16828 WHERE f_int1 = - old.f_int1;
16830 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16831 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16833 # check trigger-4 success: 1
16834 DROP TRIGGER trg_1;
16835 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16836 f_int2 = CAST(f_char1 AS SIGNED INT),
16837 f_charbig = 'just inserted'
16838 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16840 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16841 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16842 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16843 'just inserted' FROM t0_template
16844 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16845 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16847 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16848 f_charbig = 'updated by trigger'
16849 WHERE f_int1 = new.f_int1;
16851 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16852 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16854 # check trigger-5 success: 1
16855 DROP TRIGGER trg_1;
16856 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16857 f_int2 = CAST(f_char1 AS SIGNED INT),
16858 f_charbig = 'just inserted'
16859 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16861 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16862 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16863 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16864 'just inserted' FROM t0_template
16865 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16866 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16868 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16869 f_charbig = 'updated by trigger'
16870 WHERE f_int1 = - old.f_int1;
16872 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16873 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16875 # check trigger-6 success: 1
16876 DROP TRIGGER trg_1;
16877 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16878 f_int2 = CAST(f_char1 AS SIGNED INT),
16879 f_charbig = 'just inserted'
16880 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16882 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16883 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16884 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16885 'just inserted' FROM t0_template
16886 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16887 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16889 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16890 f_charbig = 'updated by trigger'
16891 WHERE f_int1 = - old.f_int1;
16894 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16896 # check trigger-7 success: 1
16897 DROP TRIGGER trg_1;
16898 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16899 f_int2 = CAST(f_char1 AS SIGNED INT),
16900 f_charbig = 'just inserted'
16901 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16903 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16904 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16905 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16906 'just inserted' FROM t0_template
16907 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16908 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16910 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16911 f_charbig = 'updated by trigger'
16912 WHERE f_int1 = - old.f_int1;
16915 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16917 # check trigger-8 success: 1
16918 DROP TRIGGER trg_1;
16919 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16920 f_int2 = CAST(f_char1 AS SIGNED INT),
16921 f_charbig = 'just inserted'
16922 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16924 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16926 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16927 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16929 SET new.f_int1 = old.f_int1 + @max_row,
16930 new.f_int2 = old.f_int2 - @max_row,
16931 new.f_charbig = '####updated per update trigger####';
16934 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16935 f_charbig = '####updated per update statement itself####';
16937 # check trigger-9 success: 1
16938 DROP TRIGGER trg_2;
16939 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16940 f_int2 = CAST(f_char1 AS SIGNED INT),
16941 f_charbig = CONCAT('===',f_char1,'===');
16942 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16944 SET new.f_int1 = new.f_int1 + @max_row,
16945 new.f_int2 = new.f_int2 - @max_row,
16946 new.f_charbig = '####updated per update trigger####';
16949 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16950 f_charbig = '####updated per update statement itself####';
16952 # check trigger-10 success: 1
16953 DROP TRIGGER trg_2;
16954 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16955 f_int2 = CAST(f_char1 AS SIGNED INT),
16956 f_charbig = CONCAT('===',f_char1,'===');
16957 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16959 SET new.f_int1 = @my_max1 + @counter,
16960 new.f_int2 = @my_min2 - @counter,
16961 new.f_charbig = '####updated per insert trigger####';
16962 SET @counter = @counter + 1;
16965 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16966 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16967 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16968 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16969 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16971 DROP TRIGGER trg_3;
16973 # check trigger-11 success: 1
16975 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16976 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16977 AND f_charbig = '####updated per insert trigger####';
16978 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16980 SET new.f_int1 = @my_max1 + @counter,
16981 new.f_int2 = @my_min2 - @counter,
16982 new.f_charbig = '####updated per insert trigger####';
16983 SET @counter = @counter + 1;
16986 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16987 INSERT INTO t1 (f_char1, f_char2, f_charbig)
16988 SELECT CAST(f_int1 AS CHAR),
16989 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16990 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16992 DROP TRIGGER trg_3;
16994 # check trigger-12 success: 1
16996 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16997 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16998 AND f_charbig = '####updated per insert trigger####';
17000 Table Op Msg_type Msg_text
17001 test.t1 analyze status OK
17002 CHECK TABLE t1 EXTENDED;
17003 Table Op Msg_type Msg_text
17004 test.t1 check status OK
17005 CHECKSUM TABLE t1 EXTENDED;
17007 test.t1 <some_value>
17009 Table Op Msg_type Msg_text
17010 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
17011 test.t1 optimize status OK
17012 # check layout success: 1
17013 REPAIR TABLE t1 EXTENDED;
17014 Table Op Msg_type Msg_text
17015 test.t1 repair note The storage engine for the table doesn't support repair
17016 # check layout success: 1
17019 # check TRUNCATE success: 1
17020 # check layout success: 1
17021 # End usability test (inc/partition_check.inc)
17028 f_charbig VARCHAR(1000)
17029 , UNIQUE INDEX uidx1 (f_int2,f_int1)
17031 PARTITION BY LIST(MOD(f_int1,4))
17032 (PARTITION part_3 VALUES IN (-3),
17033 PARTITION part_2 VALUES IN (-2),
17034 PARTITION part_1 VALUES IN (-1),
17035 PARTITION part_N VALUES IN (NULL),
17036 PARTITION part0 VALUES IN (0),
17037 PARTITION part1 VALUES IN (1),
17038 PARTITION part2 VALUES IN (2),
17039 PARTITION part3 VALUES IN (3));
17040 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17041 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17042 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17043 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
17044 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17045 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17046 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17047 # Start usability test (inc/partition_check.inc)
17049 SHOW CREATE TABLE t1;
17051 t1 CREATE TABLE `t1` (
17052 `f_int1` int(11) DEFAULT NULL,
17053 `f_int2` mediumint(9) DEFAULT NULL,
17054 `f_char1` char(20) DEFAULT NULL,
17055 `f_char2` char(20) DEFAULT NULL,
17056 `f_charbig` varchar(1000) DEFAULT NULL,
17057 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
17058 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
17059 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
17060 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
17061 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
17062 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
17063 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
17064 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
17065 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
17066 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
17067 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
17069 # check prerequisites-1 success: 1
17070 # check COUNT(*) success: 1
17071 # check MIN/MAX(f_int1) success: 1
17072 # check MIN/MAX(f_int2) success: 1
17073 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17074 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17075 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17076 WHERE f_int1 IN (2,3);
17077 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
17078 # check prerequisites-3 success: 1
17079 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
17080 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17081 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17082 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17083 WHERE f_int1 IN (2,3);
17084 DELETE FROM t1 WHERE f_charbig = 'delete me';
17085 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17086 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17087 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17088 WHERE f_int1 IN (2,3);
17089 DELETE FROM t1 WHERE f_charbig = 'delete me';
17090 # check read via f_int1 success: 1
17091 # check read via f_int2 success: 1
17093 # check multiple-1 success: 1
17094 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17096 # check multiple-2 success: 1
17097 INSERT INTO t1 SELECT * FROM t0_template
17098 WHERE MOD(f_int1,3) = 0;
17100 # check multiple-3 success: 1
17101 UPDATE t1 SET f_int1 = f_int1 + @max_row
17102 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17103 AND @max_row_div2 + @max_row_div4;
17105 # check multiple-4 success: 1
17107 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17108 AND @max_row_div2 + @max_row_div4 + @max_row;
17110 # check multiple-5 success: 1
17111 SELECT COUNT(*) INTO @try_count FROM t0_template
17112 WHERE MOD(f_int1,3) = 0
17113 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17114 SELECT COUNT(*) INTO @clash_count
17115 FROM t1 INNER JOIN t0_template USING(f_int1)
17116 WHERE MOD(f_int1,3) = 0
17117 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17118 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17120 SET f_int1 = @cur_value , f_int2 = @cur_value,
17121 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17122 f_charbig = '#SINGLE#';
17124 # check single-1 success: 1
17125 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17127 SET f_int1 = @cur_value , f_int2 = @cur_value,
17128 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17129 f_charbig = '#SINGLE#';
17131 # check single-2 success: 1
17132 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17133 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17134 UPDATE t1 SET f_int1 = @cur_value2
17135 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17137 # check single-3 success: 1
17138 SET @cur_value1= -1;
17139 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17140 UPDATE t1 SET f_int1 = @cur_value1
17141 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17143 # check single-4 success: 1
17144 SELECT MAX(f_int1) INTO @cur_value FROM t1;
17145 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17147 # check single-5 success: 1
17148 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17150 # check single-6 success: 1
17151 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17153 Warning 1264 Out of range value for column 'f_int2' at row 1
17155 # check single-7 success: 1
17156 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17157 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17158 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17159 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17160 f_charbig = '#NULL#';
17162 SET f_int1 = NULL , f_int2 = -@max_row,
17163 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17164 f_charbig = '#NULL#';
17165 # check null success: 1
17167 # check null-1 success: 1
17168 UPDATE t1 SET f_int1 = -@max_row
17169 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17170 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17172 # check null-2 success: 1
17173 UPDATE t1 SET f_int1 = NULL
17174 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17175 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17177 # check null-3 success: 1
17179 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17180 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17182 # check null-4 success: 1
17184 WHERE f_int1 = 0 AND f_int2 = 0
17185 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17186 AND f_charbig = '#NULL#';
17187 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17188 SELECT f_int1, f_int1, '', '', 'was inserted'
17189 FROM t0_template source_tab
17190 WHERE MOD(f_int1,3) = 0
17191 AND f_int1 BETWEEN @max_row_div2 AND @max_row
17193 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
17194 f_int2 = 2 * @max_row + source_tab.f_int1,
17195 f_charbig = 'was updated';
17197 # check unique-1-a success: 1
17199 # check unique-1-b success: 1
17200 DELETE FROM t1 WHERE f_charbig = 'was inserted';
17201 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17202 f_int2 = CAST(f_char1 AS SIGNED INT),
17203 f_charbig = CONCAT('===',f_char1,'===')
17204 WHERE f_charbig = 'was updated';
17205 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17206 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
17207 FROM t0_template source_tab
17208 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17210 # check replace success: 1
17212 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
17214 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
17215 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
17216 UPDATE t1 SET f_int2 = f_int1,
17217 f_char1 = CAST(f_int1 AS CHAR),
17218 f_char2 = CAST(f_int1 AS CHAR),
17219 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
17220 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
17222 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17223 SELECT f_int1, f_int1, '', '', 'was inserted'
17224 FROM t0_template source_tab
17225 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17227 # check transactions-1 success: 1
17230 # check transactions-2 success: 1
17233 # check transactions-3 success: 1
17234 DELETE FROM t1 WHERE f_charbig = 'was inserted';
17238 # check transactions-4 success: 1
17239 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17240 SELECT f_int1, f_int1, '', '', 'was inserted'
17241 FROM t0_template source_tab
17242 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17244 # check transactions-5 success: 1
17247 # check transactions-6 success: 1
17248 # INFO: Storage engine used for t1 seems to be transactional.
17251 # check transactions-7 success: 1
17252 DELETE FROM t1 WHERE f_charbig = 'was inserted';
17254 SET @@session.sql_mode = 'traditional';
17255 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17256 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17257 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17258 '', '', 'was inserted' FROM t0_template
17259 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17260 ERROR 22012: Division by 0
17263 # check transactions-8 success: 1
17264 # INFO: Storage engine used for t1 seems to be able to revert
17265 # changes made by the failing statement.
17266 SET @@session.sql_mode = '';
17268 DELETE FROM t1 WHERE f_charbig = 'was inserted';
17270 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17272 # check special-1 success: 1
17273 UPDATE t1 SET f_charbig = '';
17275 # check special-2 success: 1
17276 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17277 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17278 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17279 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17280 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17281 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17282 'just inserted' FROM t0_template
17283 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17284 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17286 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17287 f_charbig = 'updated by trigger'
17288 WHERE f_int1 = new.f_int1;
17290 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17291 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17292 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17294 # check trigger-1 success: 1
17295 DROP TRIGGER trg_1;
17296 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17297 f_int2 = CAST(f_char1 AS SIGNED INT),
17298 f_charbig = 'just inserted'
17299 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17301 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17302 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17303 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17304 'just inserted' FROM t0_template
17305 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17306 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17308 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17309 f_charbig = 'updated by trigger'
17310 WHERE f_int1 = new.f_int1;
17312 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17313 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17314 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17316 # check trigger-2 success: 1
17317 DROP TRIGGER trg_1;
17318 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17319 f_int2 = CAST(f_char1 AS SIGNED INT),
17320 f_charbig = 'just inserted'
17321 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17323 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17324 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17325 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17326 'just inserted' FROM t0_template
17327 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17328 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17330 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17331 f_charbig = 'updated by trigger'
17332 WHERE f_int1 = new.f_int1;
17334 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17335 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17337 # check trigger-3 success: 1
17338 DROP TRIGGER trg_1;
17339 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17340 f_int2 = CAST(f_char1 AS SIGNED INT),
17341 f_charbig = 'just inserted'
17342 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17344 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17345 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17346 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17347 'just inserted' FROM t0_template
17348 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17349 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17351 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17352 f_charbig = 'updated by trigger'
17353 WHERE f_int1 = - old.f_int1;
17355 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17356 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17358 # check trigger-4 success: 1
17359 DROP TRIGGER trg_1;
17360 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17361 f_int2 = CAST(f_char1 AS SIGNED INT),
17362 f_charbig = 'just inserted'
17363 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17365 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17366 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17367 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17368 'just inserted' FROM t0_template
17369 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17370 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17372 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17373 f_charbig = 'updated by trigger'
17374 WHERE f_int1 = new.f_int1;
17376 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17377 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17379 # check trigger-5 success: 1
17380 DROP TRIGGER trg_1;
17381 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17382 f_int2 = CAST(f_char1 AS SIGNED INT),
17383 f_charbig = 'just inserted'
17384 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17386 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17387 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17388 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17389 'just inserted' FROM t0_template
17390 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17391 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17393 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17394 f_charbig = 'updated by trigger'
17395 WHERE f_int1 = - old.f_int1;
17397 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17398 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17400 # check trigger-6 success: 1
17401 DROP TRIGGER trg_1;
17402 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17403 f_int2 = CAST(f_char1 AS SIGNED INT),
17404 f_charbig = 'just inserted'
17405 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17407 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17408 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17409 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17410 'just inserted' FROM t0_template
17411 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17412 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17414 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17415 f_charbig = 'updated by trigger'
17416 WHERE f_int1 = - old.f_int1;
17419 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17421 # check trigger-7 success: 1
17422 DROP TRIGGER trg_1;
17423 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17424 f_int2 = CAST(f_char1 AS SIGNED INT),
17425 f_charbig = 'just inserted'
17426 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17428 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17429 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17430 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17431 'just inserted' FROM t0_template
17432 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17433 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17435 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17436 f_charbig = 'updated by trigger'
17437 WHERE f_int1 = - old.f_int1;
17440 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17442 # check trigger-8 success: 1
17443 DROP TRIGGER trg_1;
17444 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17445 f_int2 = CAST(f_char1 AS SIGNED INT),
17446 f_charbig = 'just inserted'
17447 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17449 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17451 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17452 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17454 SET new.f_int1 = old.f_int1 + @max_row,
17455 new.f_int2 = old.f_int2 - @max_row,
17456 new.f_charbig = '####updated per update trigger####';
17459 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17460 f_charbig = '####updated per update statement itself####';
17462 # check trigger-9 success: 1
17463 DROP TRIGGER trg_2;
17464 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17465 f_int2 = CAST(f_char1 AS SIGNED INT),
17466 f_charbig = CONCAT('===',f_char1,'===');
17467 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17469 SET new.f_int1 = new.f_int1 + @max_row,
17470 new.f_int2 = new.f_int2 - @max_row,
17471 new.f_charbig = '####updated per update trigger####';
17474 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17475 f_charbig = '####updated per update statement itself####';
17477 # check trigger-10 success: 1
17478 DROP TRIGGER trg_2;
17479 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17480 f_int2 = CAST(f_char1 AS SIGNED INT),
17481 f_charbig = CONCAT('===',f_char1,'===');
17482 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17484 SET new.f_int1 = @my_max1 + @counter,
17485 new.f_int2 = @my_min2 - @counter,
17486 new.f_charbig = '####updated per insert trigger####';
17487 SET @counter = @counter + 1;
17490 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17491 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17492 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17493 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17494 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17496 DROP TRIGGER trg_3;
17498 # check trigger-11 success: 1
17500 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17501 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17502 AND f_charbig = '####updated per insert trigger####';
17503 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17505 SET new.f_int1 = @my_max1 + @counter,
17506 new.f_int2 = @my_min2 - @counter,
17507 new.f_charbig = '####updated per insert trigger####';
17508 SET @counter = @counter + 1;
17511 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17512 INSERT INTO t1 (f_char1, f_char2, f_charbig)
17513 SELECT CAST(f_int1 AS CHAR),
17514 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17515 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17517 DROP TRIGGER trg_3;
17519 # check trigger-12 success: 1
17521 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17522 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17523 AND f_charbig = '####updated per insert trigger####';
17525 Table Op Msg_type Msg_text
17526 test.t1 analyze status OK
17527 CHECK TABLE t1 EXTENDED;
17528 Table Op Msg_type Msg_text
17529 test.t1 check status OK
17530 CHECKSUM TABLE t1 EXTENDED;
17532 test.t1 <some_value>
17534 Table Op Msg_type Msg_text
17535 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
17536 test.t1 optimize status OK
17537 # check layout success: 1
17538 REPAIR TABLE t1 EXTENDED;
17539 Table Op Msg_type Msg_text
17540 test.t1 repair note The storage engine for the table doesn't support repair
17541 # check layout success: 1
17544 # check TRUNCATE success: 1
17545 # check layout success: 1
17546 # End usability test (inc/partition_check.inc)
17553 f_charbig VARCHAR(1000)
17554 , UNIQUE INDEX uidx1 (f_int2,f_int1)
17556 PARTITION BY RANGE(f_int1)
17557 (PARTITION parta VALUES LESS THAN (0),
17558 PARTITION partb VALUES LESS THAN (5),
17559 PARTITION partc VALUES LESS THAN (10),
17560 PARTITION partd VALUES LESS THAN (10 + 5),
17561 PARTITION parte VALUES LESS THAN (20),
17562 PARTITION partf VALUES LESS THAN (2147483646));
17563 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17564 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17565 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17566 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
17567 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17568 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17569 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17570 # Start usability test (inc/partition_check.inc)
17572 SHOW CREATE TABLE t1;
17574 t1 CREATE TABLE `t1` (
17575 `f_int1` int(11) DEFAULT NULL,
17576 `f_int2` mediumint(9) DEFAULT NULL,
17577 `f_char1` char(20) DEFAULT NULL,
17578 `f_char2` char(20) DEFAULT NULL,
17579 `f_charbig` varchar(1000) DEFAULT NULL,
17580 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
17581 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
17582 /*!50100 PARTITION BY RANGE (f_int1)
17583 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
17584 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
17585 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
17586 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
17587 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
17588 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
17590 # check prerequisites-1 success: 1
17591 # check COUNT(*) success: 1
17592 # check MIN/MAX(f_int1) success: 1
17593 # check MIN/MAX(f_int2) success: 1
17594 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17595 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17596 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17597 WHERE f_int1 IN (2,3);
17598 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
17599 # check prerequisites-3 success: 1
17600 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
17601 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17602 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17603 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17604 WHERE f_int1 IN (2,3);
17605 DELETE FROM t1 WHERE f_charbig = 'delete me';
17606 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17607 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17608 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17609 WHERE f_int1 IN (2,3);
17610 DELETE FROM t1 WHERE f_charbig = 'delete me';
17611 # check read via f_int1 success: 1
17612 # check read via f_int2 success: 1
17614 # check multiple-1 success: 1
17615 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17617 # check multiple-2 success: 1
17618 INSERT INTO t1 SELECT * FROM t0_template
17619 WHERE MOD(f_int1,3) = 0;
17621 # check multiple-3 success: 1
17622 UPDATE t1 SET f_int1 = f_int1 + @max_row
17623 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17624 AND @max_row_div2 + @max_row_div4;
17626 # check multiple-4 success: 1
17628 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17629 AND @max_row_div2 + @max_row_div4 + @max_row;
17631 # check multiple-5 success: 1
17632 SELECT COUNT(*) INTO @try_count FROM t0_template
17633 WHERE MOD(f_int1,3) = 0
17634 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17635 SELECT COUNT(*) INTO @clash_count
17636 FROM t1 INNER JOIN t0_template USING(f_int1)
17637 WHERE MOD(f_int1,3) = 0
17638 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17639 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17641 SET f_int1 = @cur_value , f_int2 = @cur_value,
17642 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17643 f_charbig = '#SINGLE#';
17645 # check single-1 success: 1
17646 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17648 SET f_int1 = @cur_value , f_int2 = @cur_value,
17649 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17650 f_charbig = '#SINGLE#';
17652 # check single-2 success: 1
17653 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17654 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17655 UPDATE t1 SET f_int1 = @cur_value2
17656 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17658 # check single-3 success: 1
17659 SET @cur_value1= -1;
17660 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17661 UPDATE t1 SET f_int1 = @cur_value1
17662 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17664 # check single-4 success: 1
17665 SELECT MAX(f_int1) INTO @cur_value FROM t1;
17666 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17668 # check single-5 success: 1
17669 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17671 # check single-6 success: 1
17672 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17673 ERROR HY000: Table has no partition for value 2147483647
17674 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17675 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17676 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17677 f_charbig = '#NULL#';
17679 SET f_int1 = NULL , f_int2 = -@max_row,
17680 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17681 f_charbig = '#NULL#';
17682 # check null success: 1
17684 # check null-1 success: 1
17685 UPDATE t1 SET f_int1 = -@max_row
17686 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17687 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17689 # check null-2 success: 1
17690 UPDATE t1 SET f_int1 = NULL
17691 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17692 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17694 # check null-3 success: 1
17696 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17697 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17699 # check null-4 success: 1
17701 WHERE f_int1 = 0 AND f_int2 = 0
17702 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17703 AND f_charbig = '#NULL#';
17704 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17705 SELECT f_int1, f_int1, '', '', 'was inserted'
17706 FROM t0_template source_tab
17707 WHERE MOD(f_int1,3) = 0
17708 AND f_int1 BETWEEN @max_row_div2 AND @max_row
17710 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
17711 f_int2 = 2 * @max_row + source_tab.f_int1,
17712 f_charbig = 'was updated';
17714 # check unique-1-a success: 1
17716 # check unique-1-b success: 1
17717 DELETE FROM t1 WHERE f_charbig = 'was inserted';
17718 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17719 f_int2 = CAST(f_char1 AS SIGNED INT),
17720 f_charbig = CONCAT('===',f_char1,'===')
17721 WHERE f_charbig = 'was updated';
17722 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17723 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
17724 FROM t0_template source_tab
17725 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17727 # check replace success: 1
17729 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
17731 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
17732 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
17733 UPDATE t1 SET f_int2 = f_int1,
17734 f_char1 = CAST(f_int1 AS CHAR),
17735 f_char2 = CAST(f_int1 AS CHAR),
17736 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
17737 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
17739 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17740 SELECT f_int1, f_int1, '', '', 'was inserted'
17741 FROM t0_template source_tab
17742 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17744 # check transactions-1 success: 1
17747 # check transactions-2 success: 1
17750 # check transactions-3 success: 1
17751 DELETE FROM t1 WHERE f_charbig = 'was inserted';
17755 # check transactions-4 success: 1
17756 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17757 SELECT f_int1, f_int1, '', '', 'was inserted'
17758 FROM t0_template source_tab
17759 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17761 # check transactions-5 success: 1
17764 # check transactions-6 success: 1
17765 # INFO: Storage engine used for t1 seems to be transactional.
17768 # check transactions-7 success: 1
17769 DELETE FROM t1 WHERE f_charbig = 'was inserted';
17771 SET @@session.sql_mode = 'traditional';
17772 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17773 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17774 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17775 '', '', 'was inserted' FROM t0_template
17776 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17777 ERROR 22012: Division by 0
17780 # check transactions-8 success: 1
17781 # INFO: Storage engine used for t1 seems to be able to revert
17782 # changes made by the failing statement.
17783 SET @@session.sql_mode = '';
17785 DELETE FROM t1 WHERE f_charbig = 'was inserted';
17787 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17789 # check special-1 success: 1
17790 UPDATE t1 SET f_charbig = '';
17792 # check special-2 success: 1
17793 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17794 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17795 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17796 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17797 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17798 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17799 'just inserted' FROM t0_template
17800 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17801 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17803 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17804 f_charbig = 'updated by trigger'
17805 WHERE f_int1 = new.f_int1;
17807 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17808 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17809 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17811 # check trigger-1 success: 1
17812 DROP TRIGGER trg_1;
17813 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17814 f_int2 = CAST(f_char1 AS SIGNED INT),
17815 f_charbig = 'just inserted'
17816 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17818 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17819 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17820 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17821 'just inserted' FROM t0_template
17822 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17823 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17825 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17826 f_charbig = 'updated by trigger'
17827 WHERE f_int1 = new.f_int1;
17829 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17830 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17831 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17833 # check trigger-2 success: 1
17834 DROP TRIGGER trg_1;
17835 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17836 f_int2 = CAST(f_char1 AS SIGNED INT),
17837 f_charbig = 'just inserted'
17838 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17840 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17841 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17842 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17843 'just inserted' FROM t0_template
17844 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17845 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17847 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17848 f_charbig = 'updated by trigger'
17849 WHERE f_int1 = new.f_int1;
17851 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17852 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17854 # check trigger-3 success: 1
17855 DROP TRIGGER trg_1;
17856 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17857 f_int2 = CAST(f_char1 AS SIGNED INT),
17858 f_charbig = 'just inserted'
17859 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17861 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17862 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17863 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17864 'just inserted' FROM t0_template
17865 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17866 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17868 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17869 f_charbig = 'updated by trigger'
17870 WHERE f_int1 = - old.f_int1;
17872 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17873 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17875 # check trigger-4 success: 1
17876 DROP TRIGGER trg_1;
17877 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17878 f_int2 = CAST(f_char1 AS SIGNED INT),
17879 f_charbig = 'just inserted'
17880 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17882 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17883 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17884 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17885 'just inserted' FROM t0_template
17886 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17887 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17889 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17890 f_charbig = 'updated by trigger'
17891 WHERE f_int1 = new.f_int1;
17893 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17894 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17896 # check trigger-5 success: 1
17897 DROP TRIGGER trg_1;
17898 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17899 f_int2 = CAST(f_char1 AS SIGNED INT),
17900 f_charbig = 'just inserted'
17901 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17903 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17904 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17905 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17906 'just inserted' FROM t0_template
17907 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17908 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17910 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17911 f_charbig = 'updated by trigger'
17912 WHERE f_int1 = - old.f_int1;
17914 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17915 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17917 # check trigger-6 success: 1
17918 DROP TRIGGER trg_1;
17919 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17920 f_int2 = CAST(f_char1 AS SIGNED INT),
17921 f_charbig = 'just inserted'
17922 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17924 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17925 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17926 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17927 'just inserted' FROM t0_template
17928 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17929 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17931 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17932 f_charbig = 'updated by trigger'
17933 WHERE f_int1 = - old.f_int1;
17936 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17938 # check trigger-7 success: 1
17939 DROP TRIGGER trg_1;
17940 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17941 f_int2 = CAST(f_char1 AS SIGNED INT),
17942 f_charbig = 'just inserted'
17943 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17945 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17946 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17947 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17948 'just inserted' FROM t0_template
17949 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17950 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17952 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17953 f_charbig = 'updated by trigger'
17954 WHERE f_int1 = - old.f_int1;
17957 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17959 # check trigger-8 success: 1
17960 DROP TRIGGER trg_1;
17961 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17962 f_int2 = CAST(f_char1 AS SIGNED INT),
17963 f_charbig = 'just inserted'
17964 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17966 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17968 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17969 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17971 SET new.f_int1 = old.f_int1 + @max_row,
17972 new.f_int2 = old.f_int2 - @max_row,
17973 new.f_charbig = '####updated per update trigger####';
17976 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17977 f_charbig = '####updated per update statement itself####';
17979 # check trigger-9 success: 1
17980 DROP TRIGGER trg_2;
17981 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17982 f_int2 = CAST(f_char1 AS SIGNED INT),
17983 f_charbig = CONCAT('===',f_char1,'===');
17984 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17986 SET new.f_int1 = new.f_int1 + @max_row,
17987 new.f_int2 = new.f_int2 - @max_row,
17988 new.f_charbig = '####updated per update trigger####';
17991 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17992 f_charbig = '####updated per update statement itself####';
17994 # check trigger-10 success: 1
17995 DROP TRIGGER trg_2;
17996 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17997 f_int2 = CAST(f_char1 AS SIGNED INT),
17998 f_charbig = CONCAT('===',f_char1,'===');
17999 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18001 SET new.f_int1 = @my_max1 + @counter,
18002 new.f_int2 = @my_min2 - @counter,
18003 new.f_charbig = '####updated per insert trigger####';
18004 SET @counter = @counter + 1;
18007 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18008 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18009 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18010 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18011 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18013 DROP TRIGGER trg_3;
18015 # check trigger-11 success: 1
18017 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18018 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18019 AND f_charbig = '####updated per insert trigger####';
18020 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18022 SET new.f_int1 = @my_max1 + @counter,
18023 new.f_int2 = @my_min2 - @counter,
18024 new.f_charbig = '####updated per insert trigger####';
18025 SET @counter = @counter + 1;
18028 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18029 INSERT INTO t1 (f_char1, f_char2, f_charbig)
18030 SELECT CAST(f_int1 AS CHAR),
18031 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18032 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18034 DROP TRIGGER trg_3;
18036 # check trigger-12 success: 1
18038 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18039 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18040 AND f_charbig = '####updated per insert trigger####';
18042 Table Op Msg_type Msg_text
18043 test.t1 analyze status OK
18044 CHECK TABLE t1 EXTENDED;
18045 Table Op Msg_type Msg_text
18046 test.t1 check status OK
18047 CHECKSUM TABLE t1 EXTENDED;
18049 test.t1 <some_value>
18051 Table Op Msg_type Msg_text
18052 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
18053 test.t1 optimize status OK
18054 # check layout success: 1
18055 REPAIR TABLE t1 EXTENDED;
18056 Table Op Msg_type Msg_text
18057 test.t1 repair note The storage engine for the table doesn't support repair
18058 # check layout success: 1
18061 # check TRUNCATE success: 1
18062 # check layout success: 1
18063 # End usability test (inc/partition_check.inc)
18070 f_charbig VARCHAR(1000)
18071 , UNIQUE INDEX uidx1 (f_int2,f_int1)
18073 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
18074 (PARTITION parta VALUES LESS THAN (0),
18075 PARTITION partb VALUES LESS THAN (5),
18076 PARTITION partc VALUES LESS THAN (10),
18077 PARTITION partd VALUES LESS THAN (2147483646));
18078 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18079 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18080 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18081 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
18082 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18083 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18084 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18085 # Start usability test (inc/partition_check.inc)
18087 SHOW CREATE TABLE t1;
18089 t1 CREATE TABLE `t1` (
18090 `f_int1` int(11) DEFAULT NULL,
18091 `f_int2` mediumint(9) DEFAULT NULL,
18092 `f_char1` char(20) DEFAULT NULL,
18093 `f_char2` char(20) DEFAULT NULL,
18094 `f_charbig` varchar(1000) DEFAULT NULL,
18095 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
18096 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
18097 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
18098 SUBPARTITION BY HASH (f_int1)
18100 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
18101 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
18102 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
18103 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
18105 # check prerequisites-1 success: 1
18106 # check COUNT(*) success: 1
18107 # check MIN/MAX(f_int1) success: 1
18108 # check MIN/MAX(f_int2) success: 1
18109 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18110 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18111 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18112 WHERE f_int1 IN (2,3);
18113 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
18114 # check prerequisites-3 success: 1
18115 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
18116 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18117 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18118 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18119 WHERE f_int1 IN (2,3);
18120 DELETE FROM t1 WHERE f_charbig = 'delete me';
18121 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18122 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18123 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18124 WHERE f_int1 IN (2,3);
18125 DELETE FROM t1 WHERE f_charbig = 'delete me';
18126 # check read via f_int1 success: 1
18127 # check read via f_int2 success: 1
18129 # check multiple-1 success: 1
18130 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18132 # check multiple-2 success: 1
18133 INSERT INTO t1 SELECT * FROM t0_template
18134 WHERE MOD(f_int1,3) = 0;
18136 # check multiple-3 success: 1
18137 UPDATE t1 SET f_int1 = f_int1 + @max_row
18138 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18139 AND @max_row_div2 + @max_row_div4;
18141 # check multiple-4 success: 1
18143 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18144 AND @max_row_div2 + @max_row_div4 + @max_row;
18146 # check multiple-5 success: 1
18147 SELECT COUNT(*) INTO @try_count FROM t0_template
18148 WHERE MOD(f_int1,3) = 0
18149 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18150 SELECT COUNT(*) INTO @clash_count
18151 FROM t1 INNER JOIN t0_template USING(f_int1)
18152 WHERE MOD(f_int1,3) = 0
18153 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18154 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18156 SET f_int1 = @cur_value , f_int2 = @cur_value,
18157 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18158 f_charbig = '#SINGLE#';
18160 # check single-1 success: 1
18161 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18163 SET f_int1 = @cur_value , f_int2 = @cur_value,
18164 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18165 f_charbig = '#SINGLE#';
18167 # check single-2 success: 1
18168 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18169 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18170 UPDATE t1 SET f_int1 = @cur_value2
18171 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18173 # check single-3 success: 1
18174 SET @cur_value1= -1;
18175 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18176 UPDATE t1 SET f_int1 = @cur_value1
18177 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18179 # check single-4 success: 1
18180 SELECT MAX(f_int1) INTO @cur_value FROM t1;
18181 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18183 # check single-5 success: 1
18184 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18186 # check single-6 success: 1
18187 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18189 Warning 1264 Out of range value for column 'f_int2' at row 1
18191 # check single-7 success: 1
18192 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
18193 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18194 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18195 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18196 f_charbig = '#NULL#';
18198 SET f_int1 = NULL , f_int2 = -@max_row,
18199 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18200 f_charbig = '#NULL#';
18201 # check null success: 1
18203 # check null-1 success: 1
18204 UPDATE t1 SET f_int1 = -@max_row
18205 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18206 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18208 # check null-2 success: 1
18209 UPDATE t1 SET f_int1 = NULL
18210 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18211 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18213 # check null-3 success: 1
18215 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18216 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18218 # check null-4 success: 1
18220 WHERE f_int1 = 0 AND f_int2 = 0
18221 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18222 AND f_charbig = '#NULL#';
18223 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18224 SELECT f_int1, f_int1, '', '', 'was inserted'
18225 FROM t0_template source_tab
18226 WHERE MOD(f_int1,3) = 0
18227 AND f_int1 BETWEEN @max_row_div2 AND @max_row
18229 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
18230 f_int2 = 2 * @max_row + source_tab.f_int1,
18231 f_charbig = 'was updated';
18233 # check unique-1-a success: 1
18235 # check unique-1-b success: 1
18236 DELETE FROM t1 WHERE f_charbig = 'was inserted';
18237 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18238 f_int2 = CAST(f_char1 AS SIGNED INT),
18239 f_charbig = CONCAT('===',f_char1,'===')
18240 WHERE f_charbig = 'was updated';
18241 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18242 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
18243 FROM t0_template source_tab
18244 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18246 # check replace success: 1
18248 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
18250 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
18251 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
18252 UPDATE t1 SET f_int2 = f_int1,
18253 f_char1 = CAST(f_int1 AS CHAR),
18254 f_char2 = CAST(f_int1 AS CHAR),
18255 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
18256 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
18258 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18259 SELECT f_int1, f_int1, '', '', 'was inserted'
18260 FROM t0_template source_tab
18261 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18263 # check transactions-1 success: 1
18266 # check transactions-2 success: 1
18269 # check transactions-3 success: 1
18270 DELETE FROM t1 WHERE f_charbig = 'was inserted';
18274 # check transactions-4 success: 1
18275 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18276 SELECT f_int1, f_int1, '', '', 'was inserted'
18277 FROM t0_template source_tab
18278 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18280 # check transactions-5 success: 1
18283 # check transactions-6 success: 1
18284 # INFO: Storage engine used for t1 seems to be transactional.
18287 # check transactions-7 success: 1
18288 DELETE FROM t1 WHERE f_charbig = 'was inserted';
18290 SET @@session.sql_mode = 'traditional';
18291 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18292 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18293 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18294 '', '', 'was inserted' FROM t0_template
18295 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18296 ERROR 22012: Division by 0
18299 # check transactions-8 success: 1
18300 # INFO: Storage engine used for t1 seems to be able to revert
18301 # changes made by the failing statement.
18302 SET @@session.sql_mode = '';
18304 DELETE FROM t1 WHERE f_charbig = 'was inserted';
18306 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18308 # check special-1 success: 1
18309 UPDATE t1 SET f_charbig = '';
18311 # check special-2 success: 1
18312 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18313 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18314 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18315 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18316 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18317 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18318 'just inserted' FROM t0_template
18319 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18320 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18322 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18323 f_charbig = 'updated by trigger'
18324 WHERE f_int1 = new.f_int1;
18326 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18327 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18328 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18330 # check trigger-1 success: 1
18331 DROP TRIGGER trg_1;
18332 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18333 f_int2 = CAST(f_char1 AS SIGNED INT),
18334 f_charbig = 'just inserted'
18335 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18337 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18338 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18339 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18340 'just inserted' FROM t0_template
18341 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18342 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18344 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18345 f_charbig = 'updated by trigger'
18346 WHERE f_int1 = new.f_int1;
18348 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18349 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18350 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18352 # check trigger-2 success: 1
18353 DROP TRIGGER trg_1;
18354 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18355 f_int2 = CAST(f_char1 AS SIGNED INT),
18356 f_charbig = 'just inserted'
18357 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18359 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18360 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18361 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18362 'just inserted' FROM t0_template
18363 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18364 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18366 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18367 f_charbig = 'updated by trigger'
18368 WHERE f_int1 = new.f_int1;
18370 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18371 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18373 # check trigger-3 success: 1
18374 DROP TRIGGER trg_1;
18375 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18376 f_int2 = CAST(f_char1 AS SIGNED INT),
18377 f_charbig = 'just inserted'
18378 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18380 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18381 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18382 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18383 'just inserted' FROM t0_template
18384 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18385 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18387 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18388 f_charbig = 'updated by trigger'
18389 WHERE f_int1 = - old.f_int1;
18391 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18392 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18394 # check trigger-4 success: 1
18395 DROP TRIGGER trg_1;
18396 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18397 f_int2 = CAST(f_char1 AS SIGNED INT),
18398 f_charbig = 'just inserted'
18399 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18401 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18402 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18403 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18404 'just inserted' FROM t0_template
18405 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18406 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18408 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18409 f_charbig = 'updated by trigger'
18410 WHERE f_int1 = new.f_int1;
18412 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18413 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18415 # check trigger-5 success: 1
18416 DROP TRIGGER trg_1;
18417 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18418 f_int2 = CAST(f_char1 AS SIGNED INT),
18419 f_charbig = 'just inserted'
18420 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18422 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18423 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18424 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18425 'just inserted' FROM t0_template
18426 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18427 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18429 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18430 f_charbig = 'updated by trigger'
18431 WHERE f_int1 = - old.f_int1;
18433 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18434 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18436 # check trigger-6 success: 1
18437 DROP TRIGGER trg_1;
18438 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18439 f_int2 = CAST(f_char1 AS SIGNED INT),
18440 f_charbig = 'just inserted'
18441 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18443 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18444 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18445 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18446 'just inserted' FROM t0_template
18447 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18448 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18450 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18451 f_charbig = 'updated by trigger'
18452 WHERE f_int1 = - old.f_int1;
18455 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18457 # check trigger-7 success: 1
18458 DROP TRIGGER trg_1;
18459 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18460 f_int2 = CAST(f_char1 AS SIGNED INT),
18461 f_charbig = 'just inserted'
18462 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18464 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18465 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18466 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18467 'just inserted' FROM t0_template
18468 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18469 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18471 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18472 f_charbig = 'updated by trigger'
18473 WHERE f_int1 = - old.f_int1;
18476 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18478 # check trigger-8 success: 1
18479 DROP TRIGGER trg_1;
18480 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18481 f_int2 = CAST(f_char1 AS SIGNED INT),
18482 f_charbig = 'just inserted'
18483 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18485 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18487 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18488 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18490 SET new.f_int1 = old.f_int1 + @max_row,
18491 new.f_int2 = old.f_int2 - @max_row,
18492 new.f_charbig = '####updated per update trigger####';
18495 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18496 f_charbig = '####updated per update statement itself####';
18498 # check trigger-9 success: 1
18499 DROP TRIGGER trg_2;
18500 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18501 f_int2 = CAST(f_char1 AS SIGNED INT),
18502 f_charbig = CONCAT('===',f_char1,'===');
18503 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18505 SET new.f_int1 = new.f_int1 + @max_row,
18506 new.f_int2 = new.f_int2 - @max_row,
18507 new.f_charbig = '####updated per update trigger####';
18510 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18511 f_charbig = '####updated per update statement itself####';
18513 # check trigger-10 success: 1
18514 DROP TRIGGER trg_2;
18515 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18516 f_int2 = CAST(f_char1 AS SIGNED INT),
18517 f_charbig = CONCAT('===',f_char1,'===');
18518 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18520 SET new.f_int1 = @my_max1 + @counter,
18521 new.f_int2 = @my_min2 - @counter,
18522 new.f_charbig = '####updated per insert trigger####';
18523 SET @counter = @counter + 1;
18526 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18527 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18528 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18529 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18530 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18532 DROP TRIGGER trg_3;
18534 # check trigger-11 success: 1
18536 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18537 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18538 AND f_charbig = '####updated per insert trigger####';
18539 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18541 SET new.f_int1 = @my_max1 + @counter,
18542 new.f_int2 = @my_min2 - @counter,
18543 new.f_charbig = '####updated per insert trigger####';
18544 SET @counter = @counter + 1;
18547 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18548 INSERT INTO t1 (f_char1, f_char2, f_charbig)
18549 SELECT CAST(f_int1 AS CHAR),
18550 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18551 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18553 DROP TRIGGER trg_3;
18555 # check trigger-12 success: 1
18557 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18558 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18559 AND f_charbig = '####updated per insert trigger####';
18561 Table Op Msg_type Msg_text
18562 test.t1 analyze status OK
18563 CHECK TABLE t1 EXTENDED;
18564 Table Op Msg_type Msg_text
18565 test.t1 check status OK
18566 CHECKSUM TABLE t1 EXTENDED;
18568 test.t1 <some_value>
18570 Table Op Msg_type Msg_text
18571 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
18572 test.t1 optimize status OK
18573 # check layout success: 1
18574 REPAIR TABLE t1 EXTENDED;
18575 Table Op Msg_type Msg_text
18576 test.t1 repair note The storage engine for the table doesn't support repair
18577 # check layout success: 1
18580 # check TRUNCATE success: 1
18581 # check layout success: 1
18582 # End usability test (inc/partition_check.inc)
18589 f_charbig VARCHAR(1000)
18590 , UNIQUE INDEX uidx1 (f_int2,f_int1)
18592 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
18593 (PARTITION part1 VALUES LESS THAN (0)
18594 (SUBPARTITION subpart11, SUBPARTITION subpart12),
18595 PARTITION part2 VALUES LESS THAN (5)
18596 (SUBPARTITION subpart21, SUBPARTITION subpart22),
18597 PARTITION part3 VALUES LESS THAN (10)
18598 (SUBPARTITION subpart31, SUBPARTITION subpart32),
18599 PARTITION part4 VALUES LESS THAN (2147483646)
18600 (SUBPARTITION subpart41, SUBPARTITION subpart42));
18601 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18602 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18603 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18604 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
18605 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18606 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18607 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18608 # Start usability test (inc/partition_check.inc)
18610 SHOW CREATE TABLE t1;
18612 t1 CREATE TABLE `t1` (
18613 `f_int1` int(11) DEFAULT NULL,
18614 `f_int2` mediumint(9) DEFAULT NULL,
18615 `f_char1` char(20) DEFAULT NULL,
18616 `f_char2` char(20) DEFAULT NULL,
18617 `f_charbig` varchar(1000) DEFAULT NULL,
18618 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
18619 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
18620 /*!50100 PARTITION BY RANGE (f_int1)
18621 SUBPARTITION BY KEY (f_int1)
18622 (PARTITION part1 VALUES LESS THAN (0)
18623 (SUBPARTITION subpart11 ENGINE = InnoDB,
18624 SUBPARTITION subpart12 ENGINE = InnoDB),
18625 PARTITION part2 VALUES LESS THAN (5)
18626 (SUBPARTITION subpart21 ENGINE = InnoDB,
18627 SUBPARTITION subpart22 ENGINE = InnoDB),
18628 PARTITION part3 VALUES LESS THAN (10)
18629 (SUBPARTITION subpart31 ENGINE = InnoDB,
18630 SUBPARTITION subpart32 ENGINE = InnoDB),
18631 PARTITION part4 VALUES LESS THAN (2147483646)
18632 (SUBPARTITION subpart41 ENGINE = InnoDB,
18633 SUBPARTITION subpart42 ENGINE = InnoDB)) */
18635 # check prerequisites-1 success: 1
18636 # check COUNT(*) success: 1
18637 # check MIN/MAX(f_int1) success: 1
18638 # check MIN/MAX(f_int2) success: 1
18639 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18640 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18641 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18642 WHERE f_int1 IN (2,3);
18643 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
18644 # check prerequisites-3 success: 1
18645 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
18646 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18647 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18648 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18649 WHERE f_int1 IN (2,3);
18650 DELETE FROM t1 WHERE f_charbig = 'delete me';
18651 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18652 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18653 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18654 WHERE f_int1 IN (2,3);
18655 DELETE FROM t1 WHERE f_charbig = 'delete me';
18656 # check read via f_int1 success: 1
18657 # check read via f_int2 success: 1
18659 # check multiple-1 success: 1
18660 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18662 # check multiple-2 success: 1
18663 INSERT INTO t1 SELECT * FROM t0_template
18664 WHERE MOD(f_int1,3) = 0;
18666 # check multiple-3 success: 1
18667 UPDATE t1 SET f_int1 = f_int1 + @max_row
18668 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18669 AND @max_row_div2 + @max_row_div4;
18671 # check multiple-4 success: 1
18673 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18674 AND @max_row_div2 + @max_row_div4 + @max_row;
18676 # check multiple-5 success: 1
18677 SELECT COUNT(*) INTO @try_count FROM t0_template
18678 WHERE MOD(f_int1,3) = 0
18679 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18680 SELECT COUNT(*) INTO @clash_count
18681 FROM t1 INNER JOIN t0_template USING(f_int1)
18682 WHERE MOD(f_int1,3) = 0
18683 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18684 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18686 SET f_int1 = @cur_value , f_int2 = @cur_value,
18687 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18688 f_charbig = '#SINGLE#';
18690 # check single-1 success: 1
18691 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18693 SET f_int1 = @cur_value , f_int2 = @cur_value,
18694 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18695 f_charbig = '#SINGLE#';
18697 # check single-2 success: 1
18698 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18699 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18700 UPDATE t1 SET f_int1 = @cur_value2
18701 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18703 # check single-3 success: 1
18704 SET @cur_value1= -1;
18705 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18706 UPDATE t1 SET f_int1 = @cur_value1
18707 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18709 # check single-4 success: 1
18710 SELECT MAX(f_int1) INTO @cur_value FROM t1;
18711 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18713 # check single-5 success: 1
18714 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18716 # check single-6 success: 1
18717 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18718 ERROR HY000: Table has no partition for value 2147483647
18719 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18720 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18721 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18722 f_charbig = '#NULL#';
18724 SET f_int1 = NULL , f_int2 = -@max_row,
18725 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18726 f_charbig = '#NULL#';
18727 # check null success: 1
18729 # check null-1 success: 1
18730 UPDATE t1 SET f_int1 = -@max_row
18731 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18732 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18734 # check null-2 success: 1
18735 UPDATE t1 SET f_int1 = NULL
18736 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18737 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18739 # check null-3 success: 1
18741 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18742 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18744 # check null-4 success: 1
18746 WHERE f_int1 = 0 AND f_int2 = 0
18747 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18748 AND f_charbig = '#NULL#';
18749 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18750 SELECT f_int1, f_int1, '', '', 'was inserted'
18751 FROM t0_template source_tab
18752 WHERE MOD(f_int1,3) = 0
18753 AND f_int1 BETWEEN @max_row_div2 AND @max_row
18755 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
18756 f_int2 = 2 * @max_row + source_tab.f_int1,
18757 f_charbig = 'was updated';
18759 # check unique-1-a success: 1
18761 # check unique-1-b success: 1
18762 DELETE FROM t1 WHERE f_charbig = 'was inserted';
18763 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18764 f_int2 = CAST(f_char1 AS SIGNED INT),
18765 f_charbig = CONCAT('===',f_char1,'===')
18766 WHERE f_charbig = 'was updated';
18767 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18768 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
18769 FROM t0_template source_tab
18770 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18772 # check replace success: 1
18774 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
18776 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
18777 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
18778 UPDATE t1 SET f_int2 = f_int1,
18779 f_char1 = CAST(f_int1 AS CHAR),
18780 f_char2 = CAST(f_int1 AS CHAR),
18781 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
18782 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
18784 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18785 SELECT f_int1, f_int1, '', '', 'was inserted'
18786 FROM t0_template source_tab
18787 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18789 # check transactions-1 success: 1
18792 # check transactions-2 success: 1
18795 # check transactions-3 success: 1
18796 DELETE FROM t1 WHERE f_charbig = 'was inserted';
18800 # check transactions-4 success: 1
18801 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18802 SELECT f_int1, f_int1, '', '', 'was inserted'
18803 FROM t0_template source_tab
18804 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18806 # check transactions-5 success: 1
18809 # check transactions-6 success: 1
18810 # INFO: Storage engine used for t1 seems to be transactional.
18813 # check transactions-7 success: 1
18814 DELETE FROM t1 WHERE f_charbig = 'was inserted';
18816 SET @@session.sql_mode = 'traditional';
18817 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18818 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18819 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18820 '', '', 'was inserted' FROM t0_template
18821 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18822 ERROR 22012: Division by 0
18825 # check transactions-8 success: 1
18826 # INFO: Storage engine used for t1 seems to be able to revert
18827 # changes made by the failing statement.
18828 SET @@session.sql_mode = '';
18830 DELETE FROM t1 WHERE f_charbig = 'was inserted';
18832 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18834 # check special-1 success: 1
18835 UPDATE t1 SET f_charbig = '';
18837 # check special-2 success: 1
18838 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18839 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18840 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18841 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18842 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18843 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18844 'just inserted' FROM t0_template
18845 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18846 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18848 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18849 f_charbig = 'updated by trigger'
18850 WHERE f_int1 = new.f_int1;
18852 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18853 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18854 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18856 # check trigger-1 success: 1
18857 DROP TRIGGER trg_1;
18858 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18859 f_int2 = CAST(f_char1 AS SIGNED INT),
18860 f_charbig = 'just inserted'
18861 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18863 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18864 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18865 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18866 'just inserted' FROM t0_template
18867 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18868 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18870 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18871 f_charbig = 'updated by trigger'
18872 WHERE f_int1 = new.f_int1;
18874 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18875 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18876 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18878 # check trigger-2 success: 1
18879 DROP TRIGGER trg_1;
18880 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18881 f_int2 = CAST(f_char1 AS SIGNED INT),
18882 f_charbig = 'just inserted'
18883 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18885 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18886 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18887 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18888 'just inserted' FROM t0_template
18889 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18890 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18892 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18893 f_charbig = 'updated by trigger'
18894 WHERE f_int1 = new.f_int1;
18896 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18897 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18899 # check trigger-3 success: 1
18900 DROP TRIGGER trg_1;
18901 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18902 f_int2 = CAST(f_char1 AS SIGNED INT),
18903 f_charbig = 'just inserted'
18904 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18906 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18907 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18908 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18909 'just inserted' FROM t0_template
18910 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18911 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18913 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18914 f_charbig = 'updated by trigger'
18915 WHERE f_int1 = - old.f_int1;
18917 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18918 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18920 # check trigger-4 success: 1
18921 DROP TRIGGER trg_1;
18922 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18923 f_int2 = CAST(f_char1 AS SIGNED INT),
18924 f_charbig = 'just inserted'
18925 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18927 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18928 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18929 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18930 'just inserted' FROM t0_template
18931 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18932 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18934 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18935 f_charbig = 'updated by trigger'
18936 WHERE f_int1 = new.f_int1;
18938 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18939 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18941 # check trigger-5 success: 1
18942 DROP TRIGGER trg_1;
18943 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18944 f_int2 = CAST(f_char1 AS SIGNED INT),
18945 f_charbig = 'just inserted'
18946 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18948 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18949 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18950 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18951 'just inserted' FROM t0_template
18952 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18953 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18955 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18956 f_charbig = 'updated by trigger'
18957 WHERE f_int1 = - old.f_int1;
18959 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18960 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18962 # check trigger-6 success: 1
18963 DROP TRIGGER trg_1;
18964 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18965 f_int2 = CAST(f_char1 AS SIGNED INT),
18966 f_charbig = 'just inserted'
18967 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18969 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18970 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18971 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18972 'just inserted' FROM t0_template
18973 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18974 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18976 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18977 f_charbig = 'updated by trigger'
18978 WHERE f_int1 = - old.f_int1;
18981 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18983 # check trigger-7 success: 1
18984 DROP TRIGGER trg_1;
18985 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18986 f_int2 = CAST(f_char1 AS SIGNED INT),
18987 f_charbig = 'just inserted'
18988 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18990 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18991 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18992 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18993 'just inserted' FROM t0_template
18994 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18995 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18997 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18998 f_charbig = 'updated by trigger'
18999 WHERE f_int1 = - old.f_int1;
19002 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19004 # check trigger-8 success: 1
19005 DROP TRIGGER trg_1;
19006 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19007 f_int2 = CAST(f_char1 AS SIGNED INT),
19008 f_charbig = 'just inserted'
19009 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19011 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19013 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19014 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19016 SET new.f_int1 = old.f_int1 + @max_row,
19017 new.f_int2 = old.f_int2 - @max_row,
19018 new.f_charbig = '####updated per update trigger####';
19021 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19022 f_charbig = '####updated per update statement itself####';
19024 # check trigger-9 success: 1
19025 DROP TRIGGER trg_2;
19026 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19027 f_int2 = CAST(f_char1 AS SIGNED INT),
19028 f_charbig = CONCAT('===',f_char1,'===');
19029 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19031 SET new.f_int1 = new.f_int1 + @max_row,
19032 new.f_int2 = new.f_int2 - @max_row,
19033 new.f_charbig = '####updated per update trigger####';
19036 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19037 f_charbig = '####updated per update statement itself####';
19039 # check trigger-10 success: 1
19040 DROP TRIGGER trg_2;
19041 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19042 f_int2 = CAST(f_char1 AS SIGNED INT),
19043 f_charbig = CONCAT('===',f_char1,'===');
19044 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19046 SET new.f_int1 = @my_max1 + @counter,
19047 new.f_int2 = @my_min2 - @counter,
19048 new.f_charbig = '####updated per insert trigger####';
19049 SET @counter = @counter + 1;
19052 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19053 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19054 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19055 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19056 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19058 DROP TRIGGER trg_3;
19060 # check trigger-11 success: 1
19062 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19063 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19064 AND f_charbig = '####updated per insert trigger####';
19065 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19067 SET new.f_int1 = @my_max1 + @counter,
19068 new.f_int2 = @my_min2 - @counter,
19069 new.f_charbig = '####updated per insert trigger####';
19070 SET @counter = @counter + 1;
19073 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19074 INSERT INTO t1 (f_char1, f_char2, f_charbig)
19075 SELECT CAST(f_int1 AS CHAR),
19076 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19077 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19079 DROP TRIGGER trg_3;
19081 # check trigger-12 success: 1
19083 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19084 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19085 AND f_charbig = '####updated per insert trigger####';
19087 Table Op Msg_type Msg_text
19088 test.t1 analyze status OK
19089 CHECK TABLE t1 EXTENDED;
19090 Table Op Msg_type Msg_text
19091 test.t1 check status OK
19092 CHECKSUM TABLE t1 EXTENDED;
19094 test.t1 <some_value>
19096 Table Op Msg_type Msg_text
19097 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
19098 test.t1 optimize status OK
19099 # check layout success: 1
19100 REPAIR TABLE t1 EXTENDED;
19101 Table Op Msg_type Msg_text
19102 test.t1 repair note The storage engine for the table doesn't support repair
19103 # check layout success: 1
19106 # check TRUNCATE success: 1
19107 # check layout success: 1
19108 # End usability test (inc/partition_check.inc)
19115 f_charbig VARCHAR(1000)
19116 , UNIQUE INDEX uidx1 (f_int2,f_int1)
19118 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
19119 (PARTITION part1 VALUES IN (0)
19120 (SUBPARTITION sp11, SUBPARTITION sp12),
19121 PARTITION part2 VALUES IN (1)
19122 (SUBPARTITION sp21, SUBPARTITION sp22),
19123 PARTITION part3 VALUES IN (2)
19124 (SUBPARTITION sp31, SUBPARTITION sp32),
19125 PARTITION part4 VALUES IN (NULL)
19126 (SUBPARTITION sp41, SUBPARTITION sp42));
19127 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19128 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19129 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19130 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
19131 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19132 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19133 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19134 # Start usability test (inc/partition_check.inc)
19136 SHOW CREATE TABLE t1;
19138 t1 CREATE TABLE `t1` (
19139 `f_int1` int(11) DEFAULT NULL,
19140 `f_int2` mediumint(9) DEFAULT NULL,
19141 `f_char1` char(20) DEFAULT NULL,
19142 `f_char2` char(20) DEFAULT NULL,
19143 `f_charbig` varchar(1000) DEFAULT NULL,
19144 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
19145 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
19146 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
19147 SUBPARTITION BY HASH (f_int1 + 1)
19148 (PARTITION part1 VALUES IN (0)
19149 (SUBPARTITION sp11 ENGINE = InnoDB,
19150 SUBPARTITION sp12 ENGINE = InnoDB),
19151 PARTITION part2 VALUES IN (1)
19152 (SUBPARTITION sp21 ENGINE = InnoDB,
19153 SUBPARTITION sp22 ENGINE = InnoDB),
19154 PARTITION part3 VALUES IN (2)
19155 (SUBPARTITION sp31 ENGINE = InnoDB,
19156 SUBPARTITION sp32 ENGINE = InnoDB),
19157 PARTITION part4 VALUES IN (NULL)
19158 (SUBPARTITION sp41 ENGINE = InnoDB,
19159 SUBPARTITION sp42 ENGINE = InnoDB)) */
19161 # check prerequisites-1 success: 1
19162 # check COUNT(*) success: 1
19163 # check MIN/MAX(f_int1) success: 1
19164 # check MIN/MAX(f_int2) success: 1
19165 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19166 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19167 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19168 WHERE f_int1 IN (2,3);
19169 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
19170 # check prerequisites-3 success: 1
19171 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
19172 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19173 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19174 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19175 WHERE f_int1 IN (2,3);
19176 DELETE FROM t1 WHERE f_charbig = 'delete me';
19177 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19178 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19179 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19180 WHERE f_int1 IN (2,3);
19181 DELETE FROM t1 WHERE f_charbig = 'delete me';
19182 # check read via f_int1 success: 1
19183 # check read via f_int2 success: 1
19185 # check multiple-1 success: 1
19186 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19188 # check multiple-2 success: 1
19189 INSERT INTO t1 SELECT * FROM t0_template
19190 WHERE MOD(f_int1,3) = 0;
19192 # check multiple-3 success: 1
19193 UPDATE t1 SET f_int1 = f_int1 + @max_row
19194 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19195 AND @max_row_div2 + @max_row_div4;
19197 # check multiple-4 success: 1
19199 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19200 AND @max_row_div2 + @max_row_div4 + @max_row;
19202 # check multiple-5 success: 1
19203 SELECT COUNT(*) INTO @try_count FROM t0_template
19204 WHERE MOD(f_int1,3) = 0
19205 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19206 SELECT COUNT(*) INTO @clash_count
19207 FROM t1 INNER JOIN t0_template USING(f_int1)
19208 WHERE MOD(f_int1,3) = 0
19209 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19210 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19212 SET f_int1 = @cur_value , f_int2 = @cur_value,
19213 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19214 f_charbig = '#SINGLE#';
19216 # check single-1 success: 1
19217 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19219 SET f_int1 = @cur_value , f_int2 = @cur_value,
19220 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19221 f_charbig = '#SINGLE#';
19223 # check single-2 success: 1
19224 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19225 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19226 UPDATE t1 SET f_int1 = @cur_value2
19227 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19229 # check single-3 success: 1
19230 SET @cur_value1= -1;
19231 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19232 UPDATE t1 SET f_int1 = @cur_value1
19233 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19235 # check single-4 success: 1
19236 SELECT MAX(f_int1) INTO @cur_value FROM t1;
19237 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19239 # check single-5 success: 1
19240 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19242 # check single-6 success: 1
19243 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19245 Warning 1264 Out of range value for column 'f_int2' at row 1
19247 # check single-7 success: 1
19248 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19249 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19250 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19251 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19252 f_charbig = '#NULL#';
19254 SET f_int1 = NULL , f_int2 = -@max_row,
19255 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19256 f_charbig = '#NULL#';
19257 # check null success: 1
19259 # check null-1 success: 1
19260 UPDATE t1 SET f_int1 = -@max_row
19261 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19262 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19264 # check null-2 success: 1
19265 UPDATE t1 SET f_int1 = NULL
19266 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19267 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19269 # check null-3 success: 1
19271 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19272 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19274 # check null-4 success: 1
19276 WHERE f_int1 = 0 AND f_int2 = 0
19277 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19278 AND f_charbig = '#NULL#';
19279 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19280 SELECT f_int1, f_int1, '', '', 'was inserted'
19281 FROM t0_template source_tab
19282 WHERE MOD(f_int1,3) = 0
19283 AND f_int1 BETWEEN @max_row_div2 AND @max_row
19285 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
19286 f_int2 = 2 * @max_row + source_tab.f_int1,
19287 f_charbig = 'was updated';
19289 # check unique-1-a success: 1
19291 # check unique-1-b success: 1
19292 DELETE FROM t1 WHERE f_charbig = 'was inserted';
19293 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19294 f_int2 = CAST(f_char1 AS SIGNED INT),
19295 f_charbig = CONCAT('===',f_char1,'===')
19296 WHERE f_charbig = 'was updated';
19297 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19298 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
19299 FROM t0_template source_tab
19300 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19302 # check replace success: 1
19304 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
19306 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
19307 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
19308 UPDATE t1 SET f_int2 = f_int1,
19309 f_char1 = CAST(f_int1 AS CHAR),
19310 f_char2 = CAST(f_int1 AS CHAR),
19311 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
19312 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
19314 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19315 SELECT f_int1, f_int1, '', '', 'was inserted'
19316 FROM t0_template source_tab
19317 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19319 # check transactions-1 success: 1
19322 # check transactions-2 success: 1
19325 # check transactions-3 success: 1
19326 DELETE FROM t1 WHERE f_charbig = 'was inserted';
19330 # check transactions-4 success: 1
19331 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19332 SELECT f_int1, f_int1, '', '', 'was inserted'
19333 FROM t0_template source_tab
19334 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19336 # check transactions-5 success: 1
19339 # check transactions-6 success: 1
19340 # INFO: Storage engine used for t1 seems to be transactional.
19343 # check transactions-7 success: 1
19344 DELETE FROM t1 WHERE f_charbig = 'was inserted';
19346 SET @@session.sql_mode = 'traditional';
19347 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19348 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19349 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19350 '', '', 'was inserted' FROM t0_template
19351 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19352 ERROR 22012: Division by 0
19355 # check transactions-8 success: 1
19356 # INFO: Storage engine used for t1 seems to be able to revert
19357 # changes made by the failing statement.
19358 SET @@session.sql_mode = '';
19360 DELETE FROM t1 WHERE f_charbig = 'was inserted';
19362 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19364 # check special-1 success: 1
19365 UPDATE t1 SET f_charbig = '';
19367 # check special-2 success: 1
19368 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19369 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19370 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19371 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19372 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19373 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19374 'just inserted' FROM t0_template
19375 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19376 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19378 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19379 f_charbig = 'updated by trigger'
19380 WHERE f_int1 = new.f_int1;
19382 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19383 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19384 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19386 # check trigger-1 success: 1
19387 DROP TRIGGER trg_1;
19388 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19389 f_int2 = CAST(f_char1 AS SIGNED INT),
19390 f_charbig = 'just inserted'
19391 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19393 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19394 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19395 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19396 'just inserted' FROM t0_template
19397 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19398 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19400 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19401 f_charbig = 'updated by trigger'
19402 WHERE f_int1 = new.f_int1;
19404 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19405 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19406 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19408 # check trigger-2 success: 1
19409 DROP TRIGGER trg_1;
19410 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19411 f_int2 = CAST(f_char1 AS SIGNED INT),
19412 f_charbig = 'just inserted'
19413 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19415 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19416 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19417 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19418 'just inserted' FROM t0_template
19419 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19420 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19422 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19423 f_charbig = 'updated by trigger'
19424 WHERE f_int1 = new.f_int1;
19426 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19427 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19429 # check trigger-3 success: 1
19430 DROP TRIGGER trg_1;
19431 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19432 f_int2 = CAST(f_char1 AS SIGNED INT),
19433 f_charbig = 'just inserted'
19434 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19436 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19437 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19438 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19439 'just inserted' FROM t0_template
19440 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19441 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19443 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19444 f_charbig = 'updated by trigger'
19445 WHERE f_int1 = - old.f_int1;
19447 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19448 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19450 # check trigger-4 success: 1
19451 DROP TRIGGER trg_1;
19452 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19453 f_int2 = CAST(f_char1 AS SIGNED INT),
19454 f_charbig = 'just inserted'
19455 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19457 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19458 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19459 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19460 'just inserted' FROM t0_template
19461 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19462 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19464 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19465 f_charbig = 'updated by trigger'
19466 WHERE f_int1 = new.f_int1;
19468 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19469 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19471 # check trigger-5 success: 1
19472 DROP TRIGGER trg_1;
19473 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19474 f_int2 = CAST(f_char1 AS SIGNED INT),
19475 f_charbig = 'just inserted'
19476 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19478 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19479 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19480 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19481 'just inserted' FROM t0_template
19482 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19483 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19485 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19486 f_charbig = 'updated by trigger'
19487 WHERE f_int1 = - old.f_int1;
19489 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19490 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19492 # check trigger-6 success: 1
19493 DROP TRIGGER trg_1;
19494 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19495 f_int2 = CAST(f_char1 AS SIGNED INT),
19496 f_charbig = 'just inserted'
19497 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19499 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19500 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19501 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19502 'just inserted' FROM t0_template
19503 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19504 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19506 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19507 f_charbig = 'updated by trigger'
19508 WHERE f_int1 = - old.f_int1;
19511 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19513 # check trigger-7 success: 1
19514 DROP TRIGGER trg_1;
19515 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19516 f_int2 = CAST(f_char1 AS SIGNED INT),
19517 f_charbig = 'just inserted'
19518 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19520 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19521 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19522 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19523 'just inserted' FROM t0_template
19524 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19525 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19527 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19528 f_charbig = 'updated by trigger'
19529 WHERE f_int1 = - old.f_int1;
19532 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19534 # check trigger-8 success: 1
19535 DROP TRIGGER trg_1;
19536 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19537 f_int2 = CAST(f_char1 AS SIGNED INT),
19538 f_charbig = 'just inserted'
19539 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19541 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19543 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19544 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19546 SET new.f_int1 = old.f_int1 + @max_row,
19547 new.f_int2 = old.f_int2 - @max_row,
19548 new.f_charbig = '####updated per update trigger####';
19551 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19552 f_charbig = '####updated per update statement itself####';
19554 # check trigger-9 success: 1
19555 DROP TRIGGER trg_2;
19556 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19557 f_int2 = CAST(f_char1 AS SIGNED INT),
19558 f_charbig = CONCAT('===',f_char1,'===');
19559 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19561 SET new.f_int1 = new.f_int1 + @max_row,
19562 new.f_int2 = new.f_int2 - @max_row,
19563 new.f_charbig = '####updated per update trigger####';
19566 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19567 f_charbig = '####updated per update statement itself####';
19569 # check trigger-10 success: 1
19570 DROP TRIGGER trg_2;
19571 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19572 f_int2 = CAST(f_char1 AS SIGNED INT),
19573 f_charbig = CONCAT('===',f_char1,'===');
19574 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19576 SET new.f_int1 = @my_max1 + @counter,
19577 new.f_int2 = @my_min2 - @counter,
19578 new.f_charbig = '####updated per insert trigger####';
19579 SET @counter = @counter + 1;
19582 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19583 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19584 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19585 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19586 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19588 DROP TRIGGER trg_3;
19590 # check trigger-11 success: 1
19592 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19593 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19594 AND f_charbig = '####updated per insert trigger####';
19595 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19597 SET new.f_int1 = @my_max1 + @counter,
19598 new.f_int2 = @my_min2 - @counter,
19599 new.f_charbig = '####updated per insert trigger####';
19600 SET @counter = @counter + 1;
19603 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19604 INSERT INTO t1 (f_char1, f_char2, f_charbig)
19605 SELECT CAST(f_int1 AS CHAR),
19606 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19607 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19609 DROP TRIGGER trg_3;
19611 # check trigger-12 success: 1
19613 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19614 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19615 AND f_charbig = '####updated per insert trigger####';
19617 Table Op Msg_type Msg_text
19618 test.t1 analyze status OK
19619 CHECK TABLE t1 EXTENDED;
19620 Table Op Msg_type Msg_text
19621 test.t1 check status OK
19622 CHECKSUM TABLE t1 EXTENDED;
19624 test.t1 <some_value>
19626 Table Op Msg_type Msg_text
19627 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
19628 test.t1 optimize status OK
19629 # check layout success: 1
19630 REPAIR TABLE t1 EXTENDED;
19631 Table Op Msg_type Msg_text
19632 test.t1 repair note The storage engine for the table doesn't support repair
19633 # check layout success: 1
19636 # check TRUNCATE success: 1
19637 # check layout success: 1
19638 # End usability test (inc/partition_check.inc)
19645 f_charbig VARCHAR(1000)
19646 , UNIQUE INDEX uidx1 (f_int2,f_int1)
19648 PARTITION BY LIST(ABS(MOD(f_int1,2)))
19649 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
19650 (PARTITION part1 VALUES IN (0),
19651 PARTITION part2 VALUES IN (1),
19652 PARTITION part3 VALUES IN (NULL));
19653 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19654 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19655 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19656 ALTER TABLE t1 MODIFY f_int2 MEDIUMINT;
19657 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19658 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19659 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19660 # Start usability test (inc/partition_check.inc)
19662 SHOW CREATE TABLE t1;
19664 t1 CREATE TABLE `t1` (
19665 `f_int1` int(11) DEFAULT NULL,
19666 `f_int2` mediumint(9) DEFAULT NULL,
19667 `f_char1` char(20) DEFAULT NULL,
19668 `f_char2` char(20) DEFAULT NULL,
19669 `f_charbig` varchar(1000) DEFAULT NULL,
19670 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
19671 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
19672 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
19673 SUBPARTITION BY KEY (f_int1)
19675 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
19676 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
19677 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
19679 # check prerequisites-1 success: 1
19680 # check COUNT(*) success: 1
19681 # check MIN/MAX(f_int1) success: 1
19682 # check MIN/MAX(f_int2) success: 1
19683 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19684 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19685 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19686 WHERE f_int1 IN (2,3);
19687 ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
19688 # check prerequisites-3 success: 1
19689 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
19690 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19691 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19692 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19693 WHERE f_int1 IN (2,3);
19694 DELETE FROM t1 WHERE f_charbig = 'delete me';
19695 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19696 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19697 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19698 WHERE f_int1 IN (2,3);
19699 DELETE FROM t1 WHERE f_charbig = 'delete me';
19700 # check read via f_int1 success: 1
19701 # check read via f_int2 success: 1
19703 # check multiple-1 success: 1
19704 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19706 # check multiple-2 success: 1
19707 INSERT INTO t1 SELECT * FROM t0_template
19708 WHERE MOD(f_int1,3) = 0;
19710 # check multiple-3 success: 1
19711 UPDATE t1 SET f_int1 = f_int1 + @max_row
19712 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19713 AND @max_row_div2 + @max_row_div4;
19715 # check multiple-4 success: 1
19717 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19718 AND @max_row_div2 + @max_row_div4 + @max_row;
19720 # check multiple-5 success: 1
19721 SELECT COUNT(*) INTO @try_count FROM t0_template
19722 WHERE MOD(f_int1,3) = 0
19723 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19724 SELECT COUNT(*) INTO @clash_count
19725 FROM t1 INNER JOIN t0_template USING(f_int1)
19726 WHERE MOD(f_int1,3) = 0
19727 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19728 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19730 SET f_int1 = @cur_value , f_int2 = @cur_value,
19731 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19732 f_charbig = '#SINGLE#';
19734 # check single-1 success: 1
19735 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19737 SET f_int1 = @cur_value , f_int2 = @cur_value,
19738 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19739 f_charbig = '#SINGLE#';
19741 # check single-2 success: 1
19742 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19743 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19744 UPDATE t1 SET f_int1 = @cur_value2
19745 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19747 # check single-3 success: 1
19748 SET @cur_value1= -1;
19749 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19750 UPDATE t1 SET f_int1 = @cur_value1
19751 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19753 # check single-4 success: 1
19754 SELECT MAX(f_int1) INTO @cur_value FROM t1;
19755 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19757 # check single-5 success: 1
19758 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19760 # check single-6 success: 1
19761 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19763 Warning 1264 Out of range value for column 'f_int2' at row 1
19765 # check single-7 success: 1
19766 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19767 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19768 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19769 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19770 f_charbig = '#NULL#';
19772 SET f_int1 = NULL , f_int2 = -@max_row,
19773 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19774 f_charbig = '#NULL#';
19775 # check null success: 1
19777 # check null-1 success: 1
19778 UPDATE t1 SET f_int1 = -@max_row
19779 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19780 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19782 # check null-2 success: 1
19783 UPDATE t1 SET f_int1 = NULL
19784 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19785 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19787 # check null-3 success: 1
19789 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19790 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19792 # check null-4 success: 1
19794 WHERE f_int1 = 0 AND f_int2 = 0
19795 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19796 AND f_charbig = '#NULL#';
19797 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19798 SELECT f_int1, f_int1, '', '', 'was inserted'
19799 FROM t0_template source_tab
19800 WHERE MOD(f_int1,3) = 0
19801 AND f_int1 BETWEEN @max_row_div2 AND @max_row
19803 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
19804 f_int2 = 2 * @max_row + source_tab.f_int1,
19805 f_charbig = 'was updated';
19807 # check unique-1-a success: 1
19809 # check unique-1-b success: 1
19810 DELETE FROM t1 WHERE f_charbig = 'was inserted';
19811 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19812 f_int2 = CAST(f_char1 AS SIGNED INT),
19813 f_charbig = CONCAT('===',f_char1,'===')
19814 WHERE f_charbig = 'was updated';
19815 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19816 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
19817 FROM t0_template source_tab
19818 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19820 # check replace success: 1
19822 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
19824 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
19825 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
19826 UPDATE t1 SET f_int2 = f_int1,
19827 f_char1 = CAST(f_int1 AS CHAR),
19828 f_char2 = CAST(f_int1 AS CHAR),
19829 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
19830 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
19832 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19833 SELECT f_int1, f_int1, '', '', 'was inserted'
19834 FROM t0_template source_tab
19835 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19837 # check transactions-1 success: 1
19840 # check transactions-2 success: 1
19843 # check transactions-3 success: 1
19844 DELETE FROM t1 WHERE f_charbig = 'was inserted';
19848 # check transactions-4 success: 1
19849 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19850 SELECT f_int1, f_int1, '', '', 'was inserted'
19851 FROM t0_template source_tab
19852 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19854 # check transactions-5 success: 1
19857 # check transactions-6 success: 1
19858 # INFO: Storage engine used for t1 seems to be transactional.
19861 # check transactions-7 success: 1
19862 DELETE FROM t1 WHERE f_charbig = 'was inserted';
19864 SET @@session.sql_mode = 'traditional';
19865 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19866 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19867 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19868 '', '', 'was inserted' FROM t0_template
19869 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19870 ERROR 22012: Division by 0
19873 # check transactions-8 success: 1
19874 # INFO: Storage engine used for t1 seems to be able to revert
19875 # changes made by the failing statement.
19876 SET @@session.sql_mode = '';
19878 DELETE FROM t1 WHERE f_charbig = 'was inserted';
19880 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19882 # check special-1 success: 1
19883 UPDATE t1 SET f_charbig = '';
19885 # check special-2 success: 1
19886 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19887 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19888 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19889 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19890 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19891 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19892 'just inserted' FROM t0_template
19893 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19894 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19896 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19897 f_charbig = 'updated by trigger'
19898 WHERE f_int1 = new.f_int1;
19900 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19901 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19902 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19904 # check trigger-1 success: 1
19905 DROP TRIGGER trg_1;
19906 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19907 f_int2 = CAST(f_char1 AS SIGNED INT),
19908 f_charbig = 'just inserted'
19909 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19911 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19912 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19913 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19914 'just inserted' FROM t0_template
19915 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19916 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19918 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19919 f_charbig = 'updated by trigger'
19920 WHERE f_int1 = new.f_int1;
19922 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19923 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19924 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19926 # check trigger-2 success: 1
19927 DROP TRIGGER trg_1;
19928 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19929 f_int2 = CAST(f_char1 AS SIGNED INT),
19930 f_charbig = 'just inserted'
19931 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19933 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19934 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19935 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19936 'just inserted' FROM t0_template
19937 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19938 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19940 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19941 f_charbig = 'updated by trigger'
19942 WHERE f_int1 = new.f_int1;
19944 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19945 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19947 # check trigger-3 success: 1
19948 DROP TRIGGER trg_1;
19949 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19950 f_int2 = CAST(f_char1 AS SIGNED INT),
19951 f_charbig = 'just inserted'
19952 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19954 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19955 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19956 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19957 'just inserted' FROM t0_template
19958 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19959 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19961 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19962 f_charbig = 'updated by trigger'
19963 WHERE f_int1 = - old.f_int1;
19965 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19966 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19968 # check trigger-4 success: 1
19969 DROP TRIGGER trg_1;
19970 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19971 f_int2 = CAST(f_char1 AS SIGNED INT),
19972 f_charbig = 'just inserted'
19973 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19975 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19976 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19977 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19978 'just inserted' FROM t0_template
19979 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19980 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19982 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19983 f_charbig = 'updated by trigger'
19984 WHERE f_int1 = new.f_int1;
19986 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19987 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19989 # check trigger-5 success: 1
19990 DROP TRIGGER trg_1;
19991 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19992 f_int2 = CAST(f_char1 AS SIGNED INT),
19993 f_charbig = 'just inserted'
19994 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19996 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19997 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19998 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19999 'just inserted' FROM t0_template
20000 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20001 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20003 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20004 f_charbig = 'updated by trigger'
20005 WHERE f_int1 = - old.f_int1;
20007 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20008 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20010 # check trigger-6 success: 1
20011 DROP TRIGGER trg_1;
20012 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20013 f_int2 = CAST(f_char1 AS SIGNED INT),
20014 f_charbig = 'just inserted'
20015 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20017 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20018 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20019 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20020 'just inserted' FROM t0_template
20021 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20022 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20024 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20025 f_charbig = 'updated by trigger'
20026 WHERE f_int1 = - old.f_int1;
20029 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20031 # check trigger-7 success: 1
20032 DROP TRIGGER trg_1;
20033 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20034 f_int2 = CAST(f_char1 AS SIGNED INT),
20035 f_charbig = 'just inserted'
20036 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20038 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20039 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20040 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20041 'just inserted' FROM t0_template
20042 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20043 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20045 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20046 f_charbig = 'updated by trigger'
20047 WHERE f_int1 = - old.f_int1;
20050 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20052 # check trigger-8 success: 1
20053 DROP TRIGGER trg_1;
20054 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20055 f_int2 = CAST(f_char1 AS SIGNED INT),
20056 f_charbig = 'just inserted'
20057 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20059 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20061 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20062 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20064 SET new.f_int1 = old.f_int1 + @max_row,
20065 new.f_int2 = old.f_int2 - @max_row,
20066 new.f_charbig = '####updated per update trigger####';
20069 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20070 f_charbig = '####updated per update statement itself####';
20072 # check trigger-9 success: 1
20073 DROP TRIGGER trg_2;
20074 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20075 f_int2 = CAST(f_char1 AS SIGNED INT),
20076 f_charbig = CONCAT('===',f_char1,'===');
20077 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20079 SET new.f_int1 = new.f_int1 + @max_row,
20080 new.f_int2 = new.f_int2 - @max_row,
20081 new.f_charbig = '####updated per update trigger####';
20084 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20085 f_charbig = '####updated per update statement itself####';
20087 # check trigger-10 success: 1
20088 DROP TRIGGER trg_2;
20089 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20090 f_int2 = CAST(f_char1 AS SIGNED INT),
20091 f_charbig = CONCAT('===',f_char1,'===');
20092 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20094 SET new.f_int1 = @my_max1 + @counter,
20095 new.f_int2 = @my_min2 - @counter,
20096 new.f_charbig = '####updated per insert trigger####';
20097 SET @counter = @counter + 1;
20100 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20101 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20102 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20103 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20104 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20106 DROP TRIGGER trg_3;
20108 # check trigger-11 success: 1
20110 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20111 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20112 AND f_charbig = '####updated per insert trigger####';
20113 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20115 SET new.f_int1 = @my_max1 + @counter,
20116 new.f_int2 = @my_min2 - @counter,
20117 new.f_charbig = '####updated per insert trigger####';
20118 SET @counter = @counter + 1;
20121 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20122 INSERT INTO t1 (f_char1, f_char2, f_charbig)
20123 SELECT CAST(f_int1 AS CHAR),
20124 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20125 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20127 DROP TRIGGER trg_3;
20129 # check trigger-12 success: 1
20131 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20132 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20133 AND f_charbig = '####updated per insert trigger####';
20135 Table Op Msg_type Msg_text
20136 test.t1 analyze status OK
20137 CHECK TABLE t1 EXTENDED;
20138 Table Op Msg_type Msg_text
20139 test.t1 check status OK
20140 CHECKSUM TABLE t1 EXTENDED;
20142 test.t1 <some_value>
20144 Table Op Msg_type Msg_text
20145 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
20146 test.t1 optimize status OK
20147 # check layout success: 1
20148 REPAIR TABLE t1 EXTENDED;
20149 Table Op Msg_type Msg_text
20150 test.t1 repair note The storage engine for the table doesn't support repair
20151 # check layout success: 1
20154 # check TRUNCATE success: 1
20155 # check layout success: 1
20156 # End usability test (inc/partition_check.inc)
20158 #------------------------------------------------------------------------
20159 # 2.3 ALTER column f_int1 and f_int2 used in partitioning function
20160 #------------------------------------------------------------------------
20161 # 2.3.1 no PRIMARY KEY or UNIQUE INDEX exists
20162 DROP TABLE IF EXISTS t1;
20168 f_charbig VARCHAR(1000)
20171 PARTITION BY HASH(f_int1) PARTITIONS 2;
20172 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20173 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20174 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20175 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
20176 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20177 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20178 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20179 # Start usability test (inc/partition_check.inc)
20181 SHOW CREATE TABLE t1;
20183 t1 CREATE TABLE `t1` (
20184 `f_int1` mediumint(9) DEFAULT NULL,
20185 `f_int2` mediumint(9) DEFAULT NULL,
20186 `f_char1` char(20) DEFAULT NULL,
20187 `f_char2` char(20) DEFAULT NULL,
20188 `f_charbig` varchar(1000) DEFAULT NULL
20189 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
20190 /*!50100 PARTITION BY HASH (f_int1)
20193 # check prerequisites-1 success: 1
20194 # check COUNT(*) success: 1
20195 # check MIN/MAX(f_int1) success: 1
20196 # check MIN/MAX(f_int2) success: 1
20197 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20198 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20199 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20200 WHERE f_int1 IN (2,3);
20201 # check prerequisites-3 success: 1
20202 DELETE FROM t1 WHERE f_charbig = 'delete me';
20203 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
20204 # check read via f_int1 success: 1
20205 # check read via f_int2 success: 1
20207 # check multiple-1 success: 1
20208 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20210 # check multiple-2 success: 1
20211 INSERT INTO t1 SELECT * FROM t0_template
20212 WHERE MOD(f_int1,3) = 0;
20214 # check multiple-3 success: 1
20215 UPDATE t1 SET f_int1 = f_int1 + @max_row
20216 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20217 AND @max_row_div2 + @max_row_div4;
20219 # check multiple-4 success: 1
20221 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20222 AND @max_row_div2 + @max_row_div4 + @max_row;
20224 # check multiple-5 success: 1
20225 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20227 SET f_int1 = @cur_value , f_int2 = @cur_value,
20228 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20229 f_charbig = '#SINGLE#';
20231 # check single-1 success: 1
20232 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20234 SET f_int1 = @cur_value , f_int2 = @cur_value,
20235 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20236 f_charbig = '#SINGLE#';
20238 # check single-2 success: 1
20239 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20240 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20241 UPDATE t1 SET f_int1 = @cur_value2
20242 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20244 # check single-3 success: 1
20245 SET @cur_value1= -1;
20246 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20247 UPDATE t1 SET f_int1 = @cur_value1
20248 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20250 # check single-4 success: 1
20251 SELECT MAX(f_int1) INTO @cur_value FROM t1;
20252 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20254 # check single-5 success: 1
20255 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20257 # check single-6 success: 1
20258 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20260 Warning 1264 Out of range value for column 'f_int1' at row 1
20261 Warning 1264 Out of range value for column 'f_int2' at row 1
20263 # check single-7 success: 1
20264 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
20265 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20266 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20267 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20268 f_charbig = '#NULL#';
20270 SET f_int1 = NULL , f_int2 = -@max_row,
20271 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20272 f_charbig = '#NULL#';
20273 # check null success: 1
20275 # check null-1 success: 1
20276 UPDATE t1 SET f_int1 = -@max_row
20277 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20278 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20280 # check null-2 success: 1
20281 UPDATE t1 SET f_int1 = NULL
20282 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20283 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20285 # check null-3 success: 1
20287 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20288 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20290 # check null-4 success: 1
20292 WHERE f_int1 = 0 AND f_int2 = 0
20293 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20294 AND f_charbig = '#NULL#';
20296 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20297 SELECT f_int1, f_int1, '', '', 'was inserted'
20298 FROM t0_template source_tab
20299 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20301 # check transactions-1 success: 1
20304 # check transactions-2 success: 1
20307 # check transactions-3 success: 1
20308 DELETE FROM t1 WHERE f_charbig = 'was inserted';
20312 # check transactions-4 success: 1
20313 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20314 SELECT f_int1, f_int1, '', '', 'was inserted'
20315 FROM t0_template source_tab
20316 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20318 # check transactions-5 success: 1
20321 # check transactions-6 success: 1
20322 # INFO: Storage engine used for t1 seems to be transactional.
20325 # check transactions-7 success: 1
20326 DELETE FROM t1 WHERE f_charbig = 'was inserted';
20328 SET @@session.sql_mode = 'traditional';
20329 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20330 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20331 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20332 '', '', 'was inserted' FROM t0_template
20333 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20334 ERROR 22012: Division by 0
20337 # check transactions-8 success: 1
20338 # INFO: Storage engine used for t1 seems to be able to revert
20339 # changes made by the failing statement.
20340 SET @@session.sql_mode = '';
20342 DELETE FROM t1 WHERE f_charbig = 'was inserted';
20344 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20346 # check special-1 success: 1
20347 UPDATE t1 SET f_charbig = '';
20349 # check special-2 success: 1
20350 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20351 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20352 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20353 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20354 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20355 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20356 'just inserted' FROM t0_template
20357 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20358 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20360 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20361 f_charbig = 'updated by trigger'
20362 WHERE f_int1 = new.f_int1;
20364 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20365 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20366 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20368 # check trigger-1 success: 1
20369 DROP TRIGGER trg_1;
20370 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20371 f_int2 = CAST(f_char1 AS SIGNED INT),
20372 f_charbig = 'just inserted'
20373 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20375 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20376 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20377 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20378 'just inserted' FROM t0_template
20379 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20380 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20382 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20383 f_charbig = 'updated by trigger'
20384 WHERE f_int1 = new.f_int1;
20386 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20387 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20388 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20390 # check trigger-2 success: 1
20391 DROP TRIGGER trg_1;
20392 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20393 f_int2 = CAST(f_char1 AS SIGNED INT),
20394 f_charbig = 'just inserted'
20395 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20397 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20398 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20399 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20400 'just inserted' FROM t0_template
20401 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20402 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20404 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20405 f_charbig = 'updated by trigger'
20406 WHERE f_int1 = new.f_int1;
20408 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20409 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20411 # check trigger-3 success: 1
20412 DROP TRIGGER trg_1;
20413 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20414 f_int2 = CAST(f_char1 AS SIGNED INT),
20415 f_charbig = 'just inserted'
20416 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20418 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20419 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20420 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20421 'just inserted' FROM t0_template
20422 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20423 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20425 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20426 f_charbig = 'updated by trigger'
20427 WHERE f_int1 = - old.f_int1;
20429 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20430 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20432 # check trigger-4 success: 1
20433 DROP TRIGGER trg_1;
20434 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20435 f_int2 = CAST(f_char1 AS SIGNED INT),
20436 f_charbig = 'just inserted'
20437 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20439 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20440 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20441 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20442 'just inserted' FROM t0_template
20443 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20444 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20446 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20447 f_charbig = 'updated by trigger'
20448 WHERE f_int1 = new.f_int1;
20450 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20451 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20453 # check trigger-5 success: 1
20454 DROP TRIGGER trg_1;
20455 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20456 f_int2 = CAST(f_char1 AS SIGNED INT),
20457 f_charbig = 'just inserted'
20458 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20460 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20461 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20462 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20463 'just inserted' FROM t0_template
20464 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20465 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20467 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20468 f_charbig = 'updated by trigger'
20469 WHERE f_int1 = - old.f_int1;
20471 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20472 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20474 # check trigger-6 success: 1
20475 DROP TRIGGER trg_1;
20476 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20477 f_int2 = CAST(f_char1 AS SIGNED INT),
20478 f_charbig = 'just inserted'
20479 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20481 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20482 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20483 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20484 'just inserted' FROM t0_template
20485 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20486 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20488 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20489 f_charbig = 'updated by trigger'
20490 WHERE f_int1 = - old.f_int1;
20493 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20495 # check trigger-7 success: 1
20496 DROP TRIGGER trg_1;
20497 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20498 f_int2 = CAST(f_char1 AS SIGNED INT),
20499 f_charbig = 'just inserted'
20500 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20502 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20503 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20504 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20505 'just inserted' FROM t0_template
20506 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20507 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20509 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20510 f_charbig = 'updated by trigger'
20511 WHERE f_int1 = - old.f_int1;
20514 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20516 # check trigger-8 success: 1
20517 DROP TRIGGER trg_1;
20518 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20519 f_int2 = CAST(f_char1 AS SIGNED INT),
20520 f_charbig = 'just inserted'
20521 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20523 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20525 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20526 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20528 SET new.f_int1 = old.f_int1 + @max_row,
20529 new.f_int2 = old.f_int2 - @max_row,
20530 new.f_charbig = '####updated per update trigger####';
20533 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20534 f_charbig = '####updated per update statement itself####';
20536 # check trigger-9 success: 1
20537 DROP TRIGGER trg_2;
20538 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20539 f_int2 = CAST(f_char1 AS SIGNED INT),
20540 f_charbig = CONCAT('===',f_char1,'===');
20541 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20543 SET new.f_int1 = new.f_int1 + @max_row,
20544 new.f_int2 = new.f_int2 - @max_row,
20545 new.f_charbig = '####updated per update trigger####';
20548 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20549 f_charbig = '####updated per update statement itself####';
20551 # check trigger-10 success: 1
20552 DROP TRIGGER trg_2;
20553 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20554 f_int2 = CAST(f_char1 AS SIGNED INT),
20555 f_charbig = CONCAT('===',f_char1,'===');
20556 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20558 SET new.f_int1 = @my_max1 + @counter,
20559 new.f_int2 = @my_min2 - @counter,
20560 new.f_charbig = '####updated per insert trigger####';
20561 SET @counter = @counter + 1;
20564 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20565 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20566 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20567 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20568 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20570 DROP TRIGGER trg_3;
20572 # check trigger-11 success: 1
20574 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20575 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20576 AND f_charbig = '####updated per insert trigger####';
20577 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20579 SET new.f_int1 = @my_max1 + @counter,
20580 new.f_int2 = @my_min2 - @counter,
20581 new.f_charbig = '####updated per insert trigger####';
20582 SET @counter = @counter + 1;
20585 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20586 INSERT INTO t1 (f_char1, f_char2, f_charbig)
20587 SELECT CAST(f_int1 AS CHAR),
20588 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20589 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20591 DROP TRIGGER trg_3;
20593 # check trigger-12 success: 1
20595 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20596 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20597 AND f_charbig = '####updated per insert trigger####';
20599 Table Op Msg_type Msg_text
20600 test.t1 analyze status OK
20601 CHECK TABLE t1 EXTENDED;
20602 Table Op Msg_type Msg_text
20603 test.t1 check status OK
20604 CHECKSUM TABLE t1 EXTENDED;
20606 test.t1 <some_value>
20608 Table Op Msg_type Msg_text
20609 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
20610 test.t1 optimize status OK
20611 # check layout success: 1
20612 REPAIR TABLE t1 EXTENDED;
20613 Table Op Msg_type Msg_text
20614 test.t1 repair note The storage engine for the table doesn't support repair
20615 # check layout success: 1
20618 # check TRUNCATE success: 1
20619 # check layout success: 1
20620 # End usability test (inc/partition_check.inc)
20627 f_charbig VARCHAR(1000)
20630 PARTITION BY KEY(f_int1) PARTITIONS 5;
20631 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20632 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20633 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20634 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
20635 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20636 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20637 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20638 # Start usability test (inc/partition_check.inc)
20640 SHOW CREATE TABLE t1;
20642 t1 CREATE TABLE `t1` (
20643 `f_int1` mediumint(9) DEFAULT NULL,
20644 `f_int2` mediumint(9) DEFAULT NULL,
20645 `f_char1` char(20) DEFAULT NULL,
20646 `f_char2` char(20) DEFAULT NULL,
20647 `f_charbig` varchar(1000) DEFAULT NULL
20648 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
20649 /*!50100 PARTITION BY KEY (f_int1)
20652 # check prerequisites-1 success: 1
20653 # check COUNT(*) success: 1
20654 # check MIN/MAX(f_int1) success: 1
20655 # check MIN/MAX(f_int2) success: 1
20656 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20657 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20658 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20659 WHERE f_int1 IN (2,3);
20660 # check prerequisites-3 success: 1
20661 DELETE FROM t1 WHERE f_charbig = 'delete me';
20662 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
20663 # check read via f_int1 success: 1
20664 # check read via f_int2 success: 1
20666 # check multiple-1 success: 1
20667 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20669 # check multiple-2 success: 1
20670 INSERT INTO t1 SELECT * FROM t0_template
20671 WHERE MOD(f_int1,3) = 0;
20673 # check multiple-3 success: 1
20674 UPDATE t1 SET f_int1 = f_int1 + @max_row
20675 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20676 AND @max_row_div2 + @max_row_div4;
20678 # check multiple-4 success: 1
20680 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20681 AND @max_row_div2 + @max_row_div4 + @max_row;
20683 # check multiple-5 success: 1
20684 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20686 SET f_int1 = @cur_value , f_int2 = @cur_value,
20687 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20688 f_charbig = '#SINGLE#';
20690 # check single-1 success: 1
20691 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20693 SET f_int1 = @cur_value , f_int2 = @cur_value,
20694 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20695 f_charbig = '#SINGLE#';
20697 # check single-2 success: 1
20698 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20699 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20700 UPDATE t1 SET f_int1 = @cur_value2
20701 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20703 # check single-3 success: 1
20704 SET @cur_value1= -1;
20705 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20706 UPDATE t1 SET f_int1 = @cur_value1
20707 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20709 # check single-4 success: 1
20710 SELECT MAX(f_int1) INTO @cur_value FROM t1;
20711 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20713 # check single-5 success: 1
20714 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20716 # check single-6 success: 1
20717 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20719 Warning 1264 Out of range value for column 'f_int1' at row 1
20720 Warning 1264 Out of range value for column 'f_int2' at row 1
20722 # check single-7 success: 1
20723 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
20724 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20725 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20726 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20727 f_charbig = '#NULL#';
20729 SET f_int1 = NULL , f_int2 = -@max_row,
20730 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20731 f_charbig = '#NULL#';
20732 # check null success: 1
20734 # check null-1 success: 1
20735 UPDATE t1 SET f_int1 = -@max_row
20736 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20737 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20739 # check null-2 success: 1
20740 UPDATE t1 SET f_int1 = NULL
20741 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20742 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20744 # check null-3 success: 1
20746 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20747 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20749 # check null-4 success: 1
20751 WHERE f_int1 = 0 AND f_int2 = 0
20752 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20753 AND f_charbig = '#NULL#';
20755 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20756 SELECT f_int1, f_int1, '', '', 'was inserted'
20757 FROM t0_template source_tab
20758 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20760 # check transactions-1 success: 1
20763 # check transactions-2 success: 1
20766 # check transactions-3 success: 1
20767 DELETE FROM t1 WHERE f_charbig = 'was inserted';
20771 # check transactions-4 success: 1
20772 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20773 SELECT f_int1, f_int1, '', '', 'was inserted'
20774 FROM t0_template source_tab
20775 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20777 # check transactions-5 success: 1
20780 # check transactions-6 success: 1
20781 # INFO: Storage engine used for t1 seems to be transactional.
20784 # check transactions-7 success: 1
20785 DELETE FROM t1 WHERE f_charbig = 'was inserted';
20787 SET @@session.sql_mode = 'traditional';
20788 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20789 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20790 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20791 '', '', 'was inserted' FROM t0_template
20792 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20793 ERROR 22012: Division by 0
20796 # check transactions-8 success: 1
20797 # INFO: Storage engine used for t1 seems to be able to revert
20798 # changes made by the failing statement.
20799 SET @@session.sql_mode = '';
20801 DELETE FROM t1 WHERE f_charbig = 'was inserted';
20803 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20805 # check special-1 success: 1
20806 UPDATE t1 SET f_charbig = '';
20808 # check special-2 success: 1
20809 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20810 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20811 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20812 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20813 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20814 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20815 'just inserted' FROM t0_template
20816 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20817 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20819 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20820 f_charbig = 'updated by trigger'
20821 WHERE f_int1 = new.f_int1;
20823 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20824 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20825 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20827 # check trigger-1 success: 1
20828 DROP TRIGGER trg_1;
20829 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20830 f_int2 = CAST(f_char1 AS SIGNED INT),
20831 f_charbig = 'just inserted'
20832 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20834 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20835 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20836 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20837 'just inserted' FROM t0_template
20838 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20839 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20841 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20842 f_charbig = 'updated by trigger'
20843 WHERE f_int1 = new.f_int1;
20845 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20846 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20847 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20849 # check trigger-2 success: 1
20850 DROP TRIGGER trg_1;
20851 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20852 f_int2 = CAST(f_char1 AS SIGNED INT),
20853 f_charbig = 'just inserted'
20854 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20856 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20857 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20858 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20859 'just inserted' FROM t0_template
20860 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20861 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20863 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20864 f_charbig = 'updated by trigger'
20865 WHERE f_int1 = new.f_int1;
20867 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20868 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20870 # check trigger-3 success: 1
20871 DROP TRIGGER trg_1;
20872 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20873 f_int2 = CAST(f_char1 AS SIGNED INT),
20874 f_charbig = 'just inserted'
20875 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20877 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20878 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20879 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20880 'just inserted' FROM t0_template
20881 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20882 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20884 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20885 f_charbig = 'updated by trigger'
20886 WHERE f_int1 = - old.f_int1;
20888 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20889 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20891 # check trigger-4 success: 1
20892 DROP TRIGGER trg_1;
20893 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20894 f_int2 = CAST(f_char1 AS SIGNED INT),
20895 f_charbig = 'just inserted'
20896 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20898 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20899 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20900 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20901 'just inserted' FROM t0_template
20902 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20903 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20905 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20906 f_charbig = 'updated by trigger'
20907 WHERE f_int1 = new.f_int1;
20909 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20910 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20912 # check trigger-5 success: 1
20913 DROP TRIGGER trg_1;
20914 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20915 f_int2 = CAST(f_char1 AS SIGNED INT),
20916 f_charbig = 'just inserted'
20917 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20919 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20920 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20921 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20922 'just inserted' FROM t0_template
20923 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20924 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20926 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20927 f_charbig = 'updated by trigger'
20928 WHERE f_int1 = - old.f_int1;
20930 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20931 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20933 # check trigger-6 success: 1
20934 DROP TRIGGER trg_1;
20935 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20936 f_int2 = CAST(f_char1 AS SIGNED INT),
20937 f_charbig = 'just inserted'
20938 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20940 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20941 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20942 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20943 'just inserted' FROM t0_template
20944 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20945 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20947 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20948 f_charbig = 'updated by trigger'
20949 WHERE f_int1 = - old.f_int1;
20952 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20954 # check trigger-7 success: 1
20955 DROP TRIGGER trg_1;
20956 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20957 f_int2 = CAST(f_char1 AS SIGNED INT),
20958 f_charbig = 'just inserted'
20959 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20961 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20962 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20963 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20964 'just inserted' FROM t0_template
20965 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20966 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20968 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20969 f_charbig = 'updated by trigger'
20970 WHERE f_int1 = - old.f_int1;
20973 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20975 # check trigger-8 success: 1
20976 DROP TRIGGER trg_1;
20977 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20978 f_int2 = CAST(f_char1 AS SIGNED INT),
20979 f_charbig = 'just inserted'
20980 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20982 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20984 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20985 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20987 SET new.f_int1 = old.f_int1 + @max_row,
20988 new.f_int2 = old.f_int2 - @max_row,
20989 new.f_charbig = '####updated per update trigger####';
20992 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20993 f_charbig = '####updated per update statement itself####';
20995 # check trigger-9 success: 1
20996 DROP TRIGGER trg_2;
20997 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20998 f_int2 = CAST(f_char1 AS SIGNED INT),
20999 f_charbig = CONCAT('===',f_char1,'===');
21000 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21002 SET new.f_int1 = new.f_int1 + @max_row,
21003 new.f_int2 = new.f_int2 - @max_row,
21004 new.f_charbig = '####updated per update trigger####';
21007 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21008 f_charbig = '####updated per update statement itself####';
21010 # check trigger-10 success: 1
21011 DROP TRIGGER trg_2;
21012 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21013 f_int2 = CAST(f_char1 AS SIGNED INT),
21014 f_charbig = CONCAT('===',f_char1,'===');
21015 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21017 SET new.f_int1 = @my_max1 + @counter,
21018 new.f_int2 = @my_min2 - @counter,
21019 new.f_charbig = '####updated per insert trigger####';
21020 SET @counter = @counter + 1;
21023 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21024 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21025 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21026 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21027 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21029 DROP TRIGGER trg_3;
21031 # check trigger-11 success: 1
21033 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21034 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21035 AND f_charbig = '####updated per insert trigger####';
21036 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21038 SET new.f_int1 = @my_max1 + @counter,
21039 new.f_int2 = @my_min2 - @counter,
21040 new.f_charbig = '####updated per insert trigger####';
21041 SET @counter = @counter + 1;
21044 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21045 INSERT INTO t1 (f_char1, f_char2, f_charbig)
21046 SELECT CAST(f_int1 AS CHAR),
21047 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21048 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21050 DROP TRIGGER trg_3;
21052 # check trigger-12 success: 1
21054 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21055 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21056 AND f_charbig = '####updated per insert trigger####';
21058 Table Op Msg_type Msg_text
21059 test.t1 analyze status OK
21060 CHECK TABLE t1 EXTENDED;
21061 Table Op Msg_type Msg_text
21062 test.t1 check status OK
21063 CHECKSUM TABLE t1 EXTENDED;
21065 test.t1 <some_value>
21067 Table Op Msg_type Msg_text
21068 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
21069 test.t1 optimize status OK
21070 # check layout success: 1
21071 REPAIR TABLE t1 EXTENDED;
21072 Table Op Msg_type Msg_text
21073 test.t1 repair note The storage engine for the table doesn't support repair
21074 # check layout success: 1
21077 # check TRUNCATE success: 1
21078 # check layout success: 1
21079 # End usability test (inc/partition_check.inc)
21086 f_charbig VARCHAR(1000)
21089 PARTITION BY LIST(MOD(f_int1,4))
21090 (PARTITION part_3 VALUES IN (-3),
21091 PARTITION part_2 VALUES IN (-2),
21092 PARTITION part_1 VALUES IN (-1),
21093 PARTITION part_N VALUES IN (NULL),
21094 PARTITION part0 VALUES IN (0),
21095 PARTITION part1 VALUES IN (1),
21096 PARTITION part2 VALUES IN (2),
21097 PARTITION part3 VALUES IN (3));
21098 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21099 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21100 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21101 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
21102 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21103 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21104 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21105 # Start usability test (inc/partition_check.inc)
21107 SHOW CREATE TABLE t1;
21109 t1 CREATE TABLE `t1` (
21110 `f_int1` mediumint(9) DEFAULT NULL,
21111 `f_int2` mediumint(9) DEFAULT NULL,
21112 `f_char1` char(20) DEFAULT NULL,
21113 `f_char2` char(20) DEFAULT NULL,
21114 `f_charbig` varchar(1000) DEFAULT NULL
21115 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
21116 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
21117 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
21118 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
21119 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
21120 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
21121 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
21122 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
21123 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
21124 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
21126 # check prerequisites-1 success: 1
21127 # check COUNT(*) success: 1
21128 # check MIN/MAX(f_int1) success: 1
21129 # check MIN/MAX(f_int2) success: 1
21130 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21131 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21132 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21133 WHERE f_int1 IN (2,3);
21134 # check prerequisites-3 success: 1
21135 DELETE FROM t1 WHERE f_charbig = 'delete me';
21136 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21137 # check read via f_int1 success: 1
21138 # check read via f_int2 success: 1
21140 # check multiple-1 success: 1
21141 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21143 # check multiple-2 success: 1
21144 INSERT INTO t1 SELECT * FROM t0_template
21145 WHERE MOD(f_int1,3) = 0;
21147 # check multiple-3 success: 1
21148 UPDATE t1 SET f_int1 = f_int1 + @max_row
21149 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21150 AND @max_row_div2 + @max_row_div4;
21152 # check multiple-4 success: 1
21154 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21155 AND @max_row_div2 + @max_row_div4 + @max_row;
21157 # check multiple-5 success: 1
21158 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21160 SET f_int1 = @cur_value , f_int2 = @cur_value,
21161 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21162 f_charbig = '#SINGLE#';
21164 # check single-1 success: 1
21165 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21167 SET f_int1 = @cur_value , f_int2 = @cur_value,
21168 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21169 f_charbig = '#SINGLE#';
21171 # check single-2 success: 1
21172 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21173 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21174 UPDATE t1 SET f_int1 = @cur_value2
21175 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21177 # check single-3 success: 1
21178 SET @cur_value1= -1;
21179 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21180 UPDATE t1 SET f_int1 = @cur_value1
21181 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21183 # check single-4 success: 1
21184 SELECT MAX(f_int1) INTO @cur_value FROM t1;
21185 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21187 # check single-5 success: 1
21188 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21190 # check single-6 success: 1
21191 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21193 Warning 1264 Out of range value for column 'f_int1' at row 1
21194 Warning 1264 Out of range value for column 'f_int2' at row 1
21196 # check single-7 success: 1
21197 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
21198 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21199 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21200 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21201 f_charbig = '#NULL#';
21203 SET f_int1 = NULL , f_int2 = -@max_row,
21204 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21205 f_charbig = '#NULL#';
21206 # check null success: 1
21208 # check null-1 success: 1
21209 UPDATE t1 SET f_int1 = -@max_row
21210 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21211 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21213 # check null-2 success: 1
21214 UPDATE t1 SET f_int1 = NULL
21215 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21216 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21218 # check null-3 success: 1
21220 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21221 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21223 # check null-4 success: 1
21225 WHERE f_int1 = 0 AND f_int2 = 0
21226 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21227 AND f_charbig = '#NULL#';
21229 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21230 SELECT f_int1, f_int1, '', '', 'was inserted'
21231 FROM t0_template source_tab
21232 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21234 # check transactions-1 success: 1
21237 # check transactions-2 success: 1
21240 # check transactions-3 success: 1
21241 DELETE FROM t1 WHERE f_charbig = 'was inserted';
21245 # check transactions-4 success: 1
21246 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21247 SELECT f_int1, f_int1, '', '', 'was inserted'
21248 FROM t0_template source_tab
21249 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21251 # check transactions-5 success: 1
21254 # check transactions-6 success: 1
21255 # INFO: Storage engine used for t1 seems to be transactional.
21258 # check transactions-7 success: 1
21259 DELETE FROM t1 WHERE f_charbig = 'was inserted';
21261 SET @@session.sql_mode = 'traditional';
21262 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21263 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21264 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21265 '', '', 'was inserted' FROM t0_template
21266 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21267 ERROR 22012: Division by 0
21270 # check transactions-8 success: 1
21271 # INFO: Storage engine used for t1 seems to be able to revert
21272 # changes made by the failing statement.
21273 SET @@session.sql_mode = '';
21275 DELETE FROM t1 WHERE f_charbig = 'was inserted';
21277 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21279 # check special-1 success: 1
21280 UPDATE t1 SET f_charbig = '';
21282 # check special-2 success: 1
21283 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21284 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21285 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21286 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21287 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21288 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21289 'just inserted' FROM t0_template
21290 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21291 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21293 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21294 f_charbig = 'updated by trigger'
21295 WHERE f_int1 = new.f_int1;
21297 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21298 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21299 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21301 # check trigger-1 success: 1
21302 DROP TRIGGER trg_1;
21303 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21304 f_int2 = CAST(f_char1 AS SIGNED INT),
21305 f_charbig = 'just inserted'
21306 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21308 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21309 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21310 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21311 'just inserted' FROM t0_template
21312 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21313 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21315 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21316 f_charbig = 'updated by trigger'
21317 WHERE f_int1 = new.f_int1;
21319 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21320 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21321 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21323 # check trigger-2 success: 1
21324 DROP TRIGGER trg_1;
21325 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21326 f_int2 = CAST(f_char1 AS SIGNED INT),
21327 f_charbig = 'just inserted'
21328 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21330 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21331 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21332 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21333 'just inserted' FROM t0_template
21334 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21335 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21337 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21338 f_charbig = 'updated by trigger'
21339 WHERE f_int1 = new.f_int1;
21341 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21342 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21344 # check trigger-3 success: 1
21345 DROP TRIGGER trg_1;
21346 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21347 f_int2 = CAST(f_char1 AS SIGNED INT),
21348 f_charbig = 'just inserted'
21349 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21351 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21352 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21353 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21354 'just inserted' FROM t0_template
21355 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21356 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21358 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21359 f_charbig = 'updated by trigger'
21360 WHERE f_int1 = - old.f_int1;
21362 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21363 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21365 # check trigger-4 success: 1
21366 DROP TRIGGER trg_1;
21367 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21368 f_int2 = CAST(f_char1 AS SIGNED INT),
21369 f_charbig = 'just inserted'
21370 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21372 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21373 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21374 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21375 'just inserted' FROM t0_template
21376 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21377 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21379 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21380 f_charbig = 'updated by trigger'
21381 WHERE f_int1 = new.f_int1;
21383 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21384 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21386 # check trigger-5 success: 1
21387 DROP TRIGGER trg_1;
21388 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21389 f_int2 = CAST(f_char1 AS SIGNED INT),
21390 f_charbig = 'just inserted'
21391 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21393 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21394 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21395 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21396 'just inserted' FROM t0_template
21397 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21398 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21400 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21401 f_charbig = 'updated by trigger'
21402 WHERE f_int1 = - old.f_int1;
21404 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21405 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21407 # check trigger-6 success: 1
21408 DROP TRIGGER trg_1;
21409 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21410 f_int2 = CAST(f_char1 AS SIGNED INT),
21411 f_charbig = 'just inserted'
21412 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21414 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21415 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21416 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21417 'just inserted' FROM t0_template
21418 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21419 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21421 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21422 f_charbig = 'updated by trigger'
21423 WHERE f_int1 = - old.f_int1;
21426 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21428 # check trigger-7 success: 1
21429 DROP TRIGGER trg_1;
21430 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21431 f_int2 = CAST(f_char1 AS SIGNED INT),
21432 f_charbig = 'just inserted'
21433 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21435 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21436 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21437 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21438 'just inserted' FROM t0_template
21439 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21440 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21442 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21443 f_charbig = 'updated by trigger'
21444 WHERE f_int1 = - old.f_int1;
21447 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21449 # check trigger-8 success: 1
21450 DROP TRIGGER trg_1;
21451 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21452 f_int2 = CAST(f_char1 AS SIGNED INT),
21453 f_charbig = 'just inserted'
21454 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21456 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21458 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21459 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21461 SET new.f_int1 = old.f_int1 + @max_row,
21462 new.f_int2 = old.f_int2 - @max_row,
21463 new.f_charbig = '####updated per update trigger####';
21466 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21467 f_charbig = '####updated per update statement itself####';
21469 # check trigger-9 success: 1
21470 DROP TRIGGER trg_2;
21471 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21472 f_int2 = CAST(f_char1 AS SIGNED INT),
21473 f_charbig = CONCAT('===',f_char1,'===');
21474 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21476 SET new.f_int1 = new.f_int1 + @max_row,
21477 new.f_int2 = new.f_int2 - @max_row,
21478 new.f_charbig = '####updated per update trigger####';
21481 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21482 f_charbig = '####updated per update statement itself####';
21484 # check trigger-10 success: 1
21485 DROP TRIGGER trg_2;
21486 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21487 f_int2 = CAST(f_char1 AS SIGNED INT),
21488 f_charbig = CONCAT('===',f_char1,'===');
21489 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21491 SET new.f_int1 = @my_max1 + @counter,
21492 new.f_int2 = @my_min2 - @counter,
21493 new.f_charbig = '####updated per insert trigger####';
21494 SET @counter = @counter + 1;
21497 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21498 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21499 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21500 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21501 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21503 DROP TRIGGER trg_3;
21505 # check trigger-11 success: 1
21507 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21508 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21509 AND f_charbig = '####updated per insert trigger####';
21510 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21512 SET new.f_int1 = @my_max1 + @counter,
21513 new.f_int2 = @my_min2 - @counter,
21514 new.f_charbig = '####updated per insert trigger####';
21515 SET @counter = @counter + 1;
21518 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21519 INSERT INTO t1 (f_char1, f_char2, f_charbig)
21520 SELECT CAST(f_int1 AS CHAR),
21521 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21522 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21524 DROP TRIGGER trg_3;
21526 # check trigger-12 success: 1
21528 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21529 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21530 AND f_charbig = '####updated per insert trigger####';
21532 Table Op Msg_type Msg_text
21533 test.t1 analyze status OK
21534 CHECK TABLE t1 EXTENDED;
21535 Table Op Msg_type Msg_text
21536 test.t1 check status OK
21537 CHECKSUM TABLE t1 EXTENDED;
21539 test.t1 <some_value>
21541 Table Op Msg_type Msg_text
21542 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
21543 test.t1 optimize status OK
21544 # check layout success: 1
21545 REPAIR TABLE t1 EXTENDED;
21546 Table Op Msg_type Msg_text
21547 test.t1 repair note The storage engine for the table doesn't support repair
21548 # check layout success: 1
21551 # check TRUNCATE success: 1
21552 # check layout success: 1
21553 # End usability test (inc/partition_check.inc)
21560 f_charbig VARCHAR(1000)
21563 PARTITION BY RANGE(f_int1)
21564 (PARTITION parta VALUES LESS THAN (0),
21565 PARTITION partb VALUES LESS THAN (5),
21566 PARTITION partc VALUES LESS THAN (10),
21567 PARTITION partd VALUES LESS THAN (10 + 5),
21568 PARTITION parte VALUES LESS THAN (20),
21569 PARTITION partf VALUES LESS THAN (2147483646));
21570 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21571 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21572 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21573 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
21574 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21575 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21576 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21577 # Start usability test (inc/partition_check.inc)
21579 SHOW CREATE TABLE t1;
21581 t1 CREATE TABLE `t1` (
21582 `f_int1` mediumint(9) DEFAULT NULL,
21583 `f_int2` mediumint(9) DEFAULT NULL,
21584 `f_char1` char(20) DEFAULT NULL,
21585 `f_char2` char(20) DEFAULT NULL,
21586 `f_charbig` varchar(1000) DEFAULT NULL
21587 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
21588 /*!50100 PARTITION BY RANGE (f_int1)
21589 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
21590 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
21591 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
21592 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
21593 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
21594 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
21596 # check prerequisites-1 success: 1
21597 # check COUNT(*) success: 1
21598 # check MIN/MAX(f_int1) success: 1
21599 # check MIN/MAX(f_int2) success: 1
21600 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21601 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21602 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21603 WHERE f_int1 IN (2,3);
21604 # check prerequisites-3 success: 1
21605 DELETE FROM t1 WHERE f_charbig = 'delete me';
21606 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21607 # check read via f_int1 success: 1
21608 # check read via f_int2 success: 1
21610 # check multiple-1 success: 1
21611 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21613 # check multiple-2 success: 1
21614 INSERT INTO t1 SELECT * FROM t0_template
21615 WHERE MOD(f_int1,3) = 0;
21617 # check multiple-3 success: 1
21618 UPDATE t1 SET f_int1 = f_int1 + @max_row
21619 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21620 AND @max_row_div2 + @max_row_div4;
21622 # check multiple-4 success: 1
21624 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21625 AND @max_row_div2 + @max_row_div4 + @max_row;
21627 # check multiple-5 success: 1
21628 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21630 SET f_int1 = @cur_value , f_int2 = @cur_value,
21631 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21632 f_charbig = '#SINGLE#';
21634 # check single-1 success: 1
21635 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21637 SET f_int1 = @cur_value , f_int2 = @cur_value,
21638 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21639 f_charbig = '#SINGLE#';
21641 # check single-2 success: 1
21642 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21643 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21644 UPDATE t1 SET f_int1 = @cur_value2
21645 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21647 # check single-3 success: 1
21648 SET @cur_value1= -1;
21649 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21650 UPDATE t1 SET f_int1 = @cur_value1
21651 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21653 # check single-4 success: 1
21654 SELECT MAX(f_int1) INTO @cur_value FROM t1;
21655 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21657 # check single-5 success: 1
21658 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21660 # check single-6 success: 1
21661 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21663 Warning 1264 Out of range value for column 'f_int1' at row 1
21664 Warning 1264 Out of range value for column 'f_int2' at row 1
21666 # check single-7 success: 1
21667 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
21668 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21669 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21670 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21671 f_charbig = '#NULL#';
21673 SET f_int1 = NULL , f_int2 = -@max_row,
21674 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21675 f_charbig = '#NULL#';
21676 # check null success: 1
21678 # check null-1 success: 1
21679 UPDATE t1 SET f_int1 = -@max_row
21680 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21681 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21683 # check null-2 success: 1
21684 UPDATE t1 SET f_int1 = NULL
21685 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21686 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21688 # check null-3 success: 1
21690 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21691 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21693 # check null-4 success: 1
21695 WHERE f_int1 = 0 AND f_int2 = 0
21696 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21697 AND f_charbig = '#NULL#';
21699 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21700 SELECT f_int1, f_int1, '', '', 'was inserted'
21701 FROM t0_template source_tab
21702 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21704 # check transactions-1 success: 1
21707 # check transactions-2 success: 1
21710 # check transactions-3 success: 1
21711 DELETE FROM t1 WHERE f_charbig = 'was inserted';
21715 # check transactions-4 success: 1
21716 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21717 SELECT f_int1, f_int1, '', '', 'was inserted'
21718 FROM t0_template source_tab
21719 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21721 # check transactions-5 success: 1
21724 # check transactions-6 success: 1
21725 # INFO: Storage engine used for t1 seems to be transactional.
21728 # check transactions-7 success: 1
21729 DELETE FROM t1 WHERE f_charbig = 'was inserted';
21731 SET @@session.sql_mode = 'traditional';
21732 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21733 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21734 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21735 '', '', 'was inserted' FROM t0_template
21736 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21737 ERROR 22012: Division by 0
21740 # check transactions-8 success: 1
21741 # INFO: Storage engine used for t1 seems to be able to revert
21742 # changes made by the failing statement.
21743 SET @@session.sql_mode = '';
21745 DELETE FROM t1 WHERE f_charbig = 'was inserted';
21747 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21749 # check special-1 success: 1
21750 UPDATE t1 SET f_charbig = '';
21752 # check special-2 success: 1
21753 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21754 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21755 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21756 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21757 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21758 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21759 'just inserted' FROM t0_template
21760 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21761 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21763 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21764 f_charbig = 'updated by trigger'
21765 WHERE f_int1 = new.f_int1;
21767 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21768 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21769 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21771 # check trigger-1 success: 1
21772 DROP TRIGGER trg_1;
21773 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21774 f_int2 = CAST(f_char1 AS SIGNED INT),
21775 f_charbig = 'just inserted'
21776 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21778 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21779 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21780 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21781 'just inserted' FROM t0_template
21782 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21783 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21785 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21786 f_charbig = 'updated by trigger'
21787 WHERE f_int1 = new.f_int1;
21789 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21790 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21791 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21793 # check trigger-2 success: 1
21794 DROP TRIGGER trg_1;
21795 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21796 f_int2 = CAST(f_char1 AS SIGNED INT),
21797 f_charbig = 'just inserted'
21798 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21800 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21801 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21802 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21803 'just inserted' FROM t0_template
21804 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21805 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21807 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21808 f_charbig = 'updated by trigger'
21809 WHERE f_int1 = new.f_int1;
21811 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21812 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21814 # check trigger-3 success: 1
21815 DROP TRIGGER trg_1;
21816 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21817 f_int2 = CAST(f_char1 AS SIGNED INT),
21818 f_charbig = 'just inserted'
21819 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21821 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21822 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21823 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21824 'just inserted' FROM t0_template
21825 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21826 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21828 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21829 f_charbig = 'updated by trigger'
21830 WHERE f_int1 = - old.f_int1;
21832 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21833 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21835 # check trigger-4 success: 1
21836 DROP TRIGGER trg_1;
21837 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21838 f_int2 = CAST(f_char1 AS SIGNED INT),
21839 f_charbig = 'just inserted'
21840 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21842 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21843 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21844 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21845 'just inserted' FROM t0_template
21846 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21847 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21849 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21850 f_charbig = 'updated by trigger'
21851 WHERE f_int1 = new.f_int1;
21853 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21854 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21856 # check trigger-5 success: 1
21857 DROP TRIGGER trg_1;
21858 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21859 f_int2 = CAST(f_char1 AS SIGNED INT),
21860 f_charbig = 'just inserted'
21861 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21863 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21864 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21865 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21866 'just inserted' FROM t0_template
21867 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21868 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21870 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21871 f_charbig = 'updated by trigger'
21872 WHERE f_int1 = - old.f_int1;
21874 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21875 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21877 # check trigger-6 success: 1
21878 DROP TRIGGER trg_1;
21879 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21880 f_int2 = CAST(f_char1 AS SIGNED INT),
21881 f_charbig = 'just inserted'
21882 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21884 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21885 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21886 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21887 'just inserted' FROM t0_template
21888 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21889 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21891 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21892 f_charbig = 'updated by trigger'
21893 WHERE f_int1 = - old.f_int1;
21896 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21898 # check trigger-7 success: 1
21899 DROP TRIGGER trg_1;
21900 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21901 f_int2 = CAST(f_char1 AS SIGNED INT),
21902 f_charbig = 'just inserted'
21903 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21905 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21906 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21907 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21908 'just inserted' FROM t0_template
21909 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21910 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21912 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21913 f_charbig = 'updated by trigger'
21914 WHERE f_int1 = - old.f_int1;
21917 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21919 # check trigger-8 success: 1
21920 DROP TRIGGER trg_1;
21921 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21922 f_int2 = CAST(f_char1 AS SIGNED INT),
21923 f_charbig = 'just inserted'
21924 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21926 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21928 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21929 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21931 SET new.f_int1 = old.f_int1 + @max_row,
21932 new.f_int2 = old.f_int2 - @max_row,
21933 new.f_charbig = '####updated per update trigger####';
21936 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21937 f_charbig = '####updated per update statement itself####';
21939 # check trigger-9 success: 1
21940 DROP TRIGGER trg_2;
21941 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21942 f_int2 = CAST(f_char1 AS SIGNED INT),
21943 f_charbig = CONCAT('===',f_char1,'===');
21944 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21946 SET new.f_int1 = new.f_int1 + @max_row,
21947 new.f_int2 = new.f_int2 - @max_row,
21948 new.f_charbig = '####updated per update trigger####';
21951 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21952 f_charbig = '####updated per update statement itself####';
21954 # check trigger-10 success: 1
21955 DROP TRIGGER trg_2;
21956 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21957 f_int2 = CAST(f_char1 AS SIGNED INT),
21958 f_charbig = CONCAT('===',f_char1,'===');
21959 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21961 SET new.f_int1 = @my_max1 + @counter,
21962 new.f_int2 = @my_min2 - @counter,
21963 new.f_charbig = '####updated per insert trigger####';
21964 SET @counter = @counter + 1;
21967 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21968 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21969 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21970 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21971 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21973 DROP TRIGGER trg_3;
21975 # check trigger-11 success: 1
21977 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21978 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21979 AND f_charbig = '####updated per insert trigger####';
21980 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21982 SET new.f_int1 = @my_max1 + @counter,
21983 new.f_int2 = @my_min2 - @counter,
21984 new.f_charbig = '####updated per insert trigger####';
21985 SET @counter = @counter + 1;
21988 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21989 INSERT INTO t1 (f_char1, f_char2, f_charbig)
21990 SELECT CAST(f_int1 AS CHAR),
21991 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21992 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21994 DROP TRIGGER trg_3;
21996 # check trigger-12 success: 1
21998 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21999 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22000 AND f_charbig = '####updated per insert trigger####';
22002 Table Op Msg_type Msg_text
22003 test.t1 analyze status OK
22004 CHECK TABLE t1 EXTENDED;
22005 Table Op Msg_type Msg_text
22006 test.t1 check status OK
22007 CHECKSUM TABLE t1 EXTENDED;
22009 test.t1 <some_value>
22011 Table Op Msg_type Msg_text
22012 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
22013 test.t1 optimize status OK
22014 # check layout success: 1
22015 REPAIR TABLE t1 EXTENDED;
22016 Table Op Msg_type Msg_text
22017 test.t1 repair note The storage engine for the table doesn't support repair
22018 # check layout success: 1
22021 # check TRUNCATE success: 1
22022 # check layout success: 1
22023 # End usability test (inc/partition_check.inc)
22030 f_charbig VARCHAR(1000)
22033 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
22034 (PARTITION parta VALUES LESS THAN (0),
22035 PARTITION partb VALUES LESS THAN (5),
22036 PARTITION partc VALUES LESS THAN (10),
22037 PARTITION partd VALUES LESS THAN (2147483646));
22038 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22039 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22040 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22041 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
22042 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22043 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22044 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22045 # Start usability test (inc/partition_check.inc)
22047 SHOW CREATE TABLE t1;
22049 t1 CREATE TABLE `t1` (
22050 `f_int1` mediumint(9) DEFAULT NULL,
22051 `f_int2` mediumint(9) DEFAULT NULL,
22052 `f_char1` char(20) DEFAULT NULL,
22053 `f_char2` char(20) DEFAULT NULL,
22054 `f_charbig` varchar(1000) DEFAULT NULL
22055 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
22056 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
22057 SUBPARTITION BY HASH (f_int1)
22059 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
22060 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
22061 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
22062 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
22064 # check prerequisites-1 success: 1
22065 # check COUNT(*) success: 1
22066 # check MIN/MAX(f_int1) success: 1
22067 # check MIN/MAX(f_int2) success: 1
22068 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22069 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22070 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22071 WHERE f_int1 IN (2,3);
22072 # check prerequisites-3 success: 1
22073 DELETE FROM t1 WHERE f_charbig = 'delete me';
22074 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
22075 # check read via f_int1 success: 1
22076 # check read via f_int2 success: 1
22078 # check multiple-1 success: 1
22079 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22081 # check multiple-2 success: 1
22082 INSERT INTO t1 SELECT * FROM t0_template
22083 WHERE MOD(f_int1,3) = 0;
22085 # check multiple-3 success: 1
22086 UPDATE t1 SET f_int1 = f_int1 + @max_row
22087 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22088 AND @max_row_div2 + @max_row_div4;
22090 # check multiple-4 success: 1
22092 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22093 AND @max_row_div2 + @max_row_div4 + @max_row;
22095 # check multiple-5 success: 1
22096 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22098 SET f_int1 = @cur_value , f_int2 = @cur_value,
22099 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22100 f_charbig = '#SINGLE#';
22102 # check single-1 success: 1
22103 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22105 SET f_int1 = @cur_value , f_int2 = @cur_value,
22106 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22107 f_charbig = '#SINGLE#';
22109 # check single-2 success: 1
22110 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22111 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22112 UPDATE t1 SET f_int1 = @cur_value2
22113 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22115 # check single-3 success: 1
22116 SET @cur_value1= -1;
22117 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22118 UPDATE t1 SET f_int1 = @cur_value1
22119 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22121 # check single-4 success: 1
22122 SELECT MAX(f_int1) INTO @cur_value FROM t1;
22123 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22125 # check single-5 success: 1
22126 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22128 # check single-6 success: 1
22129 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22131 Warning 1264 Out of range value for column 'f_int1' at row 1
22132 Warning 1264 Out of range value for column 'f_int2' at row 1
22134 # check single-7 success: 1
22135 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22136 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22137 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22138 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22139 f_charbig = '#NULL#';
22141 SET f_int1 = NULL , f_int2 = -@max_row,
22142 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22143 f_charbig = '#NULL#';
22144 # check null success: 1
22146 # check null-1 success: 1
22147 UPDATE t1 SET f_int1 = -@max_row
22148 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22149 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22151 # check null-2 success: 1
22152 UPDATE t1 SET f_int1 = NULL
22153 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22154 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22156 # check null-3 success: 1
22158 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22159 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22161 # check null-4 success: 1
22163 WHERE f_int1 = 0 AND f_int2 = 0
22164 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22165 AND f_charbig = '#NULL#';
22167 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22168 SELECT f_int1, f_int1, '', '', 'was inserted'
22169 FROM t0_template source_tab
22170 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22172 # check transactions-1 success: 1
22175 # check transactions-2 success: 1
22178 # check transactions-3 success: 1
22179 DELETE FROM t1 WHERE f_charbig = 'was inserted';
22183 # check transactions-4 success: 1
22184 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22185 SELECT f_int1, f_int1, '', '', 'was inserted'
22186 FROM t0_template source_tab
22187 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22189 # check transactions-5 success: 1
22192 # check transactions-6 success: 1
22193 # INFO: Storage engine used for t1 seems to be transactional.
22196 # check transactions-7 success: 1
22197 DELETE FROM t1 WHERE f_charbig = 'was inserted';
22199 SET @@session.sql_mode = 'traditional';
22200 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22201 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22202 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22203 '', '', 'was inserted' FROM t0_template
22204 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22205 ERROR 22012: Division by 0
22208 # check transactions-8 success: 1
22209 # INFO: Storage engine used for t1 seems to be able to revert
22210 # changes made by the failing statement.
22211 SET @@session.sql_mode = '';
22213 DELETE FROM t1 WHERE f_charbig = 'was inserted';
22215 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22217 # check special-1 success: 1
22218 UPDATE t1 SET f_charbig = '';
22220 # check special-2 success: 1
22221 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22222 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22223 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22224 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22225 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22226 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22227 'just inserted' FROM t0_template
22228 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22229 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22231 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22232 f_charbig = 'updated by trigger'
22233 WHERE f_int1 = new.f_int1;
22235 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22236 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22237 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22239 # check trigger-1 success: 1
22240 DROP TRIGGER trg_1;
22241 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22242 f_int2 = CAST(f_char1 AS SIGNED INT),
22243 f_charbig = 'just inserted'
22244 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22246 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22247 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22248 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22249 'just inserted' FROM t0_template
22250 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22251 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22253 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22254 f_charbig = 'updated by trigger'
22255 WHERE f_int1 = new.f_int1;
22257 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22258 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22259 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22261 # check trigger-2 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);
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 BEFORE UPDATE ON t0_aux FOR EACH ROW
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;
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));
22282 # check trigger-3 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);
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 BEFORE UPDATE ON t0_aux FOR EACH ROW
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;
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));
22303 # check trigger-4 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);
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 AFTER UPDATE ON t0_aux FOR EACH ROW
22317 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22318 f_charbig = 'updated by trigger'
22319 WHERE f_int1 = new.f_int1;
22321 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22322 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22324 # check trigger-5 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);
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 UPDATE ON t0_aux FOR EACH ROW
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;
22342 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22343 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22345 # check trigger-6 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);
22352 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22353 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22354 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22355 'just inserted' FROM t0_template
22356 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22357 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22359 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22360 f_charbig = 'updated by trigger'
22361 WHERE f_int1 = - old.f_int1;
22364 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22366 # check trigger-7 success: 1
22367 DROP TRIGGER trg_1;
22368 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22369 f_int2 = CAST(f_char1 AS SIGNED INT),
22370 f_charbig = 'just inserted'
22371 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22373 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22374 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22375 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22376 'just inserted' FROM t0_template
22377 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22378 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22380 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22381 f_charbig = 'updated by trigger'
22382 WHERE f_int1 = - old.f_int1;
22385 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22387 # check trigger-8 success: 1
22388 DROP TRIGGER trg_1;
22389 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22390 f_int2 = CAST(f_char1 AS SIGNED INT),
22391 f_charbig = 'just inserted'
22392 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22394 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22396 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22397 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22399 SET new.f_int1 = old.f_int1 + @max_row,
22400 new.f_int2 = old.f_int2 - @max_row,
22401 new.f_charbig = '####updated per update trigger####';
22404 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22405 f_charbig = '####updated per update statement itself####';
22407 # check trigger-9 success: 1
22408 DROP TRIGGER trg_2;
22409 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22410 f_int2 = CAST(f_char1 AS SIGNED INT),
22411 f_charbig = CONCAT('===',f_char1,'===');
22412 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22414 SET new.f_int1 = new.f_int1 + @max_row,
22415 new.f_int2 = new.f_int2 - @max_row,
22416 new.f_charbig = '####updated per update trigger####';
22419 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22420 f_charbig = '####updated per update statement itself####';
22422 # check trigger-10 success: 1
22423 DROP TRIGGER trg_2;
22424 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22425 f_int2 = CAST(f_char1 AS SIGNED INT),
22426 f_charbig = CONCAT('===',f_char1,'===');
22427 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22429 SET new.f_int1 = @my_max1 + @counter,
22430 new.f_int2 = @my_min2 - @counter,
22431 new.f_charbig = '####updated per insert trigger####';
22432 SET @counter = @counter + 1;
22435 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22436 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22437 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22438 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22439 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22441 DROP TRIGGER trg_3;
22443 # check trigger-11 success: 1
22445 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22446 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22447 AND f_charbig = '####updated per insert trigger####';
22448 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22450 SET new.f_int1 = @my_max1 + @counter,
22451 new.f_int2 = @my_min2 - @counter,
22452 new.f_charbig = '####updated per insert trigger####';
22453 SET @counter = @counter + 1;
22456 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22457 INSERT INTO t1 (f_char1, f_char2, f_charbig)
22458 SELECT CAST(f_int1 AS CHAR),
22459 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22460 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22462 DROP TRIGGER trg_3;
22464 # check trigger-12 success: 1
22466 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22467 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22468 AND f_charbig = '####updated per insert trigger####';
22470 Table Op Msg_type Msg_text
22471 test.t1 analyze status OK
22472 CHECK TABLE t1 EXTENDED;
22473 Table Op Msg_type Msg_text
22474 test.t1 check status OK
22475 CHECKSUM TABLE t1 EXTENDED;
22477 test.t1 <some_value>
22479 Table Op Msg_type Msg_text
22480 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
22481 test.t1 optimize status OK
22482 # check layout success: 1
22483 REPAIR TABLE t1 EXTENDED;
22484 Table Op Msg_type Msg_text
22485 test.t1 repair note The storage engine for the table doesn't support repair
22486 # check layout success: 1
22489 # check TRUNCATE success: 1
22490 # check layout success: 1
22491 # End usability test (inc/partition_check.inc)
22498 f_charbig VARCHAR(1000)
22501 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
22502 (PARTITION part1 VALUES LESS THAN (0)
22503 (SUBPARTITION subpart11, SUBPARTITION subpart12),
22504 PARTITION part2 VALUES LESS THAN (5)
22505 (SUBPARTITION subpart21, SUBPARTITION subpart22),
22506 PARTITION part3 VALUES LESS THAN (10)
22507 (SUBPARTITION subpart31, SUBPARTITION subpart32),
22508 PARTITION part4 VALUES LESS THAN (2147483646)
22509 (SUBPARTITION subpart41, SUBPARTITION subpart42));
22510 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22511 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22512 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22513 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
22514 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22515 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22516 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22517 # Start usability test (inc/partition_check.inc)
22519 SHOW CREATE TABLE t1;
22521 t1 CREATE TABLE `t1` (
22522 `f_int1` mediumint(9) DEFAULT NULL,
22523 `f_int2` mediumint(9) DEFAULT NULL,
22524 `f_char1` char(20) DEFAULT NULL,
22525 `f_char2` char(20) DEFAULT NULL,
22526 `f_charbig` varchar(1000) DEFAULT NULL
22527 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
22528 /*!50100 PARTITION BY RANGE (f_int1)
22529 SUBPARTITION BY KEY (f_int1)
22530 (PARTITION part1 VALUES LESS THAN (0)
22531 (SUBPARTITION subpart11 ENGINE = InnoDB,
22532 SUBPARTITION subpart12 ENGINE = InnoDB),
22533 PARTITION part2 VALUES LESS THAN (5)
22534 (SUBPARTITION subpart21 ENGINE = InnoDB,
22535 SUBPARTITION subpart22 ENGINE = InnoDB),
22536 PARTITION part3 VALUES LESS THAN (10)
22537 (SUBPARTITION subpart31 ENGINE = InnoDB,
22538 SUBPARTITION subpart32 ENGINE = InnoDB),
22539 PARTITION part4 VALUES LESS THAN (2147483646)
22540 (SUBPARTITION subpart41 ENGINE = InnoDB,
22541 SUBPARTITION subpart42 ENGINE = InnoDB)) */
22543 # check prerequisites-1 success: 1
22544 # check COUNT(*) success: 1
22545 # check MIN/MAX(f_int1) success: 1
22546 # check MIN/MAX(f_int2) success: 1
22547 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22548 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22549 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22550 WHERE f_int1 IN (2,3);
22551 # check prerequisites-3 success: 1
22552 DELETE FROM t1 WHERE f_charbig = 'delete me';
22553 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
22554 # check read via f_int1 success: 1
22555 # check read via f_int2 success: 1
22557 # check multiple-1 success: 1
22558 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22560 # check multiple-2 success: 1
22561 INSERT INTO t1 SELECT * FROM t0_template
22562 WHERE MOD(f_int1,3) = 0;
22564 # check multiple-3 success: 1
22565 UPDATE t1 SET f_int1 = f_int1 + @max_row
22566 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22567 AND @max_row_div2 + @max_row_div4;
22569 # check multiple-4 success: 1
22571 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22572 AND @max_row_div2 + @max_row_div4 + @max_row;
22574 # check multiple-5 success: 1
22575 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22577 SET f_int1 = @cur_value , f_int2 = @cur_value,
22578 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22579 f_charbig = '#SINGLE#';
22581 # check single-1 success: 1
22582 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22584 SET f_int1 = @cur_value , f_int2 = @cur_value,
22585 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22586 f_charbig = '#SINGLE#';
22588 # check single-2 success: 1
22589 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22590 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22591 UPDATE t1 SET f_int1 = @cur_value2
22592 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22594 # check single-3 success: 1
22595 SET @cur_value1= -1;
22596 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22597 UPDATE t1 SET f_int1 = @cur_value1
22598 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22600 # check single-4 success: 1
22601 SELECT MAX(f_int1) INTO @cur_value FROM t1;
22602 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22604 # check single-5 success: 1
22605 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22607 # check single-6 success: 1
22608 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22610 Warning 1264 Out of range value for column 'f_int1' at row 1
22611 Warning 1264 Out of range value for column 'f_int2' at row 1
22613 # check single-7 success: 1
22614 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22615 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22616 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22617 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22618 f_charbig = '#NULL#';
22620 SET f_int1 = NULL , f_int2 = -@max_row,
22621 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22622 f_charbig = '#NULL#';
22623 # check null success: 1
22625 # check null-1 success: 1
22626 UPDATE t1 SET f_int1 = -@max_row
22627 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22628 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22630 # check null-2 success: 1
22631 UPDATE t1 SET f_int1 = NULL
22632 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22633 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22635 # check null-3 success: 1
22637 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22638 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22640 # check null-4 success: 1
22642 WHERE f_int1 = 0 AND f_int2 = 0
22643 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22644 AND f_charbig = '#NULL#';
22646 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22647 SELECT f_int1, f_int1, '', '', 'was inserted'
22648 FROM t0_template source_tab
22649 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22651 # check transactions-1 success: 1
22654 # check transactions-2 success: 1
22657 # check transactions-3 success: 1
22658 DELETE FROM t1 WHERE f_charbig = 'was inserted';
22662 # check transactions-4 success: 1
22663 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22664 SELECT f_int1, f_int1, '', '', 'was inserted'
22665 FROM t0_template source_tab
22666 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22668 # check transactions-5 success: 1
22671 # check transactions-6 success: 1
22672 # INFO: Storage engine used for t1 seems to be transactional.
22675 # check transactions-7 success: 1
22676 DELETE FROM t1 WHERE f_charbig = 'was inserted';
22678 SET @@session.sql_mode = 'traditional';
22679 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22680 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22681 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22682 '', '', 'was inserted' FROM t0_template
22683 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22684 ERROR 22012: Division by 0
22687 # check transactions-8 success: 1
22688 # INFO: Storage engine used for t1 seems to be able to revert
22689 # changes made by the failing statement.
22690 SET @@session.sql_mode = '';
22692 DELETE FROM t1 WHERE f_charbig = 'was inserted';
22694 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22696 # check special-1 success: 1
22697 UPDATE t1 SET f_charbig = '';
22699 # check special-2 success: 1
22700 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22701 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22702 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22703 WHERE 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 BEFORE INSERT ON t0_aux FOR EACH ROW
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;
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;
22718 # check trigger-1 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);
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 AFTER INSERT ON t0_aux FOR EACH ROW
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;
22736 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22737 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22738 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22740 # check trigger-2 success: 1
22741 DROP TRIGGER trg_1;
22742 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22743 f_int2 = CAST(f_char1 AS SIGNED INT),
22744 f_charbig = 'just inserted'
22745 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22747 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22748 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22749 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22750 'just inserted' FROM t0_template
22751 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22752 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22754 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22755 f_charbig = 'updated by trigger'
22756 WHERE f_int1 = new.f_int1;
22758 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22759 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22761 # check trigger-3 success: 1
22762 DROP TRIGGER trg_1;
22763 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22764 f_int2 = CAST(f_char1 AS SIGNED INT),
22765 f_charbig = 'just inserted'
22766 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22768 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22769 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22770 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22771 'just inserted' FROM t0_template
22772 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22773 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22775 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22776 f_charbig = 'updated by trigger'
22777 WHERE f_int1 = - old.f_int1;
22779 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22780 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22782 # check trigger-4 success: 1
22783 DROP TRIGGER trg_1;
22784 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22785 f_int2 = CAST(f_char1 AS SIGNED INT),
22786 f_charbig = 'just inserted'
22787 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22789 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22790 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22791 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22792 'just inserted' FROM t0_template
22793 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22794 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22796 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22797 f_charbig = 'updated by trigger'
22798 WHERE f_int1 = new.f_int1;
22800 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22801 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22803 # check trigger-5 success: 1
22804 DROP TRIGGER trg_1;
22805 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22806 f_int2 = CAST(f_char1 AS SIGNED INT),
22807 f_charbig = 'just inserted'
22808 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22810 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22811 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22812 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22813 'just inserted' FROM t0_template
22814 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22815 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22817 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22818 f_charbig = 'updated by trigger'
22819 WHERE f_int1 = - old.f_int1;
22821 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22822 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22824 # check trigger-6 success: 1
22825 DROP TRIGGER trg_1;
22826 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22827 f_int2 = CAST(f_char1 AS SIGNED INT),
22828 f_charbig = 'just inserted'
22829 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22831 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22832 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22833 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22834 'just inserted' FROM t0_template
22835 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22836 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22838 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22839 f_charbig = 'updated by trigger'
22840 WHERE f_int1 = - old.f_int1;
22843 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22845 # check trigger-7 success: 1
22846 DROP TRIGGER trg_1;
22847 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22848 f_int2 = CAST(f_char1 AS SIGNED INT),
22849 f_charbig = 'just inserted'
22850 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22852 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22853 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22854 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22855 'just inserted' FROM t0_template
22856 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22857 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22859 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22860 f_charbig = 'updated by trigger'
22861 WHERE f_int1 = - old.f_int1;
22864 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22866 # check trigger-8 success: 1
22867 DROP TRIGGER trg_1;
22868 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22869 f_int2 = CAST(f_char1 AS SIGNED INT),
22870 f_charbig = 'just inserted'
22871 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22873 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22875 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22876 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22878 SET new.f_int1 = old.f_int1 + @max_row,
22879 new.f_int2 = old.f_int2 - @max_row,
22880 new.f_charbig = '####updated per update trigger####';
22883 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22884 f_charbig = '####updated per update statement itself####';
22886 # check trigger-9 success: 1
22887 DROP TRIGGER trg_2;
22888 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22889 f_int2 = CAST(f_char1 AS SIGNED INT),
22890 f_charbig = CONCAT('===',f_char1,'===');
22891 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22893 SET new.f_int1 = new.f_int1 + @max_row,
22894 new.f_int2 = new.f_int2 - @max_row,
22895 new.f_charbig = '####updated per update trigger####';
22898 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22899 f_charbig = '####updated per update statement itself####';
22901 # check trigger-10 success: 1
22902 DROP TRIGGER trg_2;
22903 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22904 f_int2 = CAST(f_char1 AS SIGNED INT),
22905 f_charbig = CONCAT('===',f_char1,'===');
22906 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22908 SET new.f_int1 = @my_max1 + @counter,
22909 new.f_int2 = @my_min2 - @counter,
22910 new.f_charbig = '####updated per insert trigger####';
22911 SET @counter = @counter + 1;
22914 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22915 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22916 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22917 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22918 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22920 DROP TRIGGER trg_3;
22922 # check trigger-11 success: 1
22924 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22925 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22926 AND f_charbig = '####updated per insert trigger####';
22927 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22929 SET new.f_int1 = @my_max1 + @counter,
22930 new.f_int2 = @my_min2 - @counter,
22931 new.f_charbig = '####updated per insert trigger####';
22932 SET @counter = @counter + 1;
22935 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22936 INSERT INTO t1 (f_char1, f_char2, f_charbig)
22937 SELECT CAST(f_int1 AS CHAR),
22938 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22939 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22941 DROP TRIGGER trg_3;
22943 # check trigger-12 success: 1
22945 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22946 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22947 AND f_charbig = '####updated per insert trigger####';
22949 Table Op Msg_type Msg_text
22950 test.t1 analyze status OK
22951 CHECK TABLE t1 EXTENDED;
22952 Table Op Msg_type Msg_text
22953 test.t1 check status OK
22954 CHECKSUM TABLE t1 EXTENDED;
22956 test.t1 <some_value>
22958 Table Op Msg_type Msg_text
22959 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
22960 test.t1 optimize status OK
22961 # check layout success: 1
22962 REPAIR TABLE t1 EXTENDED;
22963 Table Op Msg_type Msg_text
22964 test.t1 repair note The storage engine for the table doesn't support repair
22965 # check layout success: 1
22968 # check TRUNCATE success: 1
22969 # check layout success: 1
22970 # End usability test (inc/partition_check.inc)
22977 f_charbig VARCHAR(1000)
22980 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
22981 (PARTITION part1 VALUES IN (0)
22982 (SUBPARTITION sp11, SUBPARTITION sp12),
22983 PARTITION part2 VALUES IN (1)
22984 (SUBPARTITION sp21, SUBPARTITION sp22),
22985 PARTITION part3 VALUES IN (2)
22986 (SUBPARTITION sp31, SUBPARTITION sp32),
22987 PARTITION part4 VALUES IN (NULL)
22988 (SUBPARTITION sp41, SUBPARTITION sp42));
22989 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22990 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22991 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22992 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
22993 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22994 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22995 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22996 # Start usability test (inc/partition_check.inc)
22998 SHOW CREATE TABLE t1;
23000 t1 CREATE TABLE `t1` (
23001 `f_int1` mediumint(9) DEFAULT NULL,
23002 `f_int2` mediumint(9) DEFAULT NULL,
23003 `f_char1` char(20) DEFAULT NULL,
23004 `f_char2` char(20) DEFAULT NULL,
23005 `f_charbig` varchar(1000) DEFAULT NULL
23006 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
23007 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
23008 SUBPARTITION BY HASH (f_int1 + 1)
23009 (PARTITION part1 VALUES IN (0)
23010 (SUBPARTITION sp11 ENGINE = InnoDB,
23011 SUBPARTITION sp12 ENGINE = InnoDB),
23012 PARTITION part2 VALUES IN (1)
23013 (SUBPARTITION sp21 ENGINE = InnoDB,
23014 SUBPARTITION sp22 ENGINE = InnoDB),
23015 PARTITION part3 VALUES IN (2)
23016 (SUBPARTITION sp31 ENGINE = InnoDB,
23017 SUBPARTITION sp32 ENGINE = InnoDB),
23018 PARTITION part4 VALUES IN (NULL)
23019 (SUBPARTITION sp41 ENGINE = InnoDB,
23020 SUBPARTITION sp42 ENGINE = InnoDB)) */
23022 # check prerequisites-1 success: 1
23023 # check COUNT(*) success: 1
23024 # check MIN/MAX(f_int1) success: 1
23025 # check MIN/MAX(f_int2) success: 1
23026 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23027 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23028 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23029 WHERE f_int1 IN (2,3);
23030 # check prerequisites-3 success: 1
23031 DELETE FROM t1 WHERE f_charbig = 'delete me';
23032 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
23033 # check read via f_int1 success: 1
23034 # check read via f_int2 success: 1
23036 # check multiple-1 success: 1
23037 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23039 # check multiple-2 success: 1
23040 INSERT INTO t1 SELECT * FROM t0_template
23041 WHERE MOD(f_int1,3) = 0;
23043 # check multiple-3 success: 1
23044 UPDATE t1 SET f_int1 = f_int1 + @max_row
23045 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23046 AND @max_row_div2 + @max_row_div4;
23048 # check multiple-4 success: 1
23050 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23051 AND @max_row_div2 + @max_row_div4 + @max_row;
23053 # check multiple-5 success: 1
23054 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23056 SET f_int1 = @cur_value , f_int2 = @cur_value,
23057 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23058 f_charbig = '#SINGLE#';
23060 # check single-1 success: 1
23061 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23063 SET f_int1 = @cur_value , f_int2 = @cur_value,
23064 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23065 f_charbig = '#SINGLE#';
23067 # check single-2 success: 1
23068 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23069 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23070 UPDATE t1 SET f_int1 = @cur_value2
23071 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23073 # check single-3 success: 1
23074 SET @cur_value1= -1;
23075 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23076 UPDATE t1 SET f_int1 = @cur_value1
23077 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23079 # check single-4 success: 1
23080 SELECT MAX(f_int1) INTO @cur_value FROM t1;
23081 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23083 # check single-5 success: 1
23084 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23086 # check single-6 success: 1
23087 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23089 Warning 1264 Out of range value for column 'f_int1' at row 1
23090 Warning 1264 Out of range value for column 'f_int2' at row 1
23092 # check single-7 success: 1
23093 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
23094 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23095 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23096 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23097 f_charbig = '#NULL#';
23099 SET f_int1 = NULL , f_int2 = -@max_row,
23100 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23101 f_charbig = '#NULL#';
23102 # check null success: 1
23104 # check null-1 success: 1
23105 UPDATE t1 SET f_int1 = -@max_row
23106 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23107 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23109 # check null-2 success: 1
23110 UPDATE t1 SET f_int1 = NULL
23111 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23112 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23114 # check null-3 success: 1
23116 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23117 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23119 # check null-4 success: 1
23121 WHERE f_int1 = 0 AND f_int2 = 0
23122 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23123 AND f_charbig = '#NULL#';
23125 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23126 SELECT f_int1, f_int1, '', '', 'was inserted'
23127 FROM t0_template source_tab
23128 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23130 # check transactions-1 success: 1
23133 # check transactions-2 success: 1
23136 # check transactions-3 success: 1
23137 DELETE FROM t1 WHERE f_charbig = 'was inserted';
23141 # check transactions-4 success: 1
23142 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23143 SELECT f_int1, f_int1, '', '', 'was inserted'
23144 FROM t0_template source_tab
23145 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23147 # check transactions-5 success: 1
23150 # check transactions-6 success: 1
23151 # INFO: Storage engine used for t1 seems to be transactional.
23154 # check transactions-7 success: 1
23155 DELETE FROM t1 WHERE f_charbig = 'was inserted';
23157 SET @@session.sql_mode = 'traditional';
23158 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23159 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23160 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23161 '', '', 'was inserted' FROM t0_template
23162 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23163 ERROR 22012: Division by 0
23166 # check transactions-8 success: 1
23167 # INFO: Storage engine used for t1 seems to be able to revert
23168 # changes made by the failing statement.
23169 SET @@session.sql_mode = '';
23171 DELETE FROM t1 WHERE f_charbig = 'was inserted';
23173 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23175 # check special-1 success: 1
23176 UPDATE t1 SET f_charbig = '';
23178 # check special-2 success: 1
23179 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23180 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23181 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23182 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23183 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23184 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23185 'just inserted' FROM t0_template
23186 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23187 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23189 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23190 f_charbig = 'updated by trigger'
23191 WHERE f_int1 = new.f_int1;
23193 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23194 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23195 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23197 # check trigger-1 success: 1
23198 DROP TRIGGER trg_1;
23199 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23200 f_int2 = CAST(f_char1 AS SIGNED INT),
23201 f_charbig = 'just inserted'
23202 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23204 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23205 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23206 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23207 'just inserted' FROM t0_template
23208 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23209 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23211 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23212 f_charbig = 'updated by trigger'
23213 WHERE f_int1 = new.f_int1;
23215 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23216 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23217 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23219 # check trigger-2 success: 1
23220 DROP TRIGGER trg_1;
23221 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23222 f_int2 = CAST(f_char1 AS SIGNED INT),
23223 f_charbig = 'just inserted'
23224 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23226 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23227 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23228 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23229 'just inserted' FROM t0_template
23230 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23231 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23233 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23234 f_charbig = 'updated by trigger'
23235 WHERE f_int1 = new.f_int1;
23237 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23238 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23240 # check trigger-3 success: 1
23241 DROP TRIGGER trg_1;
23242 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23243 f_int2 = CAST(f_char1 AS SIGNED INT),
23244 f_charbig = 'just inserted'
23245 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23247 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23248 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23249 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23250 'just inserted' FROM t0_template
23251 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23252 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23254 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23255 f_charbig = 'updated by trigger'
23256 WHERE f_int1 = - old.f_int1;
23258 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23259 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23261 # check trigger-4 success: 1
23262 DROP TRIGGER trg_1;
23263 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23264 f_int2 = CAST(f_char1 AS SIGNED INT),
23265 f_charbig = 'just inserted'
23266 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23268 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23269 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23270 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23271 'just inserted' FROM t0_template
23272 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23273 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23275 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23276 f_charbig = 'updated by trigger'
23277 WHERE f_int1 = new.f_int1;
23279 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23280 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23282 # check trigger-5 success: 1
23283 DROP TRIGGER trg_1;
23284 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23285 f_int2 = CAST(f_char1 AS SIGNED INT),
23286 f_charbig = 'just inserted'
23287 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23289 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23290 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23291 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23292 'just inserted' FROM t0_template
23293 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23294 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23296 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23297 f_charbig = 'updated by trigger'
23298 WHERE f_int1 = - old.f_int1;
23300 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23301 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23303 # check trigger-6 success: 1
23304 DROP TRIGGER trg_1;
23305 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23306 f_int2 = CAST(f_char1 AS SIGNED INT),
23307 f_charbig = 'just inserted'
23308 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23310 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23311 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23312 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23313 'just inserted' FROM t0_template
23314 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23315 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23317 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23318 f_charbig = 'updated by trigger'
23319 WHERE f_int1 = - old.f_int1;
23322 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23324 # check trigger-7 success: 1
23325 DROP TRIGGER trg_1;
23326 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23327 f_int2 = CAST(f_char1 AS SIGNED INT),
23328 f_charbig = 'just inserted'
23329 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23331 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23332 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23333 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23334 'just inserted' FROM t0_template
23335 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23336 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23338 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23339 f_charbig = 'updated by trigger'
23340 WHERE f_int1 = - old.f_int1;
23343 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23345 # check trigger-8 success: 1
23346 DROP TRIGGER trg_1;
23347 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23348 f_int2 = CAST(f_char1 AS SIGNED INT),
23349 f_charbig = 'just inserted'
23350 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23352 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23354 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23355 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23357 SET new.f_int1 = old.f_int1 + @max_row,
23358 new.f_int2 = old.f_int2 - @max_row,
23359 new.f_charbig = '####updated per update trigger####';
23362 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23363 f_charbig = '####updated per update statement itself####';
23365 # check trigger-9 success: 1
23366 DROP TRIGGER trg_2;
23367 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23368 f_int2 = CAST(f_char1 AS SIGNED INT),
23369 f_charbig = CONCAT('===',f_char1,'===');
23370 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23372 SET new.f_int1 = new.f_int1 + @max_row,
23373 new.f_int2 = new.f_int2 - @max_row,
23374 new.f_charbig = '####updated per update trigger####';
23377 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23378 f_charbig = '####updated per update statement itself####';
23380 # check trigger-10 success: 1
23381 DROP TRIGGER trg_2;
23382 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23383 f_int2 = CAST(f_char1 AS SIGNED INT),
23384 f_charbig = CONCAT('===',f_char1,'===');
23385 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23387 SET new.f_int1 = @my_max1 + @counter,
23388 new.f_int2 = @my_min2 - @counter,
23389 new.f_charbig = '####updated per insert trigger####';
23390 SET @counter = @counter + 1;
23393 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23394 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23395 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23396 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23397 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23399 DROP TRIGGER trg_3;
23401 # check trigger-11 success: 1
23403 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23404 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23405 AND f_charbig = '####updated per insert trigger####';
23406 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23408 SET new.f_int1 = @my_max1 + @counter,
23409 new.f_int2 = @my_min2 - @counter,
23410 new.f_charbig = '####updated per insert trigger####';
23411 SET @counter = @counter + 1;
23414 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23415 INSERT INTO t1 (f_char1, f_char2, f_charbig)
23416 SELECT CAST(f_int1 AS CHAR),
23417 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23418 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23420 DROP TRIGGER trg_3;
23422 # check trigger-12 success: 1
23424 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23425 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23426 AND f_charbig = '####updated per insert trigger####';
23428 Table Op Msg_type Msg_text
23429 test.t1 analyze status OK
23430 CHECK TABLE t1 EXTENDED;
23431 Table Op Msg_type Msg_text
23432 test.t1 check status OK
23433 CHECKSUM TABLE t1 EXTENDED;
23435 test.t1 <some_value>
23437 Table Op Msg_type Msg_text
23438 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
23439 test.t1 optimize status OK
23440 # check layout success: 1
23441 REPAIR TABLE t1 EXTENDED;
23442 Table Op Msg_type Msg_text
23443 test.t1 repair note The storage engine for the table doesn't support repair
23444 # check layout success: 1
23447 # check TRUNCATE success: 1
23448 # check layout success: 1
23449 # End usability test (inc/partition_check.inc)
23456 f_charbig VARCHAR(1000)
23459 PARTITION BY LIST(ABS(MOD(f_int1,2)))
23460 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
23461 (PARTITION part1 VALUES IN (0),
23462 PARTITION part2 VALUES IN (1),
23463 PARTITION part3 VALUES IN (NULL));
23464 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23465 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23466 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23467 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
23468 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23469 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23470 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
23471 # Start usability test (inc/partition_check.inc)
23473 SHOW CREATE TABLE t1;
23475 t1 CREATE TABLE `t1` (
23476 `f_int1` mediumint(9) DEFAULT NULL,
23477 `f_int2` mediumint(9) DEFAULT NULL,
23478 `f_char1` char(20) DEFAULT NULL,
23479 `f_char2` char(20) DEFAULT NULL,
23480 `f_charbig` varchar(1000) DEFAULT NULL
23481 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
23482 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
23483 SUBPARTITION BY KEY (f_int1)
23485 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
23486 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
23487 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
23489 # check prerequisites-1 success: 1
23490 # check COUNT(*) success: 1
23491 # check MIN/MAX(f_int1) success: 1
23492 # check MIN/MAX(f_int2) success: 1
23493 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23494 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23495 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23496 WHERE f_int1 IN (2,3);
23497 # check prerequisites-3 success: 1
23498 DELETE FROM t1 WHERE f_charbig = 'delete me';
23499 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
23500 # check read via f_int1 success: 1
23501 # check read via f_int2 success: 1
23503 # check multiple-1 success: 1
23504 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23506 # check multiple-2 success: 1
23507 INSERT INTO t1 SELECT * FROM t0_template
23508 WHERE MOD(f_int1,3) = 0;
23510 # check multiple-3 success: 1
23511 UPDATE t1 SET f_int1 = f_int1 + @max_row
23512 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23513 AND @max_row_div2 + @max_row_div4;
23515 # check multiple-4 success: 1
23517 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23518 AND @max_row_div2 + @max_row_div4 + @max_row;
23520 # check multiple-5 success: 1
23521 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23523 SET f_int1 = @cur_value , f_int2 = @cur_value,
23524 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23525 f_charbig = '#SINGLE#';
23527 # check single-1 success: 1
23528 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23530 SET f_int1 = @cur_value , f_int2 = @cur_value,
23531 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23532 f_charbig = '#SINGLE#';
23534 # check single-2 success: 1
23535 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23536 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23537 UPDATE t1 SET f_int1 = @cur_value2
23538 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23540 # check single-3 success: 1
23541 SET @cur_value1= -1;
23542 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23543 UPDATE t1 SET f_int1 = @cur_value1
23544 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23546 # check single-4 success: 1
23547 SELECT MAX(f_int1) INTO @cur_value FROM t1;
23548 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23550 # check single-5 success: 1
23551 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23553 # check single-6 success: 1
23554 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23556 Warning 1264 Out of range value for column 'f_int1' at row 1
23557 Warning 1264 Out of range value for column 'f_int2' at row 1
23559 # check single-7 success: 1
23560 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
23561 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23562 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23563 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23564 f_charbig = '#NULL#';
23566 SET f_int1 = NULL , f_int2 = -@max_row,
23567 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23568 f_charbig = '#NULL#';
23569 # check null success: 1
23571 # check null-1 success: 1
23572 UPDATE t1 SET f_int1 = -@max_row
23573 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23574 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23576 # check null-2 success: 1
23577 UPDATE t1 SET f_int1 = NULL
23578 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23579 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23581 # check null-3 success: 1
23583 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23584 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23586 # check null-4 success: 1
23588 WHERE f_int1 = 0 AND f_int2 = 0
23589 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23590 AND f_charbig = '#NULL#';
23592 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23593 SELECT f_int1, f_int1, '', '', 'was inserted'
23594 FROM t0_template source_tab
23595 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23597 # check transactions-1 success: 1
23600 # check transactions-2 success: 1
23603 # check transactions-3 success: 1
23604 DELETE FROM t1 WHERE f_charbig = 'was inserted';
23608 # check transactions-4 success: 1
23609 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23610 SELECT f_int1, f_int1, '', '', 'was inserted'
23611 FROM t0_template source_tab
23612 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23614 # check transactions-5 success: 1
23617 # check transactions-6 success: 1
23618 # INFO: Storage engine used for t1 seems to be transactional.
23621 # check transactions-7 success: 1
23622 DELETE FROM t1 WHERE f_charbig = 'was inserted';
23624 SET @@session.sql_mode = 'traditional';
23625 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23626 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23627 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23628 '', '', 'was inserted' FROM t0_template
23629 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23630 ERROR 22012: Division by 0
23633 # check transactions-8 success: 1
23634 # INFO: Storage engine used for t1 seems to be able to revert
23635 # changes made by the failing statement.
23636 SET @@session.sql_mode = '';
23638 DELETE FROM t1 WHERE f_charbig = 'was inserted';
23640 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23642 # check special-1 success: 1
23643 UPDATE t1 SET f_charbig = '';
23645 # check special-2 success: 1
23646 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23647 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23648 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23649 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23650 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23651 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23652 'just inserted' FROM t0_template
23653 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23654 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23656 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23657 f_charbig = 'updated by trigger'
23658 WHERE f_int1 = new.f_int1;
23660 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23661 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23662 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23664 # check trigger-1 success: 1
23665 DROP TRIGGER trg_1;
23666 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23667 f_int2 = CAST(f_char1 AS SIGNED INT),
23668 f_charbig = 'just inserted'
23669 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23671 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23672 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23673 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23674 'just inserted' FROM t0_template
23675 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23676 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23678 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23679 f_charbig = 'updated by trigger'
23680 WHERE f_int1 = new.f_int1;
23682 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23683 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23684 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23686 # check trigger-2 success: 1
23687 DROP TRIGGER trg_1;
23688 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23689 f_int2 = CAST(f_char1 AS SIGNED INT),
23690 f_charbig = 'just inserted'
23691 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23693 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23694 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23695 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23696 'just inserted' FROM t0_template
23697 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23698 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23700 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23701 f_charbig = 'updated by trigger'
23702 WHERE f_int1 = new.f_int1;
23704 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23705 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23707 # check trigger-3 success: 1
23708 DROP TRIGGER trg_1;
23709 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23710 f_int2 = CAST(f_char1 AS SIGNED INT),
23711 f_charbig = 'just inserted'
23712 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23714 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23715 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23716 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23717 'just inserted' FROM t0_template
23718 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23719 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23721 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23722 f_charbig = 'updated by trigger'
23723 WHERE f_int1 = - old.f_int1;
23725 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23726 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23728 # check trigger-4 success: 1
23729 DROP TRIGGER trg_1;
23730 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23731 f_int2 = CAST(f_char1 AS SIGNED INT),
23732 f_charbig = 'just inserted'
23733 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23735 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23736 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23737 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23738 'just inserted' FROM t0_template
23739 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23740 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23742 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23743 f_charbig = 'updated by trigger'
23744 WHERE f_int1 = new.f_int1;
23746 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23747 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23749 # check trigger-5 success: 1
23750 DROP TRIGGER trg_1;
23751 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23752 f_int2 = CAST(f_char1 AS SIGNED INT),
23753 f_charbig = 'just inserted'
23754 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23756 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23757 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23758 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23759 'just inserted' FROM t0_template
23760 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23761 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23763 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23764 f_charbig = 'updated by trigger'
23765 WHERE f_int1 = - old.f_int1;
23767 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23768 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23770 # check trigger-6 success: 1
23771 DROP TRIGGER trg_1;
23772 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23773 f_int2 = CAST(f_char1 AS SIGNED INT),
23774 f_charbig = 'just inserted'
23775 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23777 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23778 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23779 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23780 'just inserted' FROM t0_template
23781 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23782 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23784 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23785 f_charbig = 'updated by trigger'
23786 WHERE f_int1 = - old.f_int1;
23789 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23791 # check trigger-7 success: 1
23792 DROP TRIGGER trg_1;
23793 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23794 f_int2 = CAST(f_char1 AS SIGNED INT),
23795 f_charbig = 'just inserted'
23796 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23798 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23799 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23800 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23801 'just inserted' FROM t0_template
23802 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23803 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23805 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23806 f_charbig = 'updated by trigger'
23807 WHERE f_int1 = - old.f_int1;
23810 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23812 # check trigger-8 success: 1
23813 DROP TRIGGER trg_1;
23814 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23815 f_int2 = CAST(f_char1 AS SIGNED INT),
23816 f_charbig = 'just inserted'
23817 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23819 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23821 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23822 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23824 SET new.f_int1 = old.f_int1 + @max_row,
23825 new.f_int2 = old.f_int2 - @max_row,
23826 new.f_charbig = '####updated per update trigger####';
23829 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23830 f_charbig = '####updated per update statement itself####';
23832 # check trigger-9 success: 1
23833 DROP TRIGGER trg_2;
23834 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23835 f_int2 = CAST(f_char1 AS SIGNED INT),
23836 f_charbig = CONCAT('===',f_char1,'===');
23837 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23839 SET new.f_int1 = new.f_int1 + @max_row,
23840 new.f_int2 = new.f_int2 - @max_row,
23841 new.f_charbig = '####updated per update trigger####';
23844 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23845 f_charbig = '####updated per update statement itself####';
23847 # check trigger-10 success: 1
23848 DROP TRIGGER trg_2;
23849 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23850 f_int2 = CAST(f_char1 AS SIGNED INT),
23851 f_charbig = CONCAT('===',f_char1,'===');
23852 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23854 SET new.f_int1 = @my_max1 + @counter,
23855 new.f_int2 = @my_min2 - @counter,
23856 new.f_charbig = '####updated per insert trigger####';
23857 SET @counter = @counter + 1;
23860 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23861 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23862 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23863 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23864 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23866 DROP TRIGGER trg_3;
23868 # check trigger-11 success: 1
23870 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23871 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23872 AND f_charbig = '####updated per insert trigger####';
23873 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23875 SET new.f_int1 = @my_max1 + @counter,
23876 new.f_int2 = @my_min2 - @counter,
23877 new.f_charbig = '####updated per insert trigger####';
23878 SET @counter = @counter + 1;
23881 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23882 INSERT INTO t1 (f_char1, f_char2, f_charbig)
23883 SELECT CAST(f_int1 AS CHAR),
23884 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23885 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23887 DROP TRIGGER trg_3;
23889 # check trigger-12 success: 1
23891 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23892 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23893 AND f_charbig = '####updated per insert trigger####';
23895 Table Op Msg_type Msg_text
23896 test.t1 analyze status OK
23897 CHECK TABLE t1 EXTENDED;
23898 Table Op Msg_type Msg_text
23899 test.t1 check status OK
23900 CHECKSUM TABLE t1 EXTENDED;
23902 test.t1 <some_value>
23904 Table Op Msg_type Msg_text
23905 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
23906 test.t1 optimize status OK
23907 # check layout success: 1
23908 REPAIR TABLE t1 EXTENDED;
23909 Table Op Msg_type Msg_text
23910 test.t1 repair note The storage engine for the table doesn't support repair
23911 # check layout success: 1
23914 # check TRUNCATE success: 1
23915 # check layout success: 1
23916 # End usability test (inc/partition_check.inc)
23918 DROP TABLE IF EXISTS t1;
23924 f_charbig VARCHAR(1000)
23927 PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
23928 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23929 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23930 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23931 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
23932 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23933 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23934 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
23935 # Start usability test (inc/partition_check.inc)
23937 SHOW CREATE TABLE t1;
23939 t1 CREATE TABLE `t1` (
23940 `f_int1` mediumint(9) DEFAULT NULL,
23941 `f_int2` mediumint(9) DEFAULT NULL,
23942 `f_char1` char(20) DEFAULT NULL,
23943 `f_char2` char(20) DEFAULT NULL,
23944 `f_charbig` varchar(1000) DEFAULT NULL
23945 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
23946 /*!50100 PARTITION BY HASH (f_int1 + f_int2)
23949 # check prerequisites-1 success: 1
23950 # check COUNT(*) success: 1
23951 # check MIN/MAX(f_int1) success: 1
23952 # check MIN/MAX(f_int2) success: 1
23953 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23954 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23955 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23956 WHERE f_int1 IN (2,3);
23957 # check prerequisites-3 success: 1
23958 DELETE FROM t1 WHERE f_charbig = 'delete me';
23959 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
23960 # check read via f_int1 success: 1
23961 # check read via f_int2 success: 1
23963 # check multiple-1 success: 1
23964 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23966 # check multiple-2 success: 1
23967 INSERT INTO t1 SELECT * FROM t0_template
23968 WHERE MOD(f_int1,3) = 0;
23970 # check multiple-3 success: 1
23971 UPDATE t1 SET f_int1 = f_int1 + @max_row
23972 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23973 AND @max_row_div2 + @max_row_div4;
23975 # check multiple-4 success: 1
23977 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23978 AND @max_row_div2 + @max_row_div4 + @max_row;
23980 # check multiple-5 success: 1
23981 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23983 SET f_int1 = @cur_value , f_int2 = @cur_value,
23984 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23985 f_charbig = '#SINGLE#';
23987 # check single-1 success: 1
23988 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23990 SET f_int1 = @cur_value , f_int2 = @cur_value,
23991 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23992 f_charbig = '#SINGLE#';
23994 # check single-2 success: 1
23995 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23996 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23997 UPDATE t1 SET f_int1 = @cur_value2
23998 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24000 # check single-3 success: 1
24001 SET @cur_value1= -1;
24002 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24003 UPDATE t1 SET f_int1 = @cur_value1
24004 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24006 # check single-4 success: 1
24007 SELECT MAX(f_int1) INTO @cur_value FROM t1;
24008 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24010 # check single-5 success: 1
24011 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24013 # check single-6 success: 1
24014 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24016 Warning 1264 Out of range value for column 'f_int1' at row 1
24017 Warning 1264 Out of range value for column 'f_int2' at row 1
24019 # check single-7 success: 1
24020 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24021 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24022 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24023 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24024 f_charbig = '#NULL#';
24026 SET f_int1 = NULL , f_int2 = -@max_row,
24027 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24028 f_charbig = '#NULL#';
24029 # check null success: 1
24031 # check null-1 success: 1
24032 UPDATE t1 SET f_int1 = -@max_row
24033 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24034 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24036 # check null-2 success: 1
24037 UPDATE t1 SET f_int1 = NULL
24038 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24039 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24041 # check null-3 success: 1
24043 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24044 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24046 # check null-4 success: 1
24048 WHERE f_int1 = 0 AND f_int2 = 0
24049 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24050 AND f_charbig = '#NULL#';
24052 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24053 SELECT f_int1, f_int1, '', '', 'was inserted'
24054 FROM t0_template source_tab
24055 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24057 # check transactions-1 success: 1
24060 # check transactions-2 success: 1
24063 # check transactions-3 success: 1
24064 DELETE FROM t1 WHERE f_charbig = 'was inserted';
24068 # check transactions-4 success: 1
24069 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24070 SELECT f_int1, f_int1, '', '', 'was inserted'
24071 FROM t0_template source_tab
24072 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24074 # check transactions-5 success: 1
24077 # check transactions-6 success: 1
24078 # INFO: Storage engine used for t1 seems to be transactional.
24081 # check transactions-7 success: 1
24082 DELETE FROM t1 WHERE f_charbig = 'was inserted';
24084 SET @@session.sql_mode = 'traditional';
24085 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24086 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24087 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24088 '', '', 'was inserted' FROM t0_template
24089 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24090 ERROR 22012: Division by 0
24093 # check transactions-8 success: 1
24094 # INFO: Storage engine used for t1 seems to be able to revert
24095 # changes made by the failing statement.
24096 SET @@session.sql_mode = '';
24098 DELETE FROM t1 WHERE f_charbig = 'was inserted';
24100 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24102 # check special-1 success: 1
24103 UPDATE t1 SET f_charbig = '';
24105 # check special-2 success: 1
24106 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24107 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24108 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24109 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24110 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24111 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24112 'just inserted' FROM t0_template
24113 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24114 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24116 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24117 f_charbig = 'updated by trigger'
24118 WHERE f_int1 = new.f_int1;
24120 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24121 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24122 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24124 # check trigger-1 success: 1
24125 DROP TRIGGER trg_1;
24126 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24127 f_int2 = CAST(f_char1 AS SIGNED INT),
24128 f_charbig = 'just inserted'
24129 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24131 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24132 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24133 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24134 'just inserted' FROM t0_template
24135 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24136 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24138 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24139 f_charbig = 'updated by trigger'
24140 WHERE f_int1 = new.f_int1;
24142 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24143 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24144 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24146 # check trigger-2 success: 1
24147 DROP TRIGGER trg_1;
24148 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24149 f_int2 = CAST(f_char1 AS SIGNED INT),
24150 f_charbig = 'just inserted'
24151 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24153 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24154 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24155 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24156 'just inserted' FROM t0_template
24157 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24158 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24160 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24161 f_charbig = 'updated by trigger'
24162 WHERE f_int1 = new.f_int1;
24164 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24165 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24167 # check trigger-3 success: 1
24168 DROP TRIGGER trg_1;
24169 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24170 f_int2 = CAST(f_char1 AS SIGNED INT),
24171 f_charbig = 'just inserted'
24172 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24174 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24175 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24176 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24177 'just inserted' FROM t0_template
24178 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24179 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24181 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24182 f_charbig = 'updated by trigger'
24183 WHERE f_int1 = - old.f_int1;
24185 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24186 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24188 # check trigger-4 success: 1
24189 DROP TRIGGER trg_1;
24190 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24191 f_int2 = CAST(f_char1 AS SIGNED INT),
24192 f_charbig = 'just inserted'
24193 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24195 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24196 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24197 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24198 'just inserted' FROM t0_template
24199 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24200 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24202 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24203 f_charbig = 'updated by trigger'
24204 WHERE f_int1 = new.f_int1;
24206 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24207 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24209 # check trigger-5 success: 1
24210 DROP TRIGGER trg_1;
24211 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24212 f_int2 = CAST(f_char1 AS SIGNED INT),
24213 f_charbig = 'just inserted'
24214 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24216 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24217 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24218 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24219 'just inserted' FROM t0_template
24220 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24221 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24223 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24224 f_charbig = 'updated by trigger'
24225 WHERE f_int1 = - old.f_int1;
24227 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24228 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24230 # check trigger-6 success: 1
24231 DROP TRIGGER trg_1;
24232 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24233 f_int2 = CAST(f_char1 AS SIGNED INT),
24234 f_charbig = 'just inserted'
24235 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24237 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24238 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24239 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24240 'just inserted' FROM t0_template
24241 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24242 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24244 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24245 f_charbig = 'updated by trigger'
24246 WHERE f_int1 = - old.f_int1;
24249 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24251 # check trigger-7 success: 1
24252 DROP TRIGGER trg_1;
24253 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24254 f_int2 = CAST(f_char1 AS SIGNED INT),
24255 f_charbig = 'just inserted'
24256 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24258 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24259 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24260 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24261 'just inserted' FROM t0_template
24262 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24263 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24265 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24266 f_charbig = 'updated by trigger'
24267 WHERE f_int1 = - old.f_int1;
24270 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24272 # check trigger-8 success: 1
24273 DROP TRIGGER trg_1;
24274 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24275 f_int2 = CAST(f_char1 AS SIGNED INT),
24276 f_charbig = 'just inserted'
24277 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24279 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24281 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24282 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24284 SET new.f_int1 = old.f_int1 + @max_row,
24285 new.f_int2 = old.f_int2 - @max_row,
24286 new.f_charbig = '####updated per update trigger####';
24289 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24290 f_charbig = '####updated per update statement itself####';
24292 # check trigger-9 success: 1
24293 DROP TRIGGER trg_2;
24294 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24295 f_int2 = CAST(f_char1 AS SIGNED INT),
24296 f_charbig = CONCAT('===',f_char1,'===');
24297 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24299 SET new.f_int1 = new.f_int1 + @max_row,
24300 new.f_int2 = new.f_int2 - @max_row,
24301 new.f_charbig = '####updated per update trigger####';
24304 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24305 f_charbig = '####updated per update statement itself####';
24307 # check trigger-10 success: 1
24308 DROP TRIGGER trg_2;
24309 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24310 f_int2 = CAST(f_char1 AS SIGNED INT),
24311 f_charbig = CONCAT('===',f_char1,'===');
24312 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24314 SET new.f_int1 = @my_max1 + @counter,
24315 new.f_int2 = @my_min2 - @counter,
24316 new.f_charbig = '####updated per insert trigger####';
24317 SET @counter = @counter + 1;
24320 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24321 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24322 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24323 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24324 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24326 DROP TRIGGER trg_3;
24328 # check trigger-11 success: 1
24330 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24331 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24332 AND f_charbig = '####updated per insert trigger####';
24333 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24335 SET new.f_int1 = @my_max1 + @counter,
24336 new.f_int2 = @my_min2 - @counter,
24337 new.f_charbig = '####updated per insert trigger####';
24338 SET @counter = @counter + 1;
24341 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24342 INSERT INTO t1 (f_char1, f_char2, f_charbig)
24343 SELECT CAST(f_int1 AS CHAR),
24344 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24345 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24347 DROP TRIGGER trg_3;
24349 # check trigger-12 success: 1
24351 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24352 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24353 AND f_charbig = '####updated per insert trigger####';
24355 Table Op Msg_type Msg_text
24356 test.t1 analyze status OK
24357 CHECK TABLE t1 EXTENDED;
24358 Table Op Msg_type Msg_text
24359 test.t1 check status OK
24360 CHECKSUM TABLE t1 EXTENDED;
24362 test.t1 <some_value>
24364 Table Op Msg_type Msg_text
24365 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
24366 test.t1 optimize status OK
24367 # check layout success: 1
24368 REPAIR TABLE t1 EXTENDED;
24369 Table Op Msg_type Msg_text
24370 test.t1 repair note The storage engine for the table doesn't support repair
24371 # check layout success: 1
24374 # check TRUNCATE success: 1
24375 # check layout success: 1
24376 # End usability test (inc/partition_check.inc)
24383 f_charbig VARCHAR(1000)
24386 PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
24387 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24388 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24389 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24390 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
24391 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24392 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24393 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24394 # Start usability test (inc/partition_check.inc)
24396 SHOW CREATE TABLE t1;
24398 t1 CREATE TABLE `t1` (
24399 `f_int1` mediumint(9) DEFAULT NULL,
24400 `f_int2` mediumint(9) DEFAULT NULL,
24401 `f_char1` char(20) DEFAULT NULL,
24402 `f_char2` char(20) DEFAULT NULL,
24403 `f_charbig` varchar(1000) DEFAULT NULL
24404 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
24405 /*!50100 PARTITION BY KEY (f_int1,f_int2)
24408 # check prerequisites-1 success: 1
24409 # check COUNT(*) success: 1
24410 # check MIN/MAX(f_int1) success: 1
24411 # check MIN/MAX(f_int2) success: 1
24412 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24413 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24414 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24415 WHERE f_int1 IN (2,3);
24416 # check prerequisites-3 success: 1
24417 DELETE FROM t1 WHERE f_charbig = 'delete me';
24418 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
24419 # check read via f_int1 success: 1
24420 # check read via f_int2 success: 1
24422 # check multiple-1 success: 1
24423 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24425 # check multiple-2 success: 1
24426 INSERT INTO t1 SELECT * FROM t0_template
24427 WHERE MOD(f_int1,3) = 0;
24429 # check multiple-3 success: 1
24430 UPDATE t1 SET f_int1 = f_int1 + @max_row
24431 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24432 AND @max_row_div2 + @max_row_div4;
24434 # check multiple-4 success: 1
24436 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24437 AND @max_row_div2 + @max_row_div4 + @max_row;
24439 # check multiple-5 success: 1
24440 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24442 SET f_int1 = @cur_value , f_int2 = @cur_value,
24443 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24444 f_charbig = '#SINGLE#';
24446 # check single-1 success: 1
24447 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24449 SET f_int1 = @cur_value , f_int2 = @cur_value,
24450 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24451 f_charbig = '#SINGLE#';
24453 # check single-2 success: 1
24454 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24455 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24456 UPDATE t1 SET f_int1 = @cur_value2
24457 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24459 # check single-3 success: 1
24460 SET @cur_value1= -1;
24461 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24462 UPDATE t1 SET f_int1 = @cur_value1
24463 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24465 # check single-4 success: 1
24466 SELECT MAX(f_int1) INTO @cur_value FROM t1;
24467 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24469 # check single-5 success: 1
24470 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24472 # check single-6 success: 1
24473 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24475 Warning 1264 Out of range value for column 'f_int1' at row 1
24476 Warning 1264 Out of range value for column 'f_int2' at row 1
24478 # check single-7 success: 1
24479 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24480 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24481 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24482 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24483 f_charbig = '#NULL#';
24485 SET f_int1 = NULL , f_int2 = -@max_row,
24486 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24487 f_charbig = '#NULL#';
24488 # check null success: 1
24490 # check null-1 success: 1
24491 UPDATE t1 SET f_int1 = -@max_row
24492 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24493 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24495 # check null-2 success: 1
24496 UPDATE t1 SET f_int1 = NULL
24497 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24498 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24500 # check null-3 success: 1
24502 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24503 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24505 # check null-4 success: 1
24507 WHERE f_int1 = 0 AND f_int2 = 0
24508 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24509 AND f_charbig = '#NULL#';
24511 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24512 SELECT f_int1, f_int1, '', '', 'was inserted'
24513 FROM t0_template source_tab
24514 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24516 # check transactions-1 success: 1
24519 # check transactions-2 success: 1
24522 # check transactions-3 success: 1
24523 DELETE FROM t1 WHERE f_charbig = 'was inserted';
24527 # check transactions-4 success: 1
24528 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24529 SELECT f_int1, f_int1, '', '', 'was inserted'
24530 FROM t0_template source_tab
24531 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24533 # check transactions-5 success: 1
24536 # check transactions-6 success: 1
24537 # INFO: Storage engine used for t1 seems to be transactional.
24540 # check transactions-7 success: 1
24541 DELETE FROM t1 WHERE f_charbig = 'was inserted';
24543 SET @@session.sql_mode = 'traditional';
24544 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24545 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24546 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24547 '', '', 'was inserted' FROM t0_template
24548 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24549 ERROR 22012: Division by 0
24552 # check transactions-8 success: 1
24553 # INFO: Storage engine used for t1 seems to be able to revert
24554 # changes made by the failing statement.
24555 SET @@session.sql_mode = '';
24557 DELETE FROM t1 WHERE f_charbig = 'was inserted';
24559 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24561 # check special-1 success: 1
24562 UPDATE t1 SET f_charbig = '';
24564 # check special-2 success: 1
24565 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24566 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24567 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24568 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24569 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24570 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24571 'just inserted' FROM t0_template
24572 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24573 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24575 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24576 f_charbig = 'updated by trigger'
24577 WHERE f_int1 = new.f_int1;
24579 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24580 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24581 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24583 # check trigger-1 success: 1
24584 DROP TRIGGER trg_1;
24585 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24586 f_int2 = CAST(f_char1 AS SIGNED INT),
24587 f_charbig = 'just inserted'
24588 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24590 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24591 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24592 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24593 'just inserted' FROM t0_template
24594 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24595 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24597 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24598 f_charbig = 'updated by trigger'
24599 WHERE f_int1 = new.f_int1;
24601 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24602 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24603 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24605 # check trigger-2 success: 1
24606 DROP TRIGGER trg_1;
24607 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24608 f_int2 = CAST(f_char1 AS SIGNED INT),
24609 f_charbig = 'just inserted'
24610 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24612 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24613 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24614 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24615 'just inserted' FROM t0_template
24616 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24617 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24619 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24620 f_charbig = 'updated by trigger'
24621 WHERE f_int1 = new.f_int1;
24623 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24624 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24626 # check trigger-3 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);
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 BEFORE UPDATE ON t0_aux FOR EACH ROW
24640 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24641 f_charbig = 'updated by trigger'
24642 WHERE f_int1 = - old.f_int1;
24644 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24645 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24647 # check trigger-4 success: 1
24648 DROP TRIGGER trg_1;
24649 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24650 f_int2 = CAST(f_char1 AS SIGNED INT),
24651 f_charbig = 'just inserted'
24652 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24654 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24655 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24656 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24657 'just inserted' FROM t0_template
24658 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24659 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24661 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24662 f_charbig = 'updated by trigger'
24663 WHERE f_int1 = new.f_int1;
24665 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24666 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24668 # check trigger-5 success: 1
24669 DROP TRIGGER trg_1;
24670 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24671 f_int2 = CAST(f_char1 AS SIGNED INT),
24672 f_charbig = 'just inserted'
24673 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24675 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24676 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24677 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24678 'just inserted' FROM t0_template
24679 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24680 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24682 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24683 f_charbig = 'updated by trigger'
24684 WHERE f_int1 = - old.f_int1;
24686 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24687 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24689 # check trigger-6 success: 1
24690 DROP TRIGGER trg_1;
24691 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24692 f_int2 = CAST(f_char1 AS SIGNED INT),
24693 f_charbig = 'just inserted'
24694 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24696 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24697 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24698 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24699 'just inserted' FROM t0_template
24700 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24701 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24703 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24704 f_charbig = 'updated by trigger'
24705 WHERE f_int1 = - old.f_int1;
24708 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24710 # check trigger-7 success: 1
24711 DROP TRIGGER trg_1;
24712 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24713 f_int2 = CAST(f_char1 AS SIGNED INT),
24714 f_charbig = 'just inserted'
24715 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24717 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24718 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24719 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24720 'just inserted' FROM t0_template
24721 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24722 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24724 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24725 f_charbig = 'updated by trigger'
24726 WHERE f_int1 = - old.f_int1;
24729 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24731 # check trigger-8 success: 1
24732 DROP TRIGGER trg_1;
24733 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24734 f_int2 = CAST(f_char1 AS SIGNED INT),
24735 f_charbig = 'just inserted'
24736 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24738 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24740 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24741 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24743 SET new.f_int1 = old.f_int1 + @max_row,
24744 new.f_int2 = old.f_int2 - @max_row,
24745 new.f_charbig = '####updated per update trigger####';
24748 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24749 f_charbig = '####updated per update statement itself####';
24751 # check trigger-9 success: 1
24752 DROP TRIGGER trg_2;
24753 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24754 f_int2 = CAST(f_char1 AS SIGNED INT),
24755 f_charbig = CONCAT('===',f_char1,'===');
24756 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24758 SET new.f_int1 = new.f_int1 + @max_row,
24759 new.f_int2 = new.f_int2 - @max_row,
24760 new.f_charbig = '####updated per update trigger####';
24763 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24764 f_charbig = '####updated per update statement itself####';
24766 # check trigger-10 success: 1
24767 DROP TRIGGER trg_2;
24768 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24769 f_int2 = CAST(f_char1 AS SIGNED INT),
24770 f_charbig = CONCAT('===',f_char1,'===');
24771 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24773 SET new.f_int1 = @my_max1 + @counter,
24774 new.f_int2 = @my_min2 - @counter,
24775 new.f_charbig = '####updated per insert trigger####';
24776 SET @counter = @counter + 1;
24779 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24780 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24781 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24782 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24783 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24785 DROP TRIGGER trg_3;
24787 # check trigger-11 success: 1
24789 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24790 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24791 AND f_charbig = '####updated per insert trigger####';
24792 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24794 SET new.f_int1 = @my_max1 + @counter,
24795 new.f_int2 = @my_min2 - @counter,
24796 new.f_charbig = '####updated per insert trigger####';
24797 SET @counter = @counter + 1;
24800 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24801 INSERT INTO t1 (f_char1, f_char2, f_charbig)
24802 SELECT CAST(f_int1 AS CHAR),
24803 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24804 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24806 DROP TRIGGER trg_3;
24808 # check trigger-12 success: 1
24810 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24811 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24812 AND f_charbig = '####updated per insert trigger####';
24814 Table Op Msg_type Msg_text
24815 test.t1 analyze status OK
24816 CHECK TABLE t1 EXTENDED;
24817 Table Op Msg_type Msg_text
24818 test.t1 check status OK
24819 CHECKSUM TABLE t1 EXTENDED;
24821 test.t1 <some_value>
24823 Table Op Msg_type Msg_text
24824 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
24825 test.t1 optimize status OK
24826 # check layout success: 1
24827 REPAIR TABLE t1 EXTENDED;
24828 Table Op Msg_type Msg_text
24829 test.t1 repair note The storage engine for the table doesn't support repair
24830 # check layout success: 1
24833 # check TRUNCATE success: 1
24834 # check layout success: 1
24835 # End usability test (inc/partition_check.inc)
24842 f_charbig VARCHAR(1000)
24845 PARTITION BY LIST(MOD(f_int1 + f_int2,4))
24846 (PARTITION part_3 VALUES IN (-3),
24847 PARTITION part_2 VALUES IN (-2),
24848 PARTITION part_1 VALUES IN (-1),
24849 PARTITION part_N VALUES IN (NULL),
24850 PARTITION part0 VALUES IN (0),
24851 PARTITION part1 VALUES IN (1),
24852 PARTITION part2 VALUES IN (2),
24853 PARTITION part3 VALUES IN (3));
24854 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24855 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24856 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24857 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
24858 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24859 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24860 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24861 # Start usability test (inc/partition_check.inc)
24863 SHOW CREATE TABLE t1;
24865 t1 CREATE TABLE `t1` (
24866 `f_int1` mediumint(9) DEFAULT NULL,
24867 `f_int2` mediumint(9) DEFAULT NULL,
24868 `f_char1` char(20) DEFAULT NULL,
24869 `f_char2` char(20) DEFAULT NULL,
24870 `f_charbig` varchar(1000) DEFAULT NULL
24871 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
24872 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
24873 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
24874 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
24875 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
24876 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
24877 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
24878 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
24879 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
24880 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
24882 # check prerequisites-1 success: 1
24883 # check COUNT(*) success: 1
24884 # check MIN/MAX(f_int1) success: 1
24885 # check MIN/MAX(f_int2) success: 1
24886 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24887 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24888 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24889 WHERE f_int1 IN (2,3);
24890 # check prerequisites-3 success: 1
24891 DELETE FROM t1 WHERE f_charbig = 'delete me';
24892 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
24893 # check read via f_int1 success: 1
24894 # check read via f_int2 success: 1
24896 # check multiple-1 success: 1
24897 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24899 # check multiple-2 success: 1
24900 INSERT INTO t1 SELECT * FROM t0_template
24901 WHERE MOD(f_int1,3) = 0;
24903 # check multiple-3 success: 1
24904 UPDATE t1 SET f_int1 = f_int1 + @max_row
24905 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24906 AND @max_row_div2 + @max_row_div4;
24908 # check multiple-4 success: 1
24910 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24911 AND @max_row_div2 + @max_row_div4 + @max_row;
24913 # check multiple-5 success: 1
24914 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24916 SET f_int1 = @cur_value , f_int2 = @cur_value,
24917 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24918 f_charbig = '#SINGLE#';
24920 # check single-1 success: 1
24921 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24923 SET f_int1 = @cur_value , f_int2 = @cur_value,
24924 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24925 f_charbig = '#SINGLE#';
24927 # check single-2 success: 1
24928 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24929 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24930 UPDATE t1 SET f_int1 = @cur_value2
24931 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24933 # check single-3 success: 1
24934 SET @cur_value1= -1;
24935 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24936 UPDATE t1 SET f_int1 = @cur_value1
24937 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24939 # check single-4 success: 1
24940 SELECT MAX(f_int1) INTO @cur_value FROM t1;
24941 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24943 # check single-5 success: 1
24944 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24946 # check single-6 success: 1
24947 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24949 Warning 1264 Out of range value for column 'f_int1' at row 1
24950 Warning 1264 Out of range value for column 'f_int2' at row 1
24952 # check single-7 success: 1
24953 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24954 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24955 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24956 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24957 f_charbig = '#NULL#';
24959 SET f_int1 = NULL , f_int2 = -@max_row,
24960 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24961 f_charbig = '#NULL#';
24962 # check null success: 1
24964 # check null-1 success: 1
24965 UPDATE t1 SET f_int1 = -@max_row
24966 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24967 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24969 # check null-2 success: 1
24970 UPDATE t1 SET f_int1 = NULL
24971 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24972 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24974 # check null-3 success: 1
24976 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24977 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24979 # check null-4 success: 1
24981 WHERE f_int1 = 0 AND f_int2 = 0
24982 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24983 AND f_charbig = '#NULL#';
24985 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24986 SELECT f_int1, f_int1, '', '', 'was inserted'
24987 FROM t0_template source_tab
24988 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24990 # check transactions-1 success: 1
24993 # check transactions-2 success: 1
24996 # check transactions-3 success: 1
24997 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25001 # check transactions-4 success: 1
25002 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25003 SELECT f_int1, f_int1, '', '', 'was inserted'
25004 FROM t0_template source_tab
25005 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25007 # check transactions-5 success: 1
25010 # check transactions-6 success: 1
25011 # INFO: Storage engine used for t1 seems to be transactional.
25014 # check transactions-7 success: 1
25015 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25017 SET @@session.sql_mode = 'traditional';
25018 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25019 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25020 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25021 '', '', 'was inserted' FROM t0_template
25022 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25023 ERROR 22012: Division by 0
25026 # check transactions-8 success: 1
25027 # INFO: Storage engine used for t1 seems to be able to revert
25028 # changes made by the failing statement.
25029 SET @@session.sql_mode = '';
25031 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25033 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25035 # check special-1 success: 1
25036 UPDATE t1 SET f_charbig = '';
25038 # check special-2 success: 1
25039 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25040 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25041 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25042 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25043 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25044 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25045 'just inserted' FROM t0_template
25046 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25047 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25049 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25050 f_charbig = 'updated by trigger'
25051 WHERE f_int1 = new.f_int1;
25053 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25054 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25055 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25057 # check trigger-1 success: 1
25058 DROP TRIGGER trg_1;
25059 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25060 f_int2 = CAST(f_char1 AS SIGNED INT),
25061 f_charbig = 'just inserted'
25062 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25064 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25065 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25066 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25067 'just inserted' FROM t0_template
25068 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25069 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25071 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25072 f_charbig = 'updated by trigger'
25073 WHERE f_int1 = new.f_int1;
25075 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25076 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25077 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25079 # check trigger-2 success: 1
25080 DROP TRIGGER trg_1;
25081 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25082 f_int2 = CAST(f_char1 AS SIGNED INT),
25083 f_charbig = 'just inserted'
25084 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25086 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25087 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25088 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25089 'just inserted' FROM t0_template
25090 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25091 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25093 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25094 f_charbig = 'updated by trigger'
25095 WHERE f_int1 = new.f_int1;
25097 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25098 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25100 # check trigger-3 success: 1
25101 DROP TRIGGER trg_1;
25102 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25103 f_int2 = CAST(f_char1 AS SIGNED INT),
25104 f_charbig = 'just inserted'
25105 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25107 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25108 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25109 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25110 'just inserted' FROM t0_template
25111 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25112 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25114 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25115 f_charbig = 'updated by trigger'
25116 WHERE f_int1 = - old.f_int1;
25118 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25119 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25121 # check trigger-4 success: 1
25122 DROP TRIGGER trg_1;
25123 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25124 f_int2 = CAST(f_char1 AS SIGNED INT),
25125 f_charbig = 'just inserted'
25126 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25128 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25129 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25130 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25131 'just inserted' FROM t0_template
25132 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25133 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25135 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25136 f_charbig = 'updated by trigger'
25137 WHERE f_int1 = new.f_int1;
25139 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25140 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25142 # check trigger-5 success: 1
25143 DROP TRIGGER trg_1;
25144 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25145 f_int2 = CAST(f_char1 AS SIGNED INT),
25146 f_charbig = 'just inserted'
25147 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25149 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25150 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25151 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25152 'just inserted' FROM t0_template
25153 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25154 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25156 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25157 f_charbig = 'updated by trigger'
25158 WHERE f_int1 = - old.f_int1;
25160 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25161 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25163 # check trigger-6 success: 1
25164 DROP TRIGGER trg_1;
25165 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25166 f_int2 = CAST(f_char1 AS SIGNED INT),
25167 f_charbig = 'just inserted'
25168 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25170 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25171 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25172 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25173 'just inserted' FROM t0_template
25174 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25175 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25177 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25178 f_charbig = 'updated by trigger'
25179 WHERE f_int1 = - old.f_int1;
25182 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25184 # check trigger-7 success: 1
25185 DROP TRIGGER trg_1;
25186 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25187 f_int2 = CAST(f_char1 AS SIGNED INT),
25188 f_charbig = 'just inserted'
25189 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25191 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25192 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25193 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25194 'just inserted' FROM t0_template
25195 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25196 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25198 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25199 f_charbig = 'updated by trigger'
25200 WHERE f_int1 = - old.f_int1;
25203 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25205 # check trigger-8 success: 1
25206 DROP TRIGGER trg_1;
25207 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25208 f_int2 = CAST(f_char1 AS SIGNED INT),
25209 f_charbig = 'just inserted'
25210 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25212 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25214 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25215 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25217 SET new.f_int1 = old.f_int1 + @max_row,
25218 new.f_int2 = old.f_int2 - @max_row,
25219 new.f_charbig = '####updated per update trigger####';
25222 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25223 f_charbig = '####updated per update statement itself####';
25225 # check trigger-9 success: 1
25226 DROP TRIGGER trg_2;
25227 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25228 f_int2 = CAST(f_char1 AS SIGNED INT),
25229 f_charbig = CONCAT('===',f_char1,'===');
25230 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25232 SET new.f_int1 = new.f_int1 + @max_row,
25233 new.f_int2 = new.f_int2 - @max_row,
25234 new.f_charbig = '####updated per update trigger####';
25237 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25238 f_charbig = '####updated per update statement itself####';
25240 # check trigger-10 success: 1
25241 DROP TRIGGER trg_2;
25242 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25243 f_int2 = CAST(f_char1 AS SIGNED INT),
25244 f_charbig = CONCAT('===',f_char1,'===');
25245 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25247 SET new.f_int1 = @my_max1 + @counter,
25248 new.f_int2 = @my_min2 - @counter,
25249 new.f_charbig = '####updated per insert trigger####';
25250 SET @counter = @counter + 1;
25253 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25254 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25255 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25256 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25257 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25259 DROP TRIGGER trg_3;
25261 # check trigger-11 success: 1
25263 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25264 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25265 AND f_charbig = '####updated per insert trigger####';
25266 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25268 SET new.f_int1 = @my_max1 + @counter,
25269 new.f_int2 = @my_min2 - @counter,
25270 new.f_charbig = '####updated per insert trigger####';
25271 SET @counter = @counter + 1;
25274 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25275 INSERT INTO t1 (f_char1, f_char2, f_charbig)
25276 SELECT CAST(f_int1 AS CHAR),
25277 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25278 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25280 DROP TRIGGER trg_3;
25282 # check trigger-12 success: 1
25284 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25285 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25286 AND f_charbig = '####updated per insert trigger####';
25288 Table Op Msg_type Msg_text
25289 test.t1 analyze status OK
25290 CHECK TABLE t1 EXTENDED;
25291 Table Op Msg_type Msg_text
25292 test.t1 check status OK
25293 CHECKSUM TABLE t1 EXTENDED;
25295 test.t1 <some_value>
25297 Table Op Msg_type Msg_text
25298 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
25299 test.t1 optimize status OK
25300 # check layout success: 1
25301 REPAIR TABLE t1 EXTENDED;
25302 Table Op Msg_type Msg_text
25303 test.t1 repair note The storage engine for the table doesn't support repair
25304 # check layout success: 1
25307 # check TRUNCATE success: 1
25308 # check layout success: 1
25309 # End usability test (inc/partition_check.inc)
25316 f_charbig VARCHAR(1000)
25319 PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
25320 (PARTITION parta VALUES LESS THAN (0),
25321 PARTITION partb VALUES LESS THAN (5),
25322 PARTITION partc VALUES LESS THAN (10),
25323 PARTITION partd VALUES LESS THAN (10 + 5),
25324 PARTITION parte VALUES LESS THAN (20),
25325 PARTITION partf VALUES LESS THAN (2147483646));
25326 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25327 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25328 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25329 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
25330 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25331 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25332 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25333 # Start usability test (inc/partition_check.inc)
25335 SHOW CREATE TABLE t1;
25337 t1 CREATE TABLE `t1` (
25338 `f_int1` mediumint(9) DEFAULT NULL,
25339 `f_int2` mediumint(9) DEFAULT NULL,
25340 `f_char1` char(20) DEFAULT NULL,
25341 `f_char2` char(20) DEFAULT NULL,
25342 `f_charbig` varchar(1000) DEFAULT NULL
25343 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
25344 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
25345 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
25346 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
25347 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
25348 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
25349 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
25350 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
25352 # check prerequisites-1 success: 1
25353 # check COUNT(*) success: 1
25354 # check MIN/MAX(f_int1) success: 1
25355 # check MIN/MAX(f_int2) success: 1
25356 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25357 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25358 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25359 WHERE f_int1 IN (2,3);
25360 # check prerequisites-3 success: 1
25361 DELETE FROM t1 WHERE f_charbig = 'delete me';
25362 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
25363 # check read via f_int1 success: 1
25364 # check read via f_int2 success: 1
25366 # check multiple-1 success: 1
25367 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25369 # check multiple-2 success: 1
25370 INSERT INTO t1 SELECT * FROM t0_template
25371 WHERE MOD(f_int1,3) = 0;
25373 # check multiple-3 success: 1
25374 UPDATE t1 SET f_int1 = f_int1 + @max_row
25375 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25376 AND @max_row_div2 + @max_row_div4;
25378 # check multiple-4 success: 1
25380 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25381 AND @max_row_div2 + @max_row_div4 + @max_row;
25383 # check multiple-5 success: 1
25384 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25386 SET f_int1 = @cur_value , f_int2 = @cur_value,
25387 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25388 f_charbig = '#SINGLE#';
25390 # check single-1 success: 1
25391 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25393 SET f_int1 = @cur_value , f_int2 = @cur_value,
25394 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25395 f_charbig = '#SINGLE#';
25397 # check single-2 success: 1
25398 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25399 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25400 UPDATE t1 SET f_int1 = @cur_value2
25401 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25403 # check single-3 success: 1
25404 SET @cur_value1= -1;
25405 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25406 UPDATE t1 SET f_int1 = @cur_value1
25407 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25409 # check single-4 success: 1
25410 SELECT MAX(f_int1) INTO @cur_value FROM t1;
25411 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25413 # check single-5 success: 1
25414 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25416 # check single-6 success: 1
25417 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25419 Warning 1264 Out of range value for column 'f_int1' at row 1
25420 Warning 1264 Out of range value for column 'f_int2' at row 1
25422 # check single-7 success: 1
25423 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
25424 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25425 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25426 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25427 f_charbig = '#NULL#';
25429 SET f_int1 = NULL , f_int2 = -@max_row,
25430 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25431 f_charbig = '#NULL#';
25432 # check null success: 1
25434 # check null-1 success: 1
25435 UPDATE t1 SET f_int1 = -@max_row
25436 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25437 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25439 # check null-2 success: 1
25440 UPDATE t1 SET f_int1 = NULL
25441 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25442 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25444 # check null-3 success: 1
25446 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25447 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25449 # check null-4 success: 1
25451 WHERE f_int1 = 0 AND f_int2 = 0
25452 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25453 AND f_charbig = '#NULL#';
25455 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25456 SELECT f_int1, f_int1, '', '', 'was inserted'
25457 FROM t0_template source_tab
25458 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25460 # check transactions-1 success: 1
25463 # check transactions-2 success: 1
25466 # check transactions-3 success: 1
25467 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25471 # check transactions-4 success: 1
25472 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25473 SELECT f_int1, f_int1, '', '', 'was inserted'
25474 FROM t0_template source_tab
25475 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25477 # check transactions-5 success: 1
25480 # check transactions-6 success: 1
25481 # INFO: Storage engine used for t1 seems to be transactional.
25484 # check transactions-7 success: 1
25485 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25487 SET @@session.sql_mode = 'traditional';
25488 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25489 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25490 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25491 '', '', 'was inserted' FROM t0_template
25492 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25493 ERROR 22012: Division by 0
25496 # check transactions-8 success: 1
25497 # INFO: Storage engine used for t1 seems to be able to revert
25498 # changes made by the failing statement.
25499 SET @@session.sql_mode = '';
25501 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25503 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25505 # check special-1 success: 1
25506 UPDATE t1 SET f_charbig = '';
25508 # check special-2 success: 1
25509 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25510 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25511 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25512 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25513 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25514 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25515 'just inserted' FROM t0_template
25516 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25517 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25519 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25520 f_charbig = 'updated by trigger'
25521 WHERE f_int1 = new.f_int1;
25523 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25524 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25525 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25527 # check trigger-1 success: 1
25528 DROP TRIGGER trg_1;
25529 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25530 f_int2 = CAST(f_char1 AS SIGNED INT),
25531 f_charbig = 'just inserted'
25532 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25534 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25535 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25536 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25537 'just inserted' FROM t0_template
25538 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25539 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25541 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25542 f_charbig = 'updated by trigger'
25543 WHERE f_int1 = new.f_int1;
25545 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25546 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25547 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25549 # check trigger-2 success: 1
25550 DROP TRIGGER trg_1;
25551 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25552 f_int2 = CAST(f_char1 AS SIGNED INT),
25553 f_charbig = 'just inserted'
25554 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25556 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25557 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25558 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25559 'just inserted' FROM t0_template
25560 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25561 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25563 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25564 f_charbig = 'updated by trigger'
25565 WHERE f_int1 = new.f_int1;
25567 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25568 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25570 # check trigger-3 success: 1
25571 DROP TRIGGER trg_1;
25572 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25573 f_int2 = CAST(f_char1 AS SIGNED INT),
25574 f_charbig = 'just inserted'
25575 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25577 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25578 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25579 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25580 'just inserted' FROM t0_template
25581 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25582 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25584 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25585 f_charbig = 'updated by trigger'
25586 WHERE f_int1 = - old.f_int1;
25588 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25589 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25591 # check trigger-4 success: 1
25592 DROP TRIGGER trg_1;
25593 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25594 f_int2 = CAST(f_char1 AS SIGNED INT),
25595 f_charbig = 'just inserted'
25596 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25598 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25599 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25600 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25601 'just inserted' FROM t0_template
25602 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25603 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25605 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25606 f_charbig = 'updated by trigger'
25607 WHERE f_int1 = new.f_int1;
25609 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25610 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25612 # check trigger-5 success: 1
25613 DROP TRIGGER trg_1;
25614 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25615 f_int2 = CAST(f_char1 AS SIGNED INT),
25616 f_charbig = 'just inserted'
25617 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25619 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25620 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25621 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25622 'just inserted' FROM t0_template
25623 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25624 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25626 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25627 f_charbig = 'updated by trigger'
25628 WHERE f_int1 = - old.f_int1;
25630 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25631 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25633 # check trigger-6 success: 1
25634 DROP TRIGGER trg_1;
25635 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25636 f_int2 = CAST(f_char1 AS SIGNED INT),
25637 f_charbig = 'just inserted'
25638 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25640 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25641 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25642 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25643 'just inserted' FROM t0_template
25644 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25645 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25647 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25648 f_charbig = 'updated by trigger'
25649 WHERE f_int1 = - old.f_int1;
25652 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25654 # check trigger-7 success: 1
25655 DROP TRIGGER trg_1;
25656 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25657 f_int2 = CAST(f_char1 AS SIGNED INT),
25658 f_charbig = 'just inserted'
25659 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25661 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25662 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25663 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25664 'just inserted' FROM t0_template
25665 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25666 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25668 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25669 f_charbig = 'updated by trigger'
25670 WHERE f_int1 = - old.f_int1;
25673 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25675 # check trigger-8 success: 1
25676 DROP TRIGGER trg_1;
25677 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25678 f_int2 = CAST(f_char1 AS SIGNED INT),
25679 f_charbig = 'just inserted'
25680 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25682 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25684 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25685 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25687 SET new.f_int1 = old.f_int1 + @max_row,
25688 new.f_int2 = old.f_int2 - @max_row,
25689 new.f_charbig = '####updated per update trigger####';
25692 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25693 f_charbig = '####updated per update statement itself####';
25695 # check trigger-9 success: 1
25696 DROP TRIGGER trg_2;
25697 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25698 f_int2 = CAST(f_char1 AS SIGNED INT),
25699 f_charbig = CONCAT('===',f_char1,'===');
25700 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25702 SET new.f_int1 = new.f_int1 + @max_row,
25703 new.f_int2 = new.f_int2 - @max_row,
25704 new.f_charbig = '####updated per update trigger####';
25707 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25708 f_charbig = '####updated per update statement itself####';
25710 # check trigger-10 success: 1
25711 DROP TRIGGER trg_2;
25712 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25713 f_int2 = CAST(f_char1 AS SIGNED INT),
25714 f_charbig = CONCAT('===',f_char1,'===');
25715 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25717 SET new.f_int1 = @my_max1 + @counter,
25718 new.f_int2 = @my_min2 - @counter,
25719 new.f_charbig = '####updated per insert trigger####';
25720 SET @counter = @counter + 1;
25723 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25724 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25725 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25726 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25727 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25729 DROP TRIGGER trg_3;
25731 # check trigger-11 success: 1
25733 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25734 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25735 AND f_charbig = '####updated per insert trigger####';
25736 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25738 SET new.f_int1 = @my_max1 + @counter,
25739 new.f_int2 = @my_min2 - @counter,
25740 new.f_charbig = '####updated per insert trigger####';
25741 SET @counter = @counter + 1;
25744 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25745 INSERT INTO t1 (f_char1, f_char2, f_charbig)
25746 SELECT CAST(f_int1 AS CHAR),
25747 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25748 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25750 DROP TRIGGER trg_3;
25752 # check trigger-12 success: 1
25754 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25755 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25756 AND f_charbig = '####updated per insert trigger####';
25758 Table Op Msg_type Msg_text
25759 test.t1 analyze status OK
25760 CHECK TABLE t1 EXTENDED;
25761 Table Op Msg_type Msg_text
25762 test.t1 check status OK
25763 CHECKSUM TABLE t1 EXTENDED;
25765 test.t1 <some_value>
25767 Table Op Msg_type Msg_text
25768 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
25769 test.t1 optimize status OK
25770 # check layout success: 1
25771 REPAIR TABLE t1 EXTENDED;
25772 Table Op Msg_type Msg_text
25773 test.t1 repair note The storage engine for the table doesn't support repair
25774 # check layout success: 1
25777 # check TRUNCATE success: 1
25778 # check layout success: 1
25779 # End usability test (inc/partition_check.inc)
25786 f_charbig VARCHAR(1000)
25789 PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
25790 (PARTITION parta VALUES LESS THAN (0),
25791 PARTITION partb VALUES LESS THAN (5),
25792 PARTITION partc VALUES LESS THAN (10),
25793 PARTITION partd VALUES LESS THAN (2147483646));
25794 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25795 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25796 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25797 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
25798 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25799 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25800 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25801 # Start usability test (inc/partition_check.inc)
25803 SHOW CREATE TABLE t1;
25805 t1 CREATE TABLE `t1` (
25806 `f_int1` mediumint(9) DEFAULT NULL,
25807 `f_int2` mediumint(9) DEFAULT NULL,
25808 `f_char1` char(20) DEFAULT NULL,
25809 `f_char2` char(20) DEFAULT NULL,
25810 `f_charbig` varchar(1000) DEFAULT NULL
25811 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
25812 /*!50100 PARTITION BY RANGE (f_int1)
25813 SUBPARTITION BY HASH (f_int2)
25815 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
25816 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
25817 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
25818 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
25820 # check prerequisites-1 success: 1
25821 # check COUNT(*) success: 1
25822 # check MIN/MAX(f_int1) success: 1
25823 # check MIN/MAX(f_int2) success: 1
25824 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25825 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25826 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25827 WHERE f_int1 IN (2,3);
25828 # check prerequisites-3 success: 1
25829 DELETE FROM t1 WHERE f_charbig = 'delete me';
25830 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
25831 # check read via f_int1 success: 1
25832 # check read via f_int2 success: 1
25834 # check multiple-1 success: 1
25835 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25837 # check multiple-2 success: 1
25838 INSERT INTO t1 SELECT * FROM t0_template
25839 WHERE MOD(f_int1,3) = 0;
25841 # check multiple-3 success: 1
25842 UPDATE t1 SET f_int1 = f_int1 + @max_row
25843 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25844 AND @max_row_div2 + @max_row_div4;
25846 # check multiple-4 success: 1
25848 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25849 AND @max_row_div2 + @max_row_div4 + @max_row;
25851 # check multiple-5 success: 1
25852 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25854 SET f_int1 = @cur_value , f_int2 = @cur_value,
25855 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25856 f_charbig = '#SINGLE#';
25858 # check single-1 success: 1
25859 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25861 SET f_int1 = @cur_value , f_int2 = @cur_value,
25862 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25863 f_charbig = '#SINGLE#';
25865 # check single-2 success: 1
25866 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25867 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25868 UPDATE t1 SET f_int1 = @cur_value2
25869 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25871 # check single-3 success: 1
25872 SET @cur_value1= -1;
25873 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25874 UPDATE t1 SET f_int1 = @cur_value1
25875 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25877 # check single-4 success: 1
25878 SELECT MAX(f_int1) INTO @cur_value FROM t1;
25879 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25881 # check single-5 success: 1
25882 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25884 # check single-6 success: 1
25885 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25887 Warning 1264 Out of range value for column 'f_int1' at row 1
25888 Warning 1264 Out of range value for column 'f_int2' at row 1
25890 # check single-7 success: 1
25891 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
25892 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25893 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25894 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25895 f_charbig = '#NULL#';
25897 SET f_int1 = NULL , f_int2 = -@max_row,
25898 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25899 f_charbig = '#NULL#';
25900 # check null success: 1
25902 # check null-1 success: 1
25903 UPDATE t1 SET f_int1 = -@max_row
25904 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25905 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25907 # check null-2 success: 1
25908 UPDATE t1 SET f_int1 = NULL
25909 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25910 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25912 # check null-3 success: 1
25914 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25915 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25917 # check null-4 success: 1
25919 WHERE f_int1 = 0 AND f_int2 = 0
25920 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25921 AND f_charbig = '#NULL#';
25923 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25924 SELECT f_int1, f_int1, '', '', 'was inserted'
25925 FROM t0_template source_tab
25926 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25928 # check transactions-1 success: 1
25931 # check transactions-2 success: 1
25934 # check transactions-3 success: 1
25935 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25939 # check transactions-4 success: 1
25940 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25941 SELECT f_int1, f_int1, '', '', 'was inserted'
25942 FROM t0_template source_tab
25943 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25945 # check transactions-5 success: 1
25948 # check transactions-6 success: 1
25949 # INFO: Storage engine used for t1 seems to be transactional.
25952 # check transactions-7 success: 1
25953 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25955 SET @@session.sql_mode = 'traditional';
25956 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25957 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25958 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25959 '', '', 'was inserted' FROM t0_template
25960 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25961 ERROR 22012: Division by 0
25964 # check transactions-8 success: 1
25965 # INFO: Storage engine used for t1 seems to be able to revert
25966 # changes made by the failing statement.
25967 SET @@session.sql_mode = '';
25969 DELETE FROM t1 WHERE f_charbig = 'was inserted';
25971 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25973 # check special-1 success: 1
25974 UPDATE t1 SET f_charbig = '';
25976 # check special-2 success: 1
25977 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25978 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25979 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25980 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25981 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25982 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25983 'just inserted' FROM t0_template
25984 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25985 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25987 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25988 f_charbig = 'updated by trigger'
25989 WHERE f_int1 = new.f_int1;
25991 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25992 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25993 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25995 # check trigger-1 success: 1
25996 DROP TRIGGER trg_1;
25997 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25998 f_int2 = CAST(f_char1 AS SIGNED INT),
25999 f_charbig = 'just inserted'
26000 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26002 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26003 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26004 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26005 'just inserted' FROM t0_template
26006 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26007 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26009 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26010 f_charbig = 'updated by trigger'
26011 WHERE f_int1 = new.f_int1;
26013 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26014 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26015 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26017 # check trigger-2 success: 1
26018 DROP TRIGGER trg_1;
26019 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26020 f_int2 = CAST(f_char1 AS SIGNED INT),
26021 f_charbig = 'just inserted'
26022 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26024 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26025 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26026 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26027 'just inserted' FROM t0_template
26028 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26029 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26031 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26032 f_charbig = 'updated by trigger'
26033 WHERE f_int1 = new.f_int1;
26035 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26036 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26038 # check trigger-3 success: 1
26039 DROP TRIGGER trg_1;
26040 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26041 f_int2 = CAST(f_char1 AS SIGNED INT),
26042 f_charbig = 'just inserted'
26043 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26045 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26046 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26047 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26048 'just inserted' FROM t0_template
26049 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26050 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26052 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26053 f_charbig = 'updated by trigger'
26054 WHERE f_int1 = - old.f_int1;
26056 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26057 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26059 # check trigger-4 success: 1
26060 DROP TRIGGER trg_1;
26061 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26062 f_int2 = CAST(f_char1 AS SIGNED INT),
26063 f_charbig = 'just inserted'
26064 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26066 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26067 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26068 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26069 'just inserted' FROM t0_template
26070 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26071 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26073 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26074 f_charbig = 'updated by trigger'
26075 WHERE f_int1 = new.f_int1;
26077 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26078 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26080 # check trigger-5 success: 1
26081 DROP TRIGGER trg_1;
26082 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26083 f_int2 = CAST(f_char1 AS SIGNED INT),
26084 f_charbig = 'just inserted'
26085 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26087 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26088 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26089 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26090 'just inserted' FROM t0_template
26091 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26092 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26094 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26095 f_charbig = 'updated by trigger'
26096 WHERE f_int1 = - old.f_int1;
26098 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26099 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26101 # check trigger-6 success: 1
26102 DROP TRIGGER trg_1;
26103 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26104 f_int2 = CAST(f_char1 AS SIGNED INT),
26105 f_charbig = 'just inserted'
26106 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26108 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26109 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26110 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26111 'just inserted' FROM t0_template
26112 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26113 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26115 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26116 f_charbig = 'updated by trigger'
26117 WHERE f_int1 = - old.f_int1;
26120 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26122 # check trigger-7 success: 1
26123 DROP TRIGGER trg_1;
26124 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26125 f_int2 = CAST(f_char1 AS SIGNED INT),
26126 f_charbig = 'just inserted'
26127 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26129 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26130 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26131 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26132 'just inserted' FROM t0_template
26133 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26134 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26136 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26137 f_charbig = 'updated by trigger'
26138 WHERE f_int1 = - old.f_int1;
26141 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26143 # check trigger-8 success: 1
26144 DROP TRIGGER trg_1;
26145 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26146 f_int2 = CAST(f_char1 AS SIGNED INT),
26147 f_charbig = 'just inserted'
26148 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26150 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26152 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26153 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26155 SET new.f_int1 = old.f_int1 + @max_row,
26156 new.f_int2 = old.f_int2 - @max_row,
26157 new.f_charbig = '####updated per update trigger####';
26160 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26161 f_charbig = '####updated per update statement itself####';
26163 # check trigger-9 success: 1
26164 DROP TRIGGER trg_2;
26165 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26166 f_int2 = CAST(f_char1 AS SIGNED INT),
26167 f_charbig = CONCAT('===',f_char1,'===');
26168 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26170 SET new.f_int1 = new.f_int1 + @max_row,
26171 new.f_int2 = new.f_int2 - @max_row,
26172 new.f_charbig = '####updated per update trigger####';
26175 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26176 f_charbig = '####updated per update statement itself####';
26178 # check trigger-10 success: 1
26179 DROP TRIGGER trg_2;
26180 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26181 f_int2 = CAST(f_char1 AS SIGNED INT),
26182 f_charbig = CONCAT('===',f_char1,'===');
26183 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26185 SET new.f_int1 = @my_max1 + @counter,
26186 new.f_int2 = @my_min2 - @counter,
26187 new.f_charbig = '####updated per insert trigger####';
26188 SET @counter = @counter + 1;
26191 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26192 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26193 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26194 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26195 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26197 DROP TRIGGER trg_3;
26199 # check trigger-11 success: 1
26201 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26202 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26203 AND f_charbig = '####updated per insert trigger####';
26204 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26206 SET new.f_int1 = @my_max1 + @counter,
26207 new.f_int2 = @my_min2 - @counter,
26208 new.f_charbig = '####updated per insert trigger####';
26209 SET @counter = @counter + 1;
26212 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26213 INSERT INTO t1 (f_char1, f_char2, f_charbig)
26214 SELECT CAST(f_int1 AS CHAR),
26215 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26216 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26218 DROP TRIGGER trg_3;
26220 # check trigger-12 success: 1
26222 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26223 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26224 AND f_charbig = '####updated per insert trigger####';
26226 Table Op Msg_type Msg_text
26227 test.t1 analyze status OK
26228 CHECK TABLE t1 EXTENDED;
26229 Table Op Msg_type Msg_text
26230 test.t1 check status OK
26231 CHECKSUM TABLE t1 EXTENDED;
26233 test.t1 <some_value>
26235 Table Op Msg_type Msg_text
26236 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
26237 test.t1 optimize status OK
26238 # check layout success: 1
26239 REPAIR TABLE t1 EXTENDED;
26240 Table Op Msg_type Msg_text
26241 test.t1 repair note The storage engine for the table doesn't support repair
26242 # check layout success: 1
26245 # check TRUNCATE success: 1
26246 # check layout success: 1
26247 # End usability test (inc/partition_check.inc)
26254 f_charbig VARCHAR(1000)
26257 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
26258 (PARTITION part1 VALUES LESS THAN (0)
26259 (SUBPARTITION subpart11, SUBPARTITION subpart12),
26260 PARTITION part2 VALUES LESS THAN (5)
26261 (SUBPARTITION subpart21, SUBPARTITION subpart22),
26262 PARTITION part3 VALUES LESS THAN (10)
26263 (SUBPARTITION subpart31, SUBPARTITION subpart32),
26264 PARTITION part4 VALUES LESS THAN (2147483646)
26265 (SUBPARTITION subpart41, SUBPARTITION subpart42));
26266 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26267 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26268 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26269 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
26270 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26271 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26272 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26273 # Start usability test (inc/partition_check.inc)
26275 SHOW CREATE TABLE t1;
26277 t1 CREATE TABLE `t1` (
26278 `f_int1` mediumint(9) DEFAULT NULL,
26279 `f_int2` mediumint(9) DEFAULT NULL,
26280 `f_char1` char(20) DEFAULT NULL,
26281 `f_char2` char(20) DEFAULT NULL,
26282 `f_charbig` varchar(1000) DEFAULT NULL
26283 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
26284 /*!50100 PARTITION BY RANGE (f_int1)
26285 SUBPARTITION BY KEY (f_int2)
26286 (PARTITION part1 VALUES LESS THAN (0)
26287 (SUBPARTITION subpart11 ENGINE = InnoDB,
26288 SUBPARTITION subpart12 ENGINE = InnoDB),
26289 PARTITION part2 VALUES LESS THAN (5)
26290 (SUBPARTITION subpart21 ENGINE = InnoDB,
26291 SUBPARTITION subpart22 ENGINE = InnoDB),
26292 PARTITION part3 VALUES LESS THAN (10)
26293 (SUBPARTITION subpart31 ENGINE = InnoDB,
26294 SUBPARTITION subpart32 ENGINE = InnoDB),
26295 PARTITION part4 VALUES LESS THAN (2147483646)
26296 (SUBPARTITION subpart41 ENGINE = InnoDB,
26297 SUBPARTITION subpart42 ENGINE = InnoDB)) */
26299 # check prerequisites-1 success: 1
26300 # check COUNT(*) success: 1
26301 # check MIN/MAX(f_int1) success: 1
26302 # check MIN/MAX(f_int2) success: 1
26303 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26304 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26305 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26306 WHERE f_int1 IN (2,3);
26307 # check prerequisites-3 success: 1
26308 DELETE FROM t1 WHERE f_charbig = 'delete me';
26309 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
26310 # check read via f_int1 success: 1
26311 # check read via f_int2 success: 1
26313 # check multiple-1 success: 1
26314 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26316 # check multiple-2 success: 1
26317 INSERT INTO t1 SELECT * FROM t0_template
26318 WHERE MOD(f_int1,3) = 0;
26320 # check multiple-3 success: 1
26321 UPDATE t1 SET f_int1 = f_int1 + @max_row
26322 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26323 AND @max_row_div2 + @max_row_div4;
26325 # check multiple-4 success: 1
26327 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26328 AND @max_row_div2 + @max_row_div4 + @max_row;
26330 # check multiple-5 success: 1
26331 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26333 SET f_int1 = @cur_value , f_int2 = @cur_value,
26334 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26335 f_charbig = '#SINGLE#';
26337 # check single-1 success: 1
26338 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26340 SET f_int1 = @cur_value , f_int2 = @cur_value,
26341 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26342 f_charbig = '#SINGLE#';
26344 # check single-2 success: 1
26345 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26346 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26347 UPDATE t1 SET f_int1 = @cur_value2
26348 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26350 # check single-3 success: 1
26351 SET @cur_value1= -1;
26352 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26353 UPDATE t1 SET f_int1 = @cur_value1
26354 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26356 # check single-4 success: 1
26357 SELECT MAX(f_int1) INTO @cur_value FROM t1;
26358 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26360 # check single-5 success: 1
26361 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26363 # check single-6 success: 1
26364 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26366 Warning 1264 Out of range value for column 'f_int1' at row 1
26367 Warning 1264 Out of range value for column 'f_int2' at row 1
26369 # check single-7 success: 1
26370 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
26371 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26372 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26373 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26374 f_charbig = '#NULL#';
26376 SET f_int1 = NULL , f_int2 = -@max_row,
26377 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26378 f_charbig = '#NULL#';
26379 # check null success: 1
26381 # check null-1 success: 1
26382 UPDATE t1 SET f_int1 = -@max_row
26383 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26384 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26386 # check null-2 success: 1
26387 UPDATE t1 SET f_int1 = NULL
26388 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26389 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26391 # check null-3 success: 1
26393 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26394 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26396 # check null-4 success: 1
26398 WHERE f_int1 = 0 AND f_int2 = 0
26399 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26400 AND f_charbig = '#NULL#';
26402 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26403 SELECT f_int1, f_int1, '', '', 'was inserted'
26404 FROM t0_template source_tab
26405 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26407 # check transactions-1 success: 1
26410 # check transactions-2 success: 1
26413 # check transactions-3 success: 1
26414 DELETE FROM t1 WHERE f_charbig = 'was inserted';
26418 # check transactions-4 success: 1
26419 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26420 SELECT f_int1, f_int1, '', '', 'was inserted'
26421 FROM t0_template source_tab
26422 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26424 # check transactions-5 success: 1
26427 # check transactions-6 success: 1
26428 # INFO: Storage engine used for t1 seems to be transactional.
26431 # check transactions-7 success: 1
26432 DELETE FROM t1 WHERE f_charbig = 'was inserted';
26434 SET @@session.sql_mode = 'traditional';
26435 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26436 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26437 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26438 '', '', 'was inserted' FROM t0_template
26439 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26440 ERROR 22012: Division by 0
26443 # check transactions-8 success: 1
26444 # INFO: Storage engine used for t1 seems to be able to revert
26445 # changes made by the failing statement.
26446 SET @@session.sql_mode = '';
26448 DELETE FROM t1 WHERE f_charbig = 'was inserted';
26450 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26452 # check special-1 success: 1
26453 UPDATE t1 SET f_charbig = '';
26455 # check special-2 success: 1
26456 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26457 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26458 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26459 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26460 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26461 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26462 'just inserted' FROM t0_template
26463 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26464 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26466 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26467 f_charbig = 'updated by trigger'
26468 WHERE f_int1 = new.f_int1;
26470 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26471 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26472 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26474 # check trigger-1 success: 1
26475 DROP TRIGGER trg_1;
26476 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26477 f_int2 = CAST(f_char1 AS SIGNED INT),
26478 f_charbig = 'just inserted'
26479 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26481 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26482 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26483 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26484 'just inserted' FROM t0_template
26485 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26486 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26488 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26489 f_charbig = 'updated by trigger'
26490 WHERE f_int1 = new.f_int1;
26492 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26493 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26494 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26496 # check trigger-2 success: 1
26497 DROP TRIGGER trg_1;
26498 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26499 f_int2 = CAST(f_char1 AS SIGNED INT),
26500 f_charbig = 'just inserted'
26501 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26503 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26504 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26505 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26506 'just inserted' FROM t0_template
26507 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26508 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26510 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26511 f_charbig = 'updated by trigger'
26512 WHERE f_int1 = new.f_int1;
26514 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26515 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26517 # check trigger-3 success: 1
26518 DROP TRIGGER trg_1;
26519 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26520 f_int2 = CAST(f_char1 AS SIGNED INT),
26521 f_charbig = 'just inserted'
26522 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26524 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26525 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26526 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26527 'just inserted' FROM t0_template
26528 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26529 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26531 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26532 f_charbig = 'updated by trigger'
26533 WHERE f_int1 = - old.f_int1;
26535 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26536 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26538 # check trigger-4 success: 1
26539 DROP TRIGGER trg_1;
26540 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26541 f_int2 = CAST(f_char1 AS SIGNED INT),
26542 f_charbig = 'just inserted'
26543 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26545 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26546 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26547 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26548 'just inserted' FROM t0_template
26549 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26550 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26552 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26553 f_charbig = 'updated by trigger'
26554 WHERE f_int1 = new.f_int1;
26556 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26557 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26559 # check trigger-5 success: 1
26560 DROP TRIGGER trg_1;
26561 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26562 f_int2 = CAST(f_char1 AS SIGNED INT),
26563 f_charbig = 'just inserted'
26564 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26566 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26567 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26568 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26569 'just inserted' FROM t0_template
26570 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26571 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26573 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26574 f_charbig = 'updated by trigger'
26575 WHERE f_int1 = - old.f_int1;
26577 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26578 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26580 # check trigger-6 success: 1
26581 DROP TRIGGER trg_1;
26582 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26583 f_int2 = CAST(f_char1 AS SIGNED INT),
26584 f_charbig = 'just inserted'
26585 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26587 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26588 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26589 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26590 'just inserted' FROM t0_template
26591 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26592 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26594 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26595 f_charbig = 'updated by trigger'
26596 WHERE f_int1 = - old.f_int1;
26599 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26601 # check trigger-7 success: 1
26602 DROP TRIGGER trg_1;
26603 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26604 f_int2 = CAST(f_char1 AS SIGNED INT),
26605 f_charbig = 'just inserted'
26606 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26608 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26609 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26610 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26611 'just inserted' FROM t0_template
26612 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26613 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26615 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26616 f_charbig = 'updated by trigger'
26617 WHERE f_int1 = - old.f_int1;
26620 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26622 # check trigger-8 success: 1
26623 DROP TRIGGER trg_1;
26624 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26625 f_int2 = CAST(f_char1 AS SIGNED INT),
26626 f_charbig = 'just inserted'
26627 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26629 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26631 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26632 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26634 SET new.f_int1 = old.f_int1 + @max_row,
26635 new.f_int2 = old.f_int2 - @max_row,
26636 new.f_charbig = '####updated per update trigger####';
26639 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26640 f_charbig = '####updated per update statement itself####';
26642 # check trigger-9 success: 1
26643 DROP TRIGGER trg_2;
26644 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26645 f_int2 = CAST(f_char1 AS SIGNED INT),
26646 f_charbig = CONCAT('===',f_char1,'===');
26647 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26649 SET new.f_int1 = new.f_int1 + @max_row,
26650 new.f_int2 = new.f_int2 - @max_row,
26651 new.f_charbig = '####updated per update trigger####';
26654 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26655 f_charbig = '####updated per update statement itself####';
26657 # check trigger-10 success: 1
26658 DROP TRIGGER trg_2;
26659 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26660 f_int2 = CAST(f_char1 AS SIGNED INT),
26661 f_charbig = CONCAT('===',f_char1,'===');
26662 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26664 SET new.f_int1 = @my_max1 + @counter,
26665 new.f_int2 = @my_min2 - @counter,
26666 new.f_charbig = '####updated per insert trigger####';
26667 SET @counter = @counter + 1;
26670 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26671 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26672 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26673 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26674 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26676 DROP TRIGGER trg_3;
26678 # check trigger-11 success: 1
26680 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26681 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26682 AND f_charbig = '####updated per insert trigger####';
26683 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26685 SET new.f_int1 = @my_max1 + @counter,
26686 new.f_int2 = @my_min2 - @counter,
26687 new.f_charbig = '####updated per insert trigger####';
26688 SET @counter = @counter + 1;
26691 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26692 INSERT INTO t1 (f_char1, f_char2, f_charbig)
26693 SELECT CAST(f_int1 AS CHAR),
26694 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26695 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26697 DROP TRIGGER trg_3;
26699 # check trigger-12 success: 1
26701 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26702 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26703 AND f_charbig = '####updated per insert trigger####';
26705 Table Op Msg_type Msg_text
26706 test.t1 analyze status OK
26707 CHECK TABLE t1 EXTENDED;
26708 Table Op Msg_type Msg_text
26709 test.t1 check status OK
26710 CHECKSUM TABLE t1 EXTENDED;
26712 test.t1 <some_value>
26714 Table Op Msg_type Msg_text
26715 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
26716 test.t1 optimize status OK
26717 # check layout success: 1
26718 REPAIR TABLE t1 EXTENDED;
26719 Table Op Msg_type Msg_text
26720 test.t1 repair note The storage engine for the table doesn't support repair
26721 # check layout success: 1
26724 # check TRUNCATE success: 1
26725 # check layout success: 1
26726 # End usability test (inc/partition_check.inc)
26733 f_charbig VARCHAR(1000)
26736 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
26737 (PARTITION part1 VALUES IN (0)
26738 (SUBPARTITION sp11, SUBPARTITION sp12),
26739 PARTITION part2 VALUES IN (1)
26740 (SUBPARTITION sp21, SUBPARTITION sp22),
26741 PARTITION part3 VALUES IN (2)
26742 (SUBPARTITION sp31, SUBPARTITION sp32),
26743 PARTITION part4 VALUES IN (NULL)
26744 (SUBPARTITION sp41, SUBPARTITION sp42));
26745 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26746 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26747 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26748 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
26749 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26750 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26751 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26752 # Start usability test (inc/partition_check.inc)
26754 SHOW CREATE TABLE t1;
26756 t1 CREATE TABLE `t1` (
26757 `f_int1` mediumint(9) DEFAULT NULL,
26758 `f_int2` mediumint(9) DEFAULT NULL,
26759 `f_char1` char(20) DEFAULT NULL,
26760 `f_char2` char(20) DEFAULT NULL,
26761 `f_charbig` varchar(1000) DEFAULT NULL
26762 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
26763 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
26764 SUBPARTITION BY HASH (f_int2 + 1)
26765 (PARTITION part1 VALUES IN (0)
26766 (SUBPARTITION sp11 ENGINE = InnoDB,
26767 SUBPARTITION sp12 ENGINE = InnoDB),
26768 PARTITION part2 VALUES IN (1)
26769 (SUBPARTITION sp21 ENGINE = InnoDB,
26770 SUBPARTITION sp22 ENGINE = InnoDB),
26771 PARTITION part3 VALUES IN (2)
26772 (SUBPARTITION sp31 ENGINE = InnoDB,
26773 SUBPARTITION sp32 ENGINE = InnoDB),
26774 PARTITION part4 VALUES IN (NULL)
26775 (SUBPARTITION sp41 ENGINE = InnoDB,
26776 SUBPARTITION sp42 ENGINE = InnoDB)) */
26778 # check prerequisites-1 success: 1
26779 # check COUNT(*) success: 1
26780 # check MIN/MAX(f_int1) success: 1
26781 # check MIN/MAX(f_int2) success: 1
26782 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26783 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26784 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26785 WHERE f_int1 IN (2,3);
26786 # check prerequisites-3 success: 1
26787 DELETE FROM t1 WHERE f_charbig = 'delete me';
26788 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
26789 # check read via f_int1 success: 1
26790 # check read via f_int2 success: 1
26792 # check multiple-1 success: 1
26793 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26795 # check multiple-2 success: 1
26796 INSERT INTO t1 SELECT * FROM t0_template
26797 WHERE MOD(f_int1,3) = 0;
26799 # check multiple-3 success: 1
26800 UPDATE t1 SET f_int1 = f_int1 + @max_row
26801 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26802 AND @max_row_div2 + @max_row_div4;
26804 # check multiple-4 success: 1
26806 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26807 AND @max_row_div2 + @max_row_div4 + @max_row;
26809 # check multiple-5 success: 1
26810 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26812 SET f_int1 = @cur_value , f_int2 = @cur_value,
26813 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26814 f_charbig = '#SINGLE#';
26816 # check single-1 success: 1
26817 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26819 SET f_int1 = @cur_value , f_int2 = @cur_value,
26820 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26821 f_charbig = '#SINGLE#';
26823 # check single-2 success: 1
26824 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26825 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26826 UPDATE t1 SET f_int1 = @cur_value2
26827 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26829 # check single-3 success: 1
26830 SET @cur_value1= -1;
26831 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26832 UPDATE t1 SET f_int1 = @cur_value1
26833 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26835 # check single-4 success: 1
26836 SELECT MAX(f_int1) INTO @cur_value FROM t1;
26837 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26839 # check single-5 success: 1
26840 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26842 # check single-6 success: 1
26843 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26845 Warning 1264 Out of range value for column 'f_int1' at row 1
26846 Warning 1264 Out of range value for column 'f_int2' at row 1
26848 # check single-7 success: 1
26849 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
26850 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26851 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26852 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26853 f_charbig = '#NULL#';
26855 SET f_int1 = NULL , f_int2 = -@max_row,
26856 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26857 f_charbig = '#NULL#';
26858 # check null success: 1
26860 # check null-1 success: 1
26861 UPDATE t1 SET f_int1 = -@max_row
26862 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26863 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26865 # check null-2 success: 1
26866 UPDATE t1 SET f_int1 = NULL
26867 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26868 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26870 # check null-3 success: 1
26872 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26873 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26875 # check null-4 success: 1
26877 WHERE f_int1 = 0 AND f_int2 = 0
26878 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26879 AND f_charbig = '#NULL#';
26881 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26882 SELECT f_int1, f_int1, '', '', 'was inserted'
26883 FROM t0_template source_tab
26884 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26886 # check transactions-1 success: 1
26889 # check transactions-2 success: 1
26892 # check transactions-3 success: 1
26893 DELETE FROM t1 WHERE f_charbig = 'was inserted';
26897 # check transactions-4 success: 1
26898 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26899 SELECT f_int1, f_int1, '', '', 'was inserted'
26900 FROM t0_template source_tab
26901 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26903 # check transactions-5 success: 1
26906 # check transactions-6 success: 1
26907 # INFO: Storage engine used for t1 seems to be transactional.
26910 # check transactions-7 success: 1
26911 DELETE FROM t1 WHERE f_charbig = 'was inserted';
26913 SET @@session.sql_mode = 'traditional';
26914 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26915 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26916 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26917 '', '', 'was inserted' FROM t0_template
26918 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26919 ERROR 22012: Division by 0
26922 # check transactions-8 success: 1
26923 # INFO: Storage engine used for t1 seems to be able to revert
26924 # changes made by the failing statement.
26925 SET @@session.sql_mode = '';
26927 DELETE FROM t1 WHERE f_charbig = 'was inserted';
26929 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26931 # check special-1 success: 1
26932 UPDATE t1 SET f_charbig = '';
26934 # check special-2 success: 1
26935 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26936 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26937 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26938 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26939 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26940 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26941 'just inserted' FROM t0_template
26942 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26943 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26945 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26946 f_charbig = 'updated by trigger'
26947 WHERE f_int1 = new.f_int1;
26949 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26950 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26951 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26953 # check trigger-1 success: 1
26954 DROP TRIGGER trg_1;
26955 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26956 f_int2 = CAST(f_char1 AS SIGNED INT),
26957 f_charbig = 'just inserted'
26958 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26960 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26961 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26962 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26963 'just inserted' FROM t0_template
26964 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26965 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26967 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26968 f_charbig = 'updated by trigger'
26969 WHERE f_int1 = new.f_int1;
26971 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26972 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26973 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26975 # check trigger-2 success: 1
26976 DROP TRIGGER trg_1;
26977 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26978 f_int2 = CAST(f_char1 AS SIGNED INT),
26979 f_charbig = 'just inserted'
26980 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26982 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26983 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26984 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26985 'just inserted' FROM t0_template
26986 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26987 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26989 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26990 f_charbig = 'updated by trigger'
26991 WHERE f_int1 = new.f_int1;
26993 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26994 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26996 # check trigger-3 success: 1
26997 DROP TRIGGER trg_1;
26998 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26999 f_int2 = CAST(f_char1 AS SIGNED INT),
27000 f_charbig = 'just inserted'
27001 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27003 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27004 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27005 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27006 'just inserted' FROM t0_template
27007 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27008 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27010 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27011 f_charbig = 'updated by trigger'
27012 WHERE f_int1 = - old.f_int1;
27014 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27015 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27017 # check trigger-4 success: 1
27018 DROP TRIGGER trg_1;
27019 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27020 f_int2 = CAST(f_char1 AS SIGNED INT),
27021 f_charbig = 'just inserted'
27022 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27024 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27025 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27026 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27027 'just inserted' FROM t0_template
27028 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27029 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27031 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27032 f_charbig = 'updated by trigger'
27033 WHERE f_int1 = new.f_int1;
27035 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27036 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27038 # check trigger-5 success: 1
27039 DROP TRIGGER trg_1;
27040 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27041 f_int2 = CAST(f_char1 AS SIGNED INT),
27042 f_charbig = 'just inserted'
27043 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27045 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27046 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27047 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27048 'just inserted' FROM t0_template
27049 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27050 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27052 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27053 f_charbig = 'updated by trigger'
27054 WHERE f_int1 = - old.f_int1;
27056 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27057 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27059 # check trigger-6 success: 1
27060 DROP TRIGGER trg_1;
27061 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27062 f_int2 = CAST(f_char1 AS SIGNED INT),
27063 f_charbig = 'just inserted'
27064 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27066 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27067 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27068 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27069 'just inserted' FROM t0_template
27070 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27071 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27073 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27074 f_charbig = 'updated by trigger'
27075 WHERE f_int1 = - old.f_int1;
27078 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27080 # check trigger-7 success: 1
27081 DROP TRIGGER trg_1;
27082 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27083 f_int2 = CAST(f_char1 AS SIGNED INT),
27084 f_charbig = 'just inserted'
27085 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27087 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27088 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27089 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27090 'just inserted' FROM t0_template
27091 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27092 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27094 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27095 f_charbig = 'updated by trigger'
27096 WHERE f_int1 = - old.f_int1;
27099 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27101 # check trigger-8 success: 1
27102 DROP TRIGGER trg_1;
27103 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27104 f_int2 = CAST(f_char1 AS SIGNED INT),
27105 f_charbig = 'just inserted'
27106 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27108 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27110 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27111 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27113 SET new.f_int1 = old.f_int1 + @max_row,
27114 new.f_int2 = old.f_int2 - @max_row,
27115 new.f_charbig = '####updated per update trigger####';
27118 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27119 f_charbig = '####updated per update statement itself####';
27121 # check trigger-9 success: 1
27122 DROP TRIGGER trg_2;
27123 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27124 f_int2 = CAST(f_char1 AS SIGNED INT),
27125 f_charbig = CONCAT('===',f_char1,'===');
27126 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27128 SET new.f_int1 = new.f_int1 + @max_row,
27129 new.f_int2 = new.f_int2 - @max_row,
27130 new.f_charbig = '####updated per update trigger####';
27133 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27134 f_charbig = '####updated per update statement itself####';
27136 # check trigger-10 success: 1
27137 DROP TRIGGER trg_2;
27138 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27139 f_int2 = CAST(f_char1 AS SIGNED INT),
27140 f_charbig = CONCAT('===',f_char1,'===');
27141 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27143 SET new.f_int1 = @my_max1 + @counter,
27144 new.f_int2 = @my_min2 - @counter,
27145 new.f_charbig = '####updated per insert trigger####';
27146 SET @counter = @counter + 1;
27149 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27150 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27151 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27152 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27153 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27155 DROP TRIGGER trg_3;
27157 # check trigger-11 success: 1
27159 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27160 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27161 AND f_charbig = '####updated per insert trigger####';
27162 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27164 SET new.f_int1 = @my_max1 + @counter,
27165 new.f_int2 = @my_min2 - @counter,
27166 new.f_charbig = '####updated per insert trigger####';
27167 SET @counter = @counter + 1;
27170 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27171 INSERT INTO t1 (f_char1, f_char2, f_charbig)
27172 SELECT CAST(f_int1 AS CHAR),
27173 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27174 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27176 DROP TRIGGER trg_3;
27178 # check trigger-12 success: 1
27180 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27181 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27182 AND f_charbig = '####updated per insert trigger####';
27184 Table Op Msg_type Msg_text
27185 test.t1 analyze status OK
27186 CHECK TABLE t1 EXTENDED;
27187 Table Op Msg_type Msg_text
27188 test.t1 check status OK
27189 CHECKSUM TABLE t1 EXTENDED;
27191 test.t1 <some_value>
27193 Table Op Msg_type Msg_text
27194 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
27195 test.t1 optimize status OK
27196 # check layout success: 1
27197 REPAIR TABLE t1 EXTENDED;
27198 Table Op Msg_type Msg_text
27199 test.t1 repair note The storage engine for the table doesn't support repair
27200 # check layout success: 1
27203 # check TRUNCATE success: 1
27204 # check layout success: 1
27205 # End usability test (inc/partition_check.inc)
27212 f_charbig VARCHAR(1000)
27215 PARTITION BY LIST(ABS(MOD(f_int1,2)))
27216 SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
27217 (PARTITION part1 VALUES IN (0),
27218 PARTITION part2 VALUES IN (1),
27219 PARTITION part3 VALUES IN (NULL));
27220 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27221 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27222 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
27223 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
27224 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27225 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27226 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
27227 # Start usability test (inc/partition_check.inc)
27229 SHOW CREATE TABLE t1;
27231 t1 CREATE TABLE `t1` (
27232 `f_int1` mediumint(9) DEFAULT NULL,
27233 `f_int2` mediumint(9) DEFAULT NULL,
27234 `f_char1` char(20) DEFAULT NULL,
27235 `f_char2` char(20) DEFAULT NULL,
27236 `f_charbig` varchar(1000) DEFAULT NULL
27237 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
27238 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
27239 SUBPARTITION BY KEY (f_int2)
27241 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
27242 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
27243 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
27245 # check prerequisites-1 success: 1
27246 # check COUNT(*) success: 1
27247 # check MIN/MAX(f_int1) success: 1
27248 # check MIN/MAX(f_int2) success: 1
27249 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27250 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27251 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27252 WHERE f_int1 IN (2,3);
27253 # check prerequisites-3 success: 1
27254 DELETE FROM t1 WHERE f_charbig = 'delete me';
27255 # INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
27256 # check read via f_int1 success: 1
27257 # check read via f_int2 success: 1
27259 # check multiple-1 success: 1
27260 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27262 # check multiple-2 success: 1
27263 INSERT INTO t1 SELECT * FROM t0_template
27264 WHERE MOD(f_int1,3) = 0;
27266 # check multiple-3 success: 1
27267 UPDATE t1 SET f_int1 = f_int1 + @max_row
27268 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27269 AND @max_row_div2 + @max_row_div4;
27271 # check multiple-4 success: 1
27273 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27274 AND @max_row_div2 + @max_row_div4 + @max_row;
27276 # check multiple-5 success: 1
27277 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27279 SET f_int1 = @cur_value , f_int2 = @cur_value,
27280 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27281 f_charbig = '#SINGLE#';
27283 # check single-1 success: 1
27284 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27286 SET f_int1 = @cur_value , f_int2 = @cur_value,
27287 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27288 f_charbig = '#SINGLE#';
27290 # check single-2 success: 1
27291 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27292 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27293 UPDATE t1 SET f_int1 = @cur_value2
27294 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27296 # check single-3 success: 1
27297 SET @cur_value1= -1;
27298 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27299 UPDATE t1 SET f_int1 = @cur_value1
27300 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27302 # check single-4 success: 1
27303 SELECT MAX(f_int1) INTO @cur_value FROM t1;
27304 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27306 # check single-5 success: 1
27307 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27309 # check single-6 success: 1
27310 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27312 Warning 1264 Out of range value for column 'f_int1' at row 1
27313 Warning 1264 Out of range value for column 'f_int2' at row 1
27315 # check single-7 success: 1
27316 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
27317 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27318 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27319 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27320 f_charbig = '#NULL#';
27322 SET f_int1 = NULL , f_int2 = -@max_row,
27323 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27324 f_charbig = '#NULL#';
27325 # check null success: 1
27327 # check null-1 success: 1
27328 UPDATE t1 SET f_int1 = -@max_row
27329 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27330 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27332 # check null-2 success: 1
27333 UPDATE t1 SET f_int1 = NULL
27334 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27335 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27337 # check null-3 success: 1
27339 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27340 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27342 # check null-4 success: 1
27344 WHERE f_int1 = 0 AND f_int2 = 0
27345 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27346 AND f_charbig = '#NULL#';
27348 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27349 SELECT f_int1, f_int1, '', '', 'was inserted'
27350 FROM t0_template source_tab
27351 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27353 # check transactions-1 success: 1
27356 # check transactions-2 success: 1
27359 # check transactions-3 success: 1
27360 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27364 # check transactions-4 success: 1
27365 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27366 SELECT f_int1, f_int1, '', '', 'was inserted'
27367 FROM t0_template source_tab
27368 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27370 # check transactions-5 success: 1
27373 # check transactions-6 success: 1
27374 # INFO: Storage engine used for t1 seems to be transactional.
27377 # check transactions-7 success: 1
27378 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27380 SET @@session.sql_mode = 'traditional';
27381 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27382 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27383 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27384 '', '', 'was inserted' FROM t0_template
27385 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27386 ERROR 22012: Division by 0
27389 # check transactions-8 success: 1
27390 # INFO: Storage engine used for t1 seems to be able to revert
27391 # changes made by the failing statement.
27392 SET @@session.sql_mode = '';
27394 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27396 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27398 # check special-1 success: 1
27399 UPDATE t1 SET f_charbig = '';
27401 # check special-2 success: 1
27402 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27403 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27404 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27405 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27406 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27407 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27408 'just inserted' FROM t0_template
27409 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27410 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27412 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27413 f_charbig = 'updated by trigger'
27414 WHERE f_int1 = new.f_int1;
27416 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27417 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27418 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27420 # check trigger-1 success: 1
27421 DROP TRIGGER trg_1;
27422 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27423 f_int2 = CAST(f_char1 AS SIGNED INT),
27424 f_charbig = 'just inserted'
27425 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27427 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27428 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27429 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27430 'just inserted' FROM t0_template
27431 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27432 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27434 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27435 f_charbig = 'updated by trigger'
27436 WHERE f_int1 = new.f_int1;
27438 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27439 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27440 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27442 # check trigger-2 success: 1
27443 DROP TRIGGER trg_1;
27444 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27445 f_int2 = CAST(f_char1 AS SIGNED INT),
27446 f_charbig = 'just inserted'
27447 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27449 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27450 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27451 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27452 'just inserted' FROM t0_template
27453 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27454 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27456 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27457 f_charbig = 'updated by trigger'
27458 WHERE f_int1 = new.f_int1;
27460 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27461 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27463 # check trigger-3 success: 1
27464 DROP TRIGGER trg_1;
27465 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27466 f_int2 = CAST(f_char1 AS SIGNED INT),
27467 f_charbig = 'just inserted'
27468 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27470 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27471 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27472 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27473 'just inserted' FROM t0_template
27474 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27475 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27477 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27478 f_charbig = 'updated by trigger'
27479 WHERE f_int1 = - old.f_int1;
27481 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27482 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27484 # check trigger-4 success: 1
27485 DROP TRIGGER trg_1;
27486 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27487 f_int2 = CAST(f_char1 AS SIGNED INT),
27488 f_charbig = 'just inserted'
27489 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27491 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27492 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27493 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27494 'just inserted' FROM t0_template
27495 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27496 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27498 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27499 f_charbig = 'updated by trigger'
27500 WHERE f_int1 = new.f_int1;
27502 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27503 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27505 # check trigger-5 success: 1
27506 DROP TRIGGER trg_1;
27507 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27508 f_int2 = CAST(f_char1 AS SIGNED INT),
27509 f_charbig = 'just inserted'
27510 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27512 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27513 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27514 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27515 'just inserted' FROM t0_template
27516 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27517 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27519 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27520 f_charbig = 'updated by trigger'
27521 WHERE f_int1 = - old.f_int1;
27523 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27524 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27526 # check trigger-6 success: 1
27527 DROP TRIGGER trg_1;
27528 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27529 f_int2 = CAST(f_char1 AS SIGNED INT),
27530 f_charbig = 'just inserted'
27531 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27533 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27534 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27535 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27536 'just inserted' FROM t0_template
27537 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27538 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27540 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27541 f_charbig = 'updated by trigger'
27542 WHERE f_int1 = - old.f_int1;
27545 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27547 # check trigger-7 success: 1
27548 DROP TRIGGER trg_1;
27549 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27550 f_int2 = CAST(f_char1 AS SIGNED INT),
27551 f_charbig = 'just inserted'
27552 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27554 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27555 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27556 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27557 'just inserted' FROM t0_template
27558 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27559 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27561 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27562 f_charbig = 'updated by trigger'
27563 WHERE f_int1 = - old.f_int1;
27566 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27568 # check trigger-8 success: 1
27569 DROP TRIGGER trg_1;
27570 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27571 f_int2 = CAST(f_char1 AS SIGNED INT),
27572 f_charbig = 'just inserted'
27573 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27575 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27577 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27578 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27580 SET new.f_int1 = old.f_int1 + @max_row,
27581 new.f_int2 = old.f_int2 - @max_row,
27582 new.f_charbig = '####updated per update trigger####';
27585 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27586 f_charbig = '####updated per update statement itself####';
27588 # check trigger-9 success: 1
27589 DROP TRIGGER trg_2;
27590 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27591 f_int2 = CAST(f_char1 AS SIGNED INT),
27592 f_charbig = CONCAT('===',f_char1,'===');
27593 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27595 SET new.f_int1 = new.f_int1 + @max_row,
27596 new.f_int2 = new.f_int2 - @max_row,
27597 new.f_charbig = '####updated per update trigger####';
27600 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27601 f_charbig = '####updated per update statement itself####';
27603 # check trigger-10 success: 1
27604 DROP TRIGGER trg_2;
27605 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27606 f_int2 = CAST(f_char1 AS SIGNED INT),
27607 f_charbig = CONCAT('===',f_char1,'===');
27608 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27610 SET new.f_int1 = @my_max1 + @counter,
27611 new.f_int2 = @my_min2 - @counter,
27612 new.f_charbig = '####updated per insert trigger####';
27613 SET @counter = @counter + 1;
27616 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27617 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27618 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27619 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27620 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27622 DROP TRIGGER trg_3;
27624 # check trigger-11 success: 1
27626 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27627 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27628 AND f_charbig = '####updated per insert trigger####';
27629 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27631 SET new.f_int1 = @my_max1 + @counter,
27632 new.f_int2 = @my_min2 - @counter,
27633 new.f_charbig = '####updated per insert trigger####';
27634 SET @counter = @counter + 1;
27637 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27638 INSERT INTO t1 (f_char1, f_char2, f_charbig)
27639 SELECT CAST(f_int1 AS CHAR),
27640 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27641 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27643 DROP TRIGGER trg_3;
27645 # check trigger-12 success: 1
27647 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27648 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27649 AND f_charbig = '####updated per insert trigger####';
27651 Table Op Msg_type Msg_text
27652 test.t1 analyze status OK
27653 CHECK TABLE t1 EXTENDED;
27654 Table Op Msg_type Msg_text
27655 test.t1 check status OK
27656 CHECKSUM TABLE t1 EXTENDED;
27658 test.t1 <some_value>
27660 Table Op Msg_type Msg_text
27661 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
27662 test.t1 optimize status OK
27663 # check layout success: 1
27664 REPAIR TABLE t1 EXTENDED;
27665 Table Op Msg_type Msg_text
27666 test.t1 repair note The storage engine for the table doesn't support repair
27667 # check layout success: 1
27670 # check TRUNCATE success: 1
27671 # check layout success: 1
27672 # End usability test (inc/partition_check.inc)
27674 # 2.3.2 PRIMARY KEY exists
27675 DROP TABLE IF EXISTS t1;
27681 f_charbig VARCHAR(1000)
27682 , PRIMARY KEY (f_int1,f_int2)
27684 PARTITION BY HASH(f_int1) PARTITIONS 2;
27685 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27686 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27687 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
27688 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
27689 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27690 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27691 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
27692 # Start usability test (inc/partition_check.inc)
27694 SHOW CREATE TABLE t1;
27696 t1 CREATE TABLE `t1` (
27697 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
27698 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
27699 `f_char1` char(20) DEFAULT NULL,
27700 `f_char2` char(20) DEFAULT NULL,
27701 `f_charbig` varchar(1000) DEFAULT NULL,
27702 PRIMARY KEY (`f_int1`,`f_int2`)
27703 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
27704 /*!50100 PARTITION BY HASH (f_int1)
27707 # check prerequisites-1 success: 1
27708 # check COUNT(*) success: 1
27709 # check MIN/MAX(f_int1) success: 1
27710 # check MIN/MAX(f_int2) success: 1
27711 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27712 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27713 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27714 WHERE f_int1 IN (2,3);
27715 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
27716 # check prerequisites-3 success: 1
27717 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
27718 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27719 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
27720 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
27721 WHERE f_int1 IN (2,3);
27722 DELETE FROM t1 WHERE f_charbig = 'delete me';
27723 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27724 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
27725 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
27726 WHERE f_int1 IN (2,3);
27727 DELETE FROM t1 WHERE f_charbig = 'delete me';
27728 # check read via f_int1 success: 1
27729 # check read via f_int2 success: 1
27731 # check multiple-1 success: 1
27732 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27734 # check multiple-2 success: 1
27735 INSERT INTO t1 SELECT * FROM t0_template
27736 WHERE MOD(f_int1,3) = 0;
27738 # check multiple-3 success: 1
27739 UPDATE t1 SET f_int1 = f_int1 + @max_row
27740 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27741 AND @max_row_div2 + @max_row_div4;
27743 # check multiple-4 success: 1
27745 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27746 AND @max_row_div2 + @max_row_div4 + @max_row;
27748 # check multiple-5 success: 1
27749 SELECT COUNT(*) INTO @try_count FROM t0_template
27750 WHERE MOD(f_int1,3) = 0
27751 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27752 SELECT COUNT(*) INTO @clash_count
27753 FROM t1 INNER JOIN t0_template USING(f_int1)
27754 WHERE MOD(f_int1,3) = 0
27755 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27756 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27758 SET f_int1 = @cur_value , f_int2 = @cur_value,
27759 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27760 f_charbig = '#SINGLE#';
27762 # check single-1 success: 1
27763 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27765 SET f_int1 = @cur_value , f_int2 = @cur_value,
27766 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27767 f_charbig = '#SINGLE#';
27769 # check single-2 success: 1
27770 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27771 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27772 UPDATE t1 SET f_int1 = @cur_value2
27773 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27775 # check single-3 success: 1
27776 SET @cur_value1= -1;
27777 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27778 UPDATE t1 SET f_int1 = @cur_value1
27779 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27781 # check single-4 success: 1
27782 SELECT MAX(f_int1) INTO @cur_value FROM t1;
27783 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27785 # check single-5 success: 1
27786 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27788 # check single-6 success: 1
27789 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27791 Warning 1264 Out of range value for column 'f_int1' at row 1
27792 Warning 1264 Out of range value for column 'f_int2' at row 1
27794 # check single-7 success: 1
27795 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
27796 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27797 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27798 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27799 f_charbig = '#NULL#';
27801 SET f_int1 = NULL , f_int2 = -@max_row,
27802 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27803 f_charbig = '#NULL#';
27804 ERROR 23000: Column 'f_int1' cannot be null
27805 # check null success: 1
27807 WHERE f_int1 = 0 AND f_int2 = 0
27808 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27809 AND f_charbig = '#NULL#';
27810 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27811 SELECT f_int1, f_int1, '', '', 'was inserted'
27812 FROM t0_template source_tab
27813 WHERE MOD(f_int1,3) = 0
27814 AND f_int1 BETWEEN @max_row_div2 AND @max_row
27816 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
27817 f_int2 = 2 * @max_row + source_tab.f_int1,
27818 f_charbig = 'was updated';
27820 # check unique-1-a success: 1
27822 # check unique-1-b success: 1
27823 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27824 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27825 f_int2 = CAST(f_char1 AS SIGNED INT),
27826 f_charbig = CONCAT('===',f_char1,'===')
27827 WHERE f_charbig = 'was updated';
27828 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27829 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
27830 FROM t0_template source_tab
27831 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27833 # check replace success: 1
27835 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
27837 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
27838 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
27839 UPDATE t1 SET f_int2 = f_int1,
27840 f_char1 = CAST(f_int1 AS CHAR),
27841 f_char2 = CAST(f_int1 AS CHAR),
27842 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
27843 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
27845 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27846 SELECT f_int1, f_int1, '', '', 'was inserted'
27847 FROM t0_template source_tab
27848 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27850 # check transactions-1 success: 1
27853 # check transactions-2 success: 1
27856 # check transactions-3 success: 1
27857 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27861 # check transactions-4 success: 1
27862 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27863 SELECT f_int1, f_int1, '', '', 'was inserted'
27864 FROM t0_template source_tab
27865 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27867 # check transactions-5 success: 1
27870 # check transactions-6 success: 1
27871 # INFO: Storage engine used for t1 seems to be transactional.
27874 # check transactions-7 success: 1
27875 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27877 SET @@session.sql_mode = 'traditional';
27878 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27879 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27880 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27881 '', '', 'was inserted' FROM t0_template
27882 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27883 ERROR 22012: Division by 0
27886 # check transactions-8 success: 1
27887 # INFO: Storage engine used for t1 seems to be able to revert
27888 # changes made by the failing statement.
27889 SET @@session.sql_mode = '';
27891 DELETE FROM t1 WHERE f_charbig = 'was inserted';
27893 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27895 # check special-1 success: 1
27896 UPDATE t1 SET f_charbig = '';
27898 # check special-2 success: 1
27899 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27900 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27901 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27902 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27903 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27904 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27905 'just inserted' FROM t0_template
27906 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27907 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27909 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27910 f_charbig = 'updated by trigger'
27911 WHERE f_int1 = new.f_int1;
27913 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27914 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27915 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27917 # check trigger-1 success: 1
27918 DROP TRIGGER trg_1;
27919 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27920 f_int2 = CAST(f_char1 AS SIGNED INT),
27921 f_charbig = 'just inserted'
27922 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27924 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27925 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27926 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27927 'just inserted' FROM t0_template
27928 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27929 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27931 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27932 f_charbig = 'updated by trigger'
27933 WHERE f_int1 = new.f_int1;
27935 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27936 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27937 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27939 # check trigger-2 success: 1
27940 DROP TRIGGER trg_1;
27941 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27942 f_int2 = CAST(f_char1 AS SIGNED INT),
27943 f_charbig = 'just inserted'
27944 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27946 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27947 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27948 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27949 'just inserted' FROM t0_template
27950 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27951 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27953 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27954 f_charbig = 'updated by trigger'
27955 WHERE f_int1 = new.f_int1;
27957 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27958 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27960 # check trigger-3 success: 1
27961 DROP TRIGGER trg_1;
27962 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27963 f_int2 = CAST(f_char1 AS SIGNED INT),
27964 f_charbig = 'just inserted'
27965 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27967 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27968 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27969 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27970 'just inserted' FROM t0_template
27971 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27972 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27974 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27975 f_charbig = 'updated by trigger'
27976 WHERE f_int1 = - old.f_int1;
27978 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27979 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27981 # check trigger-4 success: 1
27982 DROP TRIGGER trg_1;
27983 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27984 f_int2 = CAST(f_char1 AS SIGNED INT),
27985 f_charbig = 'just inserted'
27986 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27988 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27989 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27990 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27991 'just inserted' FROM t0_template
27992 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27993 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27995 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27996 f_charbig = 'updated by trigger'
27997 WHERE f_int1 = new.f_int1;
27999 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28000 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28002 # check trigger-5 success: 1
28003 DROP TRIGGER trg_1;
28004 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28005 f_int2 = CAST(f_char1 AS SIGNED INT),
28006 f_charbig = 'just inserted'
28007 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28009 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28010 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28011 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28012 'just inserted' FROM t0_template
28013 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28014 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28016 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28017 f_charbig = 'updated by trigger'
28018 WHERE f_int1 = - old.f_int1;
28020 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28021 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28023 # check trigger-6 success: 1
28024 DROP TRIGGER trg_1;
28025 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28026 f_int2 = CAST(f_char1 AS SIGNED INT),
28027 f_charbig = 'just inserted'
28028 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28030 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28031 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28032 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28033 'just inserted' FROM t0_template
28034 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28035 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28037 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28038 f_charbig = 'updated by trigger'
28039 WHERE f_int1 = - old.f_int1;
28042 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28044 # check trigger-7 success: 1
28045 DROP TRIGGER trg_1;
28046 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28047 f_int2 = CAST(f_char1 AS SIGNED INT),
28048 f_charbig = 'just inserted'
28049 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28051 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28052 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28053 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28054 'just inserted' FROM t0_template
28055 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28056 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28058 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28059 f_charbig = 'updated by trigger'
28060 WHERE f_int1 = - old.f_int1;
28063 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28065 # check trigger-8 success: 1
28066 DROP TRIGGER trg_1;
28067 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28068 f_int2 = CAST(f_char1 AS SIGNED INT),
28069 f_charbig = 'just inserted'
28070 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28072 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28074 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28075 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28077 SET new.f_int1 = old.f_int1 + @max_row,
28078 new.f_int2 = old.f_int2 - @max_row,
28079 new.f_charbig = '####updated per update trigger####';
28082 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28083 f_charbig = '####updated per update statement itself####';
28085 # check trigger-9 success: 1
28086 DROP TRIGGER trg_2;
28087 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28088 f_int2 = CAST(f_char1 AS SIGNED INT),
28089 f_charbig = CONCAT('===',f_char1,'===');
28090 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28092 SET new.f_int1 = new.f_int1 + @max_row,
28093 new.f_int2 = new.f_int2 - @max_row,
28094 new.f_charbig = '####updated per update trigger####';
28097 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28098 f_charbig = '####updated per update statement itself####';
28100 # check trigger-10 success: 1
28101 DROP TRIGGER trg_2;
28102 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28103 f_int2 = CAST(f_char1 AS SIGNED INT),
28104 f_charbig = CONCAT('===',f_char1,'===');
28105 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28107 SET new.f_int1 = @my_max1 + @counter,
28108 new.f_int2 = @my_min2 - @counter,
28109 new.f_charbig = '####updated per insert trigger####';
28110 SET @counter = @counter + 1;
28113 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28114 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28115 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28116 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28117 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28119 DROP TRIGGER trg_3;
28121 # check trigger-11 success: 1
28123 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28124 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28125 AND f_charbig = '####updated per insert trigger####';
28126 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28128 SET new.f_int1 = @my_max1 + @counter,
28129 new.f_int2 = @my_min2 - @counter,
28130 new.f_charbig = '####updated per insert trigger####';
28131 SET @counter = @counter + 1;
28134 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28135 INSERT INTO t1 (f_char1, f_char2, f_charbig)
28136 SELECT CAST(f_int1 AS CHAR),
28137 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28138 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28140 DROP TRIGGER trg_3;
28142 # check trigger-12 success: 1
28144 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28145 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28146 AND f_charbig = '####updated per insert trigger####';
28148 Table Op Msg_type Msg_text
28149 test.t1 analyze status OK
28150 CHECK TABLE t1 EXTENDED;
28151 Table Op Msg_type Msg_text
28152 test.t1 check status OK
28153 CHECKSUM TABLE t1 EXTENDED;
28155 test.t1 <some_value>
28157 Table Op Msg_type Msg_text
28158 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
28159 test.t1 optimize status OK
28160 # check layout success: 1
28161 REPAIR TABLE t1 EXTENDED;
28162 Table Op Msg_type Msg_text
28163 test.t1 repair note The storage engine for the table doesn't support repair
28164 # check layout success: 1
28167 # check TRUNCATE success: 1
28168 # check layout success: 1
28169 # End usability test (inc/partition_check.inc)
28176 f_charbig VARCHAR(1000)
28177 , PRIMARY KEY (f_int1,f_int2)
28179 PARTITION BY KEY(f_int1) PARTITIONS 5;
28180 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28181 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28182 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
28183 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
28184 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28185 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28186 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
28187 # Start usability test (inc/partition_check.inc)
28189 SHOW CREATE TABLE t1;
28191 t1 CREATE TABLE `t1` (
28192 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
28193 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
28194 `f_char1` char(20) DEFAULT NULL,
28195 `f_char2` char(20) DEFAULT NULL,
28196 `f_charbig` varchar(1000) DEFAULT NULL,
28197 PRIMARY KEY (`f_int1`,`f_int2`)
28198 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
28199 /*!50100 PARTITION BY KEY (f_int1)
28202 # check prerequisites-1 success: 1
28203 # check COUNT(*) success: 1
28204 # check MIN/MAX(f_int1) success: 1
28205 # check MIN/MAX(f_int2) success: 1
28206 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28207 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28208 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28209 WHERE f_int1 IN (2,3);
28210 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
28211 # check prerequisites-3 success: 1
28212 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
28213 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28214 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
28215 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
28216 WHERE f_int1 IN (2,3);
28217 DELETE FROM t1 WHERE f_charbig = 'delete me';
28218 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28219 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
28220 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
28221 WHERE f_int1 IN (2,3);
28222 DELETE FROM t1 WHERE f_charbig = 'delete me';
28223 # check read via f_int1 success: 1
28224 # check read via f_int2 success: 1
28226 # check multiple-1 success: 1
28227 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28229 # check multiple-2 success: 1
28230 INSERT INTO t1 SELECT * FROM t0_template
28231 WHERE MOD(f_int1,3) = 0;
28233 # check multiple-3 success: 1
28234 UPDATE t1 SET f_int1 = f_int1 + @max_row
28235 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28236 AND @max_row_div2 + @max_row_div4;
28238 # check multiple-4 success: 1
28240 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28241 AND @max_row_div2 + @max_row_div4 + @max_row;
28243 # check multiple-5 success: 1
28244 SELECT COUNT(*) INTO @try_count FROM t0_template
28245 WHERE MOD(f_int1,3) = 0
28246 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28247 SELECT COUNT(*) INTO @clash_count
28248 FROM t1 INNER JOIN t0_template USING(f_int1)
28249 WHERE MOD(f_int1,3) = 0
28250 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28251 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28253 SET f_int1 = @cur_value , f_int2 = @cur_value,
28254 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28255 f_charbig = '#SINGLE#';
28257 # check single-1 success: 1
28258 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28260 SET f_int1 = @cur_value , f_int2 = @cur_value,
28261 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28262 f_charbig = '#SINGLE#';
28264 # check single-2 success: 1
28265 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28266 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28267 UPDATE t1 SET f_int1 = @cur_value2
28268 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28270 # check single-3 success: 1
28271 SET @cur_value1= -1;
28272 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28273 UPDATE t1 SET f_int1 = @cur_value1
28274 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28276 # check single-4 success: 1
28277 SELECT MAX(f_int1) INTO @cur_value FROM t1;
28278 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28280 # check single-5 success: 1
28281 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28283 # check single-6 success: 1
28284 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28286 Warning 1264 Out of range value for column 'f_int1' at row 1
28287 Warning 1264 Out of range value for column 'f_int2' at row 1
28289 # check single-7 success: 1
28290 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
28291 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28292 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28293 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28294 f_charbig = '#NULL#';
28296 SET f_int1 = NULL , f_int2 = -@max_row,
28297 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28298 f_charbig = '#NULL#';
28299 ERROR 23000: Column 'f_int1' cannot be null
28300 # check null success: 1
28302 WHERE f_int1 = 0 AND f_int2 = 0
28303 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28304 AND f_charbig = '#NULL#';
28305 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28306 SELECT f_int1, f_int1, '', '', 'was inserted'
28307 FROM t0_template source_tab
28308 WHERE MOD(f_int1,3) = 0
28309 AND f_int1 BETWEEN @max_row_div2 AND @max_row
28311 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
28312 f_int2 = 2 * @max_row + source_tab.f_int1,
28313 f_charbig = 'was updated';
28315 # check unique-1-a success: 1
28317 # check unique-1-b success: 1
28318 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28319 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28320 f_int2 = CAST(f_char1 AS SIGNED INT),
28321 f_charbig = CONCAT('===',f_char1,'===')
28322 WHERE f_charbig = 'was updated';
28323 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28324 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
28325 FROM t0_template source_tab
28326 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28328 # check replace success: 1
28330 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
28332 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
28333 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
28334 UPDATE t1 SET f_int2 = f_int1,
28335 f_char1 = CAST(f_int1 AS CHAR),
28336 f_char2 = CAST(f_int1 AS CHAR),
28337 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
28338 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
28340 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28341 SELECT f_int1, f_int1, '', '', 'was inserted'
28342 FROM t0_template source_tab
28343 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28345 # check transactions-1 success: 1
28348 # check transactions-2 success: 1
28351 # check transactions-3 success: 1
28352 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28356 # check transactions-4 success: 1
28357 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28358 SELECT f_int1, f_int1, '', '', 'was inserted'
28359 FROM t0_template source_tab
28360 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28362 # check transactions-5 success: 1
28365 # check transactions-6 success: 1
28366 # INFO: Storage engine used for t1 seems to be transactional.
28369 # check transactions-7 success: 1
28370 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28372 SET @@session.sql_mode = 'traditional';
28373 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28374 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28375 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28376 '', '', 'was inserted' FROM t0_template
28377 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28378 ERROR 22012: Division by 0
28381 # check transactions-8 success: 1
28382 # INFO: Storage engine used for t1 seems to be able to revert
28383 # changes made by the failing statement.
28384 SET @@session.sql_mode = '';
28386 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28388 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28390 # check special-1 success: 1
28391 UPDATE t1 SET f_charbig = '';
28393 # check special-2 success: 1
28394 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28395 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28396 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28397 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28398 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28399 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28400 'just inserted' FROM t0_template
28401 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28402 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28404 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28405 f_charbig = 'updated by trigger'
28406 WHERE f_int1 = new.f_int1;
28408 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28409 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28410 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28412 # check trigger-1 success: 1
28413 DROP TRIGGER trg_1;
28414 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28415 f_int2 = CAST(f_char1 AS SIGNED INT),
28416 f_charbig = 'just inserted'
28417 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28419 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28420 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28421 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28422 'just inserted' FROM t0_template
28423 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28424 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28426 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28427 f_charbig = 'updated by trigger'
28428 WHERE f_int1 = new.f_int1;
28430 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28431 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28432 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28434 # check trigger-2 success: 1
28435 DROP TRIGGER trg_1;
28436 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28437 f_int2 = CAST(f_char1 AS SIGNED INT),
28438 f_charbig = 'just inserted'
28439 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28441 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28442 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28443 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28444 'just inserted' FROM t0_template
28445 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28446 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28448 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28449 f_charbig = 'updated by trigger'
28450 WHERE f_int1 = new.f_int1;
28452 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28453 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28455 # check trigger-3 success: 1
28456 DROP TRIGGER trg_1;
28457 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28458 f_int2 = CAST(f_char1 AS SIGNED INT),
28459 f_charbig = 'just inserted'
28460 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28462 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28463 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28464 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28465 'just inserted' FROM t0_template
28466 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28467 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28469 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28470 f_charbig = 'updated by trigger'
28471 WHERE f_int1 = - old.f_int1;
28473 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28474 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28476 # check trigger-4 success: 1
28477 DROP TRIGGER trg_1;
28478 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28479 f_int2 = CAST(f_char1 AS SIGNED INT),
28480 f_charbig = 'just inserted'
28481 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28483 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28484 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28485 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28486 'just inserted' FROM t0_template
28487 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28488 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28490 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28491 f_charbig = 'updated by trigger'
28492 WHERE f_int1 = new.f_int1;
28494 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28495 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28497 # check trigger-5 success: 1
28498 DROP TRIGGER trg_1;
28499 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28500 f_int2 = CAST(f_char1 AS SIGNED INT),
28501 f_charbig = 'just inserted'
28502 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28504 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28505 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28506 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28507 'just inserted' FROM t0_template
28508 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28509 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28511 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28512 f_charbig = 'updated by trigger'
28513 WHERE f_int1 = - old.f_int1;
28515 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28516 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28518 # check trigger-6 success: 1
28519 DROP TRIGGER trg_1;
28520 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28521 f_int2 = CAST(f_char1 AS SIGNED INT),
28522 f_charbig = 'just inserted'
28523 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28525 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28526 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28527 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28528 'just inserted' FROM t0_template
28529 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28530 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28532 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28533 f_charbig = 'updated by trigger'
28534 WHERE f_int1 = - old.f_int1;
28537 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28539 # check trigger-7 success: 1
28540 DROP TRIGGER trg_1;
28541 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28542 f_int2 = CAST(f_char1 AS SIGNED INT),
28543 f_charbig = 'just inserted'
28544 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28546 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28547 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28548 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28549 'just inserted' FROM t0_template
28550 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28551 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28553 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28554 f_charbig = 'updated by trigger'
28555 WHERE f_int1 = - old.f_int1;
28558 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28560 # check trigger-8 success: 1
28561 DROP TRIGGER trg_1;
28562 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28563 f_int2 = CAST(f_char1 AS SIGNED INT),
28564 f_charbig = 'just inserted'
28565 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28567 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28569 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28570 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28572 SET new.f_int1 = old.f_int1 + @max_row,
28573 new.f_int2 = old.f_int2 - @max_row,
28574 new.f_charbig = '####updated per update trigger####';
28577 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28578 f_charbig = '####updated per update statement itself####';
28580 # check trigger-9 success: 1
28581 DROP TRIGGER trg_2;
28582 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28583 f_int2 = CAST(f_char1 AS SIGNED INT),
28584 f_charbig = CONCAT('===',f_char1,'===');
28585 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28587 SET new.f_int1 = new.f_int1 + @max_row,
28588 new.f_int2 = new.f_int2 - @max_row,
28589 new.f_charbig = '####updated per update trigger####';
28592 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28593 f_charbig = '####updated per update statement itself####';
28595 # check trigger-10 success: 1
28596 DROP TRIGGER trg_2;
28597 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28598 f_int2 = CAST(f_char1 AS SIGNED INT),
28599 f_charbig = CONCAT('===',f_char1,'===');
28600 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28602 SET new.f_int1 = @my_max1 + @counter,
28603 new.f_int2 = @my_min2 - @counter,
28604 new.f_charbig = '####updated per insert trigger####';
28605 SET @counter = @counter + 1;
28608 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28609 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28610 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28611 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28612 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28614 DROP TRIGGER trg_3;
28616 # check trigger-11 success: 1
28618 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28619 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28620 AND f_charbig = '####updated per insert trigger####';
28621 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28623 SET new.f_int1 = @my_max1 + @counter,
28624 new.f_int2 = @my_min2 - @counter,
28625 new.f_charbig = '####updated per insert trigger####';
28626 SET @counter = @counter + 1;
28629 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28630 INSERT INTO t1 (f_char1, f_char2, f_charbig)
28631 SELECT CAST(f_int1 AS CHAR),
28632 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28633 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28635 DROP TRIGGER trg_3;
28637 # check trigger-12 success: 1
28639 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28640 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28641 AND f_charbig = '####updated per insert trigger####';
28643 Table Op Msg_type Msg_text
28644 test.t1 analyze status OK
28645 CHECK TABLE t1 EXTENDED;
28646 Table Op Msg_type Msg_text
28647 test.t1 check status OK
28648 CHECKSUM TABLE t1 EXTENDED;
28650 test.t1 <some_value>
28652 Table Op Msg_type Msg_text
28653 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
28654 test.t1 optimize status OK
28655 # check layout success: 1
28656 REPAIR TABLE t1 EXTENDED;
28657 Table Op Msg_type Msg_text
28658 test.t1 repair note The storage engine for the table doesn't support repair
28659 # check layout success: 1
28662 # check TRUNCATE success: 1
28663 # check layout success: 1
28664 # End usability test (inc/partition_check.inc)
28671 f_charbig VARCHAR(1000)
28672 , PRIMARY KEY (f_int1,f_int2)
28674 PARTITION BY LIST(MOD(f_int1,4))
28675 (PARTITION part_3 VALUES IN (-3),
28676 PARTITION part_2 VALUES IN (-2),
28677 PARTITION part_1 VALUES IN (-1),
28678 PARTITION part_N VALUES IN (NULL),
28679 PARTITION part0 VALUES IN (0),
28680 PARTITION part1 VALUES IN (1),
28681 PARTITION part2 VALUES IN (2),
28682 PARTITION part3 VALUES IN (3));
28683 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28684 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28685 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
28686 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
28687 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28688 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28689 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
28690 # Start usability test (inc/partition_check.inc)
28692 SHOW CREATE TABLE t1;
28694 t1 CREATE TABLE `t1` (
28695 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
28696 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
28697 `f_char1` char(20) DEFAULT NULL,
28698 `f_char2` char(20) DEFAULT NULL,
28699 `f_charbig` varchar(1000) DEFAULT NULL,
28700 PRIMARY KEY (`f_int1`,`f_int2`)
28701 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
28702 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
28703 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
28704 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
28705 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
28706 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
28707 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
28708 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
28709 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
28710 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
28712 # check prerequisites-1 success: 1
28713 # check COUNT(*) success: 1
28714 # check MIN/MAX(f_int1) success: 1
28715 # check MIN/MAX(f_int2) success: 1
28716 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28717 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28718 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28719 WHERE f_int1 IN (2,3);
28720 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
28721 # check prerequisites-3 success: 1
28722 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
28723 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28724 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
28725 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
28726 WHERE f_int1 IN (2,3);
28727 DELETE FROM t1 WHERE f_charbig = 'delete me';
28728 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28729 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
28730 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
28731 WHERE f_int1 IN (2,3);
28732 DELETE FROM t1 WHERE f_charbig = 'delete me';
28733 # check read via f_int1 success: 1
28734 # check read via f_int2 success: 1
28736 # check multiple-1 success: 1
28737 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28739 # check multiple-2 success: 1
28740 INSERT INTO t1 SELECT * FROM t0_template
28741 WHERE MOD(f_int1,3) = 0;
28743 # check multiple-3 success: 1
28744 UPDATE t1 SET f_int1 = f_int1 + @max_row
28745 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28746 AND @max_row_div2 + @max_row_div4;
28748 # check multiple-4 success: 1
28750 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28751 AND @max_row_div2 + @max_row_div4 + @max_row;
28753 # check multiple-5 success: 1
28754 SELECT COUNT(*) INTO @try_count FROM t0_template
28755 WHERE MOD(f_int1,3) = 0
28756 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28757 SELECT COUNT(*) INTO @clash_count
28758 FROM t1 INNER JOIN t0_template USING(f_int1)
28759 WHERE MOD(f_int1,3) = 0
28760 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28761 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28763 SET f_int1 = @cur_value , f_int2 = @cur_value,
28764 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28765 f_charbig = '#SINGLE#';
28767 # check single-1 success: 1
28768 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28770 SET f_int1 = @cur_value , f_int2 = @cur_value,
28771 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28772 f_charbig = '#SINGLE#';
28774 # check single-2 success: 1
28775 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28776 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28777 UPDATE t1 SET f_int1 = @cur_value2
28778 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28780 # check single-3 success: 1
28781 SET @cur_value1= -1;
28782 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28783 UPDATE t1 SET f_int1 = @cur_value1
28784 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28786 # check single-4 success: 1
28787 SELECT MAX(f_int1) INTO @cur_value FROM t1;
28788 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28790 # check single-5 success: 1
28791 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28793 # check single-6 success: 1
28794 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28796 Warning 1264 Out of range value for column 'f_int1' at row 1
28797 Warning 1264 Out of range value for column 'f_int2' at row 1
28799 # check single-7 success: 1
28800 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
28801 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28802 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28803 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28804 f_charbig = '#NULL#';
28806 SET f_int1 = NULL , f_int2 = -@max_row,
28807 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28808 f_charbig = '#NULL#';
28809 ERROR 23000: Column 'f_int1' cannot be null
28810 # check null success: 1
28812 WHERE f_int1 = 0 AND f_int2 = 0
28813 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28814 AND f_charbig = '#NULL#';
28815 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28816 SELECT f_int1, f_int1, '', '', 'was inserted'
28817 FROM t0_template source_tab
28818 WHERE MOD(f_int1,3) = 0
28819 AND f_int1 BETWEEN @max_row_div2 AND @max_row
28821 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
28822 f_int2 = 2 * @max_row + source_tab.f_int1,
28823 f_charbig = 'was updated';
28825 # check unique-1-a success: 1
28827 # check unique-1-b success: 1
28828 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28829 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28830 f_int2 = CAST(f_char1 AS SIGNED INT),
28831 f_charbig = CONCAT('===',f_char1,'===')
28832 WHERE f_charbig = 'was updated';
28833 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28834 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
28835 FROM t0_template source_tab
28836 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28838 # check replace success: 1
28840 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
28842 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
28843 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
28844 UPDATE t1 SET f_int2 = f_int1,
28845 f_char1 = CAST(f_int1 AS CHAR),
28846 f_char2 = CAST(f_int1 AS CHAR),
28847 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
28848 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
28850 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28851 SELECT f_int1, f_int1, '', '', 'was inserted'
28852 FROM t0_template source_tab
28853 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28855 # check transactions-1 success: 1
28858 # check transactions-2 success: 1
28861 # check transactions-3 success: 1
28862 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28866 # check transactions-4 success: 1
28867 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28868 SELECT f_int1, f_int1, '', '', 'was inserted'
28869 FROM t0_template source_tab
28870 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28872 # check transactions-5 success: 1
28875 # check transactions-6 success: 1
28876 # INFO: Storage engine used for t1 seems to be transactional.
28879 # check transactions-7 success: 1
28880 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28882 SET @@session.sql_mode = 'traditional';
28883 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28884 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28885 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28886 '', '', 'was inserted' FROM t0_template
28887 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28888 ERROR 22012: Division by 0
28891 # check transactions-8 success: 1
28892 # INFO: Storage engine used for t1 seems to be able to revert
28893 # changes made by the failing statement.
28894 SET @@session.sql_mode = '';
28896 DELETE FROM t1 WHERE f_charbig = 'was inserted';
28898 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28900 # check special-1 success: 1
28901 UPDATE t1 SET f_charbig = '';
28903 # check special-2 success: 1
28904 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28905 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28906 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28907 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28908 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28909 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28910 'just inserted' FROM t0_template
28911 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28912 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28914 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28915 f_charbig = 'updated by trigger'
28916 WHERE f_int1 = new.f_int1;
28918 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28919 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28920 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28922 # check trigger-1 success: 1
28923 DROP TRIGGER trg_1;
28924 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28925 f_int2 = CAST(f_char1 AS SIGNED INT),
28926 f_charbig = 'just inserted'
28927 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28929 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28930 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28931 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28932 'just inserted' FROM t0_template
28933 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28934 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28936 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28937 f_charbig = 'updated by trigger'
28938 WHERE f_int1 = new.f_int1;
28940 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28941 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28942 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28944 # check trigger-2 success: 1
28945 DROP TRIGGER trg_1;
28946 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28947 f_int2 = CAST(f_char1 AS SIGNED INT),
28948 f_charbig = 'just inserted'
28949 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28951 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28952 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28953 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28954 'just inserted' FROM t0_template
28955 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28956 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28958 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28959 f_charbig = 'updated by trigger'
28960 WHERE f_int1 = new.f_int1;
28962 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28963 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28965 # check trigger-3 success: 1
28966 DROP TRIGGER trg_1;
28967 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28968 f_int2 = CAST(f_char1 AS SIGNED INT),
28969 f_charbig = 'just inserted'
28970 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28972 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28973 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28974 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28975 'just inserted' FROM t0_template
28976 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28977 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28979 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28980 f_charbig = 'updated by trigger'
28981 WHERE f_int1 = - old.f_int1;
28983 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28984 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28986 # check trigger-4 success: 1
28987 DROP TRIGGER trg_1;
28988 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28989 f_int2 = CAST(f_char1 AS SIGNED INT),
28990 f_charbig = 'just inserted'
28991 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28993 WHERE ABS(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 AFTER UPDATE ON t0_aux FOR EACH ROW
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;
29004 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29005 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29007 # check trigger-5 success: 1
29008 DROP TRIGGER trg_1;
29009 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29010 f_int2 = CAST(f_char1 AS SIGNED INT),
29011 f_charbig = 'just inserted'
29012 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29014 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29015 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29016 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29017 'just inserted' FROM t0_template
29018 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29019 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29021 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29022 f_charbig = 'updated by trigger'
29023 WHERE f_int1 = - old.f_int1;
29025 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29026 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29028 # check trigger-6 success: 1
29029 DROP TRIGGER trg_1;
29030 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29031 f_int2 = CAST(f_char1 AS SIGNED INT),
29032 f_charbig = 'just inserted'
29033 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29035 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29036 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29037 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29038 'just inserted' FROM t0_template
29039 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29040 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29042 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29043 f_charbig = 'updated by trigger'
29044 WHERE f_int1 = - old.f_int1;
29047 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29049 # check trigger-7 success: 1
29050 DROP TRIGGER trg_1;
29051 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29052 f_int2 = CAST(f_char1 AS SIGNED INT),
29053 f_charbig = 'just inserted'
29054 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29056 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29057 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29058 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29059 'just inserted' FROM t0_template
29060 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29061 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29063 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29064 f_charbig = 'updated by trigger'
29065 WHERE f_int1 = - old.f_int1;
29068 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29070 # check trigger-8 success: 1
29071 DROP TRIGGER trg_1;
29072 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29073 f_int2 = CAST(f_char1 AS SIGNED INT),
29074 f_charbig = 'just inserted'
29075 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29077 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29079 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29080 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29082 SET new.f_int1 = old.f_int1 + @max_row,
29083 new.f_int2 = old.f_int2 - @max_row,
29084 new.f_charbig = '####updated per update trigger####';
29087 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29088 f_charbig = '####updated per update statement itself####';
29090 # check trigger-9 success: 1
29091 DROP TRIGGER trg_2;
29092 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29093 f_int2 = CAST(f_char1 AS SIGNED INT),
29094 f_charbig = CONCAT('===',f_char1,'===');
29095 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29097 SET new.f_int1 = new.f_int1 + @max_row,
29098 new.f_int2 = new.f_int2 - @max_row,
29099 new.f_charbig = '####updated per update trigger####';
29102 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29103 f_charbig = '####updated per update statement itself####';
29105 # check trigger-10 success: 1
29106 DROP TRIGGER trg_2;
29107 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29108 f_int2 = CAST(f_char1 AS SIGNED INT),
29109 f_charbig = CONCAT('===',f_char1,'===');
29110 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29112 SET new.f_int1 = @my_max1 + @counter,
29113 new.f_int2 = @my_min2 - @counter,
29114 new.f_charbig = '####updated per insert trigger####';
29115 SET @counter = @counter + 1;
29118 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29119 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29120 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29121 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29122 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29124 DROP TRIGGER trg_3;
29126 # check trigger-11 success: 1
29128 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29129 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29130 AND f_charbig = '####updated per insert trigger####';
29131 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29133 SET new.f_int1 = @my_max1 + @counter,
29134 new.f_int2 = @my_min2 - @counter,
29135 new.f_charbig = '####updated per insert trigger####';
29136 SET @counter = @counter + 1;
29139 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29140 INSERT INTO t1 (f_char1, f_char2, f_charbig)
29141 SELECT CAST(f_int1 AS CHAR),
29142 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29143 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29145 DROP TRIGGER trg_3;
29147 # check trigger-12 success: 1
29149 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29150 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29151 AND f_charbig = '####updated per insert trigger####';
29153 Table Op Msg_type Msg_text
29154 test.t1 analyze status OK
29155 CHECK TABLE t1 EXTENDED;
29156 Table Op Msg_type Msg_text
29157 test.t1 check status OK
29158 CHECKSUM TABLE t1 EXTENDED;
29160 test.t1 <some_value>
29162 Table Op Msg_type Msg_text
29163 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
29164 test.t1 optimize status OK
29165 # check layout success: 1
29166 REPAIR TABLE t1 EXTENDED;
29167 Table Op Msg_type Msg_text
29168 test.t1 repair note The storage engine for the table doesn't support repair
29169 # check layout success: 1
29172 # check TRUNCATE success: 1
29173 # check layout success: 1
29174 # End usability test (inc/partition_check.inc)
29181 f_charbig VARCHAR(1000)
29182 , PRIMARY KEY (f_int1,f_int2)
29184 PARTITION BY RANGE(f_int1)
29185 (PARTITION parta VALUES LESS THAN (0),
29186 PARTITION partb VALUES LESS THAN (5),
29187 PARTITION partc VALUES LESS THAN (10),
29188 PARTITION partd VALUES LESS THAN (10 + 5),
29189 PARTITION parte VALUES LESS THAN (20),
29190 PARTITION partf VALUES LESS THAN (2147483646));
29191 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29192 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29193 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
29194 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
29195 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29196 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29197 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
29198 # Start usability test (inc/partition_check.inc)
29200 SHOW CREATE TABLE t1;
29202 t1 CREATE TABLE `t1` (
29203 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
29204 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
29205 `f_char1` char(20) DEFAULT NULL,
29206 `f_char2` char(20) DEFAULT NULL,
29207 `f_charbig` varchar(1000) DEFAULT NULL,
29208 PRIMARY KEY (`f_int1`,`f_int2`)
29209 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
29210 /*!50100 PARTITION BY RANGE (f_int1)
29211 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
29212 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
29213 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
29214 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
29215 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
29216 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
29218 # check prerequisites-1 success: 1
29219 # check COUNT(*) success: 1
29220 # check MIN/MAX(f_int1) success: 1
29221 # check MIN/MAX(f_int2) success: 1
29222 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29223 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29224 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29225 WHERE f_int1 IN (2,3);
29226 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
29227 # check prerequisites-3 success: 1
29228 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
29229 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29230 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
29231 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
29232 WHERE f_int1 IN (2,3);
29233 DELETE FROM t1 WHERE f_charbig = 'delete me';
29234 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29235 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
29236 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
29237 WHERE f_int1 IN (2,3);
29238 DELETE FROM t1 WHERE f_charbig = 'delete me';
29239 # check read via f_int1 success: 1
29240 # check read via f_int2 success: 1
29242 # check multiple-1 success: 1
29243 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29245 # check multiple-2 success: 1
29246 INSERT INTO t1 SELECT * FROM t0_template
29247 WHERE MOD(f_int1,3) = 0;
29249 # check multiple-3 success: 1
29250 UPDATE t1 SET f_int1 = f_int1 + @max_row
29251 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29252 AND @max_row_div2 + @max_row_div4;
29254 # check multiple-4 success: 1
29256 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29257 AND @max_row_div2 + @max_row_div4 + @max_row;
29259 # check multiple-5 success: 1
29260 SELECT COUNT(*) INTO @try_count FROM t0_template
29261 WHERE MOD(f_int1,3) = 0
29262 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29263 SELECT COUNT(*) INTO @clash_count
29264 FROM t1 INNER JOIN t0_template USING(f_int1)
29265 WHERE MOD(f_int1,3) = 0
29266 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29267 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29269 SET f_int1 = @cur_value , f_int2 = @cur_value,
29270 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29271 f_charbig = '#SINGLE#';
29273 # check single-1 success: 1
29274 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29276 SET f_int1 = @cur_value , f_int2 = @cur_value,
29277 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29278 f_charbig = '#SINGLE#';
29280 # check single-2 success: 1
29281 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29282 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29283 UPDATE t1 SET f_int1 = @cur_value2
29284 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29286 # check single-3 success: 1
29287 SET @cur_value1= -1;
29288 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29289 UPDATE t1 SET f_int1 = @cur_value1
29290 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29292 # check single-4 success: 1
29293 SELECT MAX(f_int1) INTO @cur_value FROM t1;
29294 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29296 # check single-5 success: 1
29297 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29299 # check single-6 success: 1
29300 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29302 Warning 1264 Out of range value for column 'f_int1' at row 1
29303 Warning 1264 Out of range value for column 'f_int2' at row 1
29305 # check single-7 success: 1
29306 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
29307 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29308 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29309 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29310 f_charbig = '#NULL#';
29312 SET f_int1 = NULL , f_int2 = -@max_row,
29313 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29314 f_charbig = '#NULL#';
29315 ERROR 23000: Column 'f_int1' cannot be null
29316 # check null success: 1
29318 WHERE f_int1 = 0 AND f_int2 = 0
29319 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29320 AND f_charbig = '#NULL#';
29321 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29322 SELECT f_int1, f_int1, '', '', 'was inserted'
29323 FROM t0_template source_tab
29324 WHERE MOD(f_int1,3) = 0
29325 AND f_int1 BETWEEN @max_row_div2 AND @max_row
29327 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
29328 f_int2 = 2 * @max_row + source_tab.f_int1,
29329 f_charbig = 'was updated';
29331 # check unique-1-a success: 1
29333 # check unique-1-b success: 1
29334 DELETE FROM t1 WHERE f_charbig = 'was inserted';
29335 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29336 f_int2 = CAST(f_char1 AS SIGNED INT),
29337 f_charbig = CONCAT('===',f_char1,'===')
29338 WHERE f_charbig = 'was updated';
29339 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29340 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
29341 FROM t0_template source_tab
29342 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29344 # check replace success: 1
29346 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
29348 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
29349 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
29350 UPDATE t1 SET f_int2 = f_int1,
29351 f_char1 = CAST(f_int1 AS CHAR),
29352 f_char2 = CAST(f_int1 AS CHAR),
29353 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
29354 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
29356 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29357 SELECT f_int1, f_int1, '', '', 'was inserted'
29358 FROM t0_template source_tab
29359 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29361 # check transactions-1 success: 1
29364 # check transactions-2 success: 1
29367 # check transactions-3 success: 1
29368 DELETE FROM t1 WHERE f_charbig = 'was inserted';
29372 # check transactions-4 success: 1
29373 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29374 SELECT f_int1, f_int1, '', '', 'was inserted'
29375 FROM t0_template source_tab
29376 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29378 # check transactions-5 success: 1
29381 # check transactions-6 success: 1
29382 # INFO: Storage engine used for t1 seems to be transactional.
29385 # check transactions-7 success: 1
29386 DELETE FROM t1 WHERE f_charbig = 'was inserted';
29388 SET @@session.sql_mode = 'traditional';
29389 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29390 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29391 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29392 '', '', 'was inserted' FROM t0_template
29393 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29394 ERROR 22012: Division by 0
29397 # check transactions-8 success: 1
29398 # INFO: Storage engine used for t1 seems to be able to revert
29399 # changes made by the failing statement.
29400 SET @@session.sql_mode = '';
29402 DELETE FROM t1 WHERE f_charbig = 'was inserted';
29404 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29406 # check special-1 success: 1
29407 UPDATE t1 SET f_charbig = '';
29409 # check special-2 success: 1
29410 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29411 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29412 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29413 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29414 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29415 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29416 'just inserted' FROM t0_template
29417 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29418 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29420 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29421 f_charbig = 'updated by trigger'
29422 WHERE f_int1 = new.f_int1;
29424 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29425 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29426 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29428 # check trigger-1 success: 1
29429 DROP TRIGGER trg_1;
29430 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29431 f_int2 = CAST(f_char1 AS SIGNED INT),
29432 f_charbig = 'just inserted'
29433 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29435 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29436 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29437 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29438 'just inserted' FROM t0_template
29439 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29440 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29442 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29443 f_charbig = 'updated by trigger'
29444 WHERE f_int1 = new.f_int1;
29446 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29447 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29448 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29450 # check trigger-2 success: 1
29451 DROP TRIGGER trg_1;
29452 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29453 f_int2 = CAST(f_char1 AS SIGNED INT),
29454 f_charbig = 'just inserted'
29455 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29457 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29458 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29459 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29460 'just inserted' FROM t0_template
29461 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29462 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29464 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29465 f_charbig = 'updated by trigger'
29466 WHERE f_int1 = new.f_int1;
29468 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29469 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29471 # check trigger-3 success: 1
29472 DROP TRIGGER trg_1;
29473 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29474 f_int2 = CAST(f_char1 AS SIGNED INT),
29475 f_charbig = 'just inserted'
29476 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29478 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29479 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29480 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29481 'just inserted' FROM t0_template
29482 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29483 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29485 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29486 f_charbig = 'updated by trigger'
29487 WHERE f_int1 = - old.f_int1;
29489 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29490 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29492 # check trigger-4 success: 1
29493 DROP TRIGGER trg_1;
29494 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29495 f_int2 = CAST(f_char1 AS SIGNED INT),
29496 f_charbig = 'just inserted'
29497 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29499 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29500 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29501 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29502 'just inserted' FROM t0_template
29503 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29504 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29506 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29507 f_charbig = 'updated by trigger'
29508 WHERE f_int1 = new.f_int1;
29510 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29511 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29513 # check trigger-5 success: 1
29514 DROP TRIGGER trg_1;
29515 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29516 f_int2 = CAST(f_char1 AS SIGNED INT),
29517 f_charbig = 'just inserted'
29518 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29520 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29521 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29522 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29523 'just inserted' FROM t0_template
29524 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29525 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29527 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29528 f_charbig = 'updated by trigger'
29529 WHERE f_int1 = - old.f_int1;
29531 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29532 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29534 # check trigger-6 success: 1
29535 DROP TRIGGER trg_1;
29536 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29537 f_int2 = CAST(f_char1 AS SIGNED INT),
29538 f_charbig = 'just inserted'
29539 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29541 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29542 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29543 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29544 'just inserted' FROM t0_template
29545 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29546 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29548 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29549 f_charbig = 'updated by trigger'
29550 WHERE f_int1 = - old.f_int1;
29553 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29555 # check trigger-7 success: 1
29556 DROP TRIGGER trg_1;
29557 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29558 f_int2 = CAST(f_char1 AS SIGNED INT),
29559 f_charbig = 'just inserted'
29560 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29562 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29563 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29564 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29565 'just inserted' FROM t0_template
29566 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29567 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29569 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29570 f_charbig = 'updated by trigger'
29571 WHERE f_int1 = - old.f_int1;
29574 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29576 # check trigger-8 success: 1
29577 DROP TRIGGER trg_1;
29578 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29579 f_int2 = CAST(f_char1 AS SIGNED INT),
29580 f_charbig = 'just inserted'
29581 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29583 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29585 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29586 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29588 SET new.f_int1 = old.f_int1 + @max_row,
29589 new.f_int2 = old.f_int2 - @max_row,
29590 new.f_charbig = '####updated per update trigger####';
29593 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29594 f_charbig = '####updated per update statement itself####';
29596 # check trigger-9 success: 1
29597 DROP TRIGGER trg_2;
29598 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29599 f_int2 = CAST(f_char1 AS SIGNED INT),
29600 f_charbig = CONCAT('===',f_char1,'===');
29601 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29603 SET new.f_int1 = new.f_int1 + @max_row,
29604 new.f_int2 = new.f_int2 - @max_row,
29605 new.f_charbig = '####updated per update trigger####';
29608 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29609 f_charbig = '####updated per update statement itself####';
29611 # check trigger-10 success: 1
29612 DROP TRIGGER trg_2;
29613 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29614 f_int2 = CAST(f_char1 AS SIGNED INT),
29615 f_charbig = CONCAT('===',f_char1,'===');
29616 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29618 SET new.f_int1 = @my_max1 + @counter,
29619 new.f_int2 = @my_min2 - @counter,
29620 new.f_charbig = '####updated per insert trigger####';
29621 SET @counter = @counter + 1;
29624 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29625 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29626 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29627 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29628 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29630 DROP TRIGGER trg_3;
29632 # check trigger-11 success: 1
29634 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29635 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29636 AND f_charbig = '####updated per insert trigger####';
29637 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29639 SET new.f_int1 = @my_max1 + @counter,
29640 new.f_int2 = @my_min2 - @counter,
29641 new.f_charbig = '####updated per insert trigger####';
29642 SET @counter = @counter + 1;
29645 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29646 INSERT INTO t1 (f_char1, f_char2, f_charbig)
29647 SELECT CAST(f_int1 AS CHAR),
29648 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29649 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29651 DROP TRIGGER trg_3;
29653 # check trigger-12 success: 1
29655 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29656 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29657 AND f_charbig = '####updated per insert trigger####';
29659 Table Op Msg_type Msg_text
29660 test.t1 analyze status OK
29661 CHECK TABLE t1 EXTENDED;
29662 Table Op Msg_type Msg_text
29663 test.t1 check status OK
29664 CHECKSUM TABLE t1 EXTENDED;
29666 test.t1 <some_value>
29668 Table Op Msg_type Msg_text
29669 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
29670 test.t1 optimize status OK
29671 # check layout success: 1
29672 REPAIR TABLE t1 EXTENDED;
29673 Table Op Msg_type Msg_text
29674 test.t1 repair note The storage engine for the table doesn't support repair
29675 # check layout success: 1
29678 # check TRUNCATE success: 1
29679 # check layout success: 1
29680 # End usability test (inc/partition_check.inc)
29687 f_charbig VARCHAR(1000)
29688 , PRIMARY KEY (f_int1,f_int2)
29690 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
29691 (PARTITION parta VALUES LESS THAN (0),
29692 PARTITION partb VALUES LESS THAN (5),
29693 PARTITION partc VALUES LESS THAN (10),
29694 PARTITION partd VALUES LESS THAN (2147483646));
29695 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29696 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29697 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
29698 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
29699 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29700 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29701 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
29702 # Start usability test (inc/partition_check.inc)
29704 SHOW CREATE TABLE t1;
29706 t1 CREATE TABLE `t1` (
29707 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
29708 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
29709 `f_char1` char(20) DEFAULT NULL,
29710 `f_char2` char(20) DEFAULT NULL,
29711 `f_charbig` varchar(1000) DEFAULT NULL,
29712 PRIMARY KEY (`f_int1`,`f_int2`)
29713 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
29714 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
29715 SUBPARTITION BY HASH (f_int1)
29717 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
29718 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
29719 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
29720 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
29722 # check prerequisites-1 success: 1
29723 # check COUNT(*) success: 1
29724 # check MIN/MAX(f_int1) success: 1
29725 # check MIN/MAX(f_int2) success: 1
29726 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29727 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29728 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29729 WHERE f_int1 IN (2,3);
29730 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
29731 # check prerequisites-3 success: 1
29732 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
29733 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29734 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
29735 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
29736 WHERE f_int1 IN (2,3);
29737 DELETE FROM t1 WHERE f_charbig = 'delete me';
29738 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29739 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
29740 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
29741 WHERE f_int1 IN (2,3);
29742 DELETE FROM t1 WHERE f_charbig = 'delete me';
29743 # check read via f_int1 success: 1
29744 # check read via f_int2 success: 1
29746 # check multiple-1 success: 1
29747 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29749 # check multiple-2 success: 1
29750 INSERT INTO t1 SELECT * FROM t0_template
29751 WHERE MOD(f_int1,3) = 0;
29753 # check multiple-3 success: 1
29754 UPDATE t1 SET f_int1 = f_int1 + @max_row
29755 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29756 AND @max_row_div2 + @max_row_div4;
29758 # check multiple-4 success: 1
29760 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29761 AND @max_row_div2 + @max_row_div4 + @max_row;
29763 # check multiple-5 success: 1
29764 SELECT COUNT(*) INTO @try_count FROM t0_template
29765 WHERE MOD(f_int1,3) = 0
29766 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29767 SELECT COUNT(*) INTO @clash_count
29768 FROM t1 INNER JOIN t0_template USING(f_int1)
29769 WHERE MOD(f_int1,3) = 0
29770 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29771 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29773 SET f_int1 = @cur_value , f_int2 = @cur_value,
29774 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29775 f_charbig = '#SINGLE#';
29777 # check single-1 success: 1
29778 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29780 SET f_int1 = @cur_value , f_int2 = @cur_value,
29781 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29782 f_charbig = '#SINGLE#';
29784 # check single-2 success: 1
29785 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29786 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29787 UPDATE t1 SET f_int1 = @cur_value2
29788 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29790 # check single-3 success: 1
29791 SET @cur_value1= -1;
29792 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29793 UPDATE t1 SET f_int1 = @cur_value1
29794 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29796 # check single-4 success: 1
29797 SELECT MAX(f_int1) INTO @cur_value FROM t1;
29798 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29800 # check single-5 success: 1
29801 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29803 # check single-6 success: 1
29804 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29806 Warning 1264 Out of range value for column 'f_int1' at row 1
29807 Warning 1264 Out of range value for column 'f_int2' at row 1
29809 # check single-7 success: 1
29810 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
29811 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29812 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29813 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29814 f_charbig = '#NULL#';
29816 SET f_int1 = NULL , f_int2 = -@max_row,
29817 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29818 f_charbig = '#NULL#';
29819 ERROR 23000: Column 'f_int1' cannot be null
29820 # check null success: 1
29822 WHERE f_int1 = 0 AND f_int2 = 0
29823 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29824 AND f_charbig = '#NULL#';
29825 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29826 SELECT f_int1, f_int1, '', '', 'was inserted'
29827 FROM t0_template source_tab
29828 WHERE MOD(f_int1,3) = 0
29829 AND f_int1 BETWEEN @max_row_div2 AND @max_row
29831 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
29832 f_int2 = 2 * @max_row + source_tab.f_int1,
29833 f_charbig = 'was updated';
29835 # check unique-1-a success: 1
29837 # check unique-1-b success: 1
29838 DELETE FROM t1 WHERE f_charbig = 'was inserted';
29839 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29840 f_int2 = CAST(f_char1 AS SIGNED INT),
29841 f_charbig = CONCAT('===',f_char1,'===')
29842 WHERE f_charbig = 'was updated';
29843 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29844 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
29845 FROM t0_template source_tab
29846 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29848 # check replace success: 1
29850 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
29852 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
29853 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
29854 UPDATE t1 SET f_int2 = f_int1,
29855 f_char1 = CAST(f_int1 AS CHAR),
29856 f_char2 = CAST(f_int1 AS CHAR),
29857 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
29858 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
29860 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29861 SELECT f_int1, f_int1, '', '', 'was inserted'
29862 FROM t0_template source_tab
29863 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29865 # check transactions-1 success: 1
29868 # check transactions-2 success: 1
29871 # check transactions-3 success: 1
29872 DELETE FROM t1 WHERE f_charbig = 'was inserted';
29876 # check transactions-4 success: 1
29877 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29878 SELECT f_int1, f_int1, '', '', 'was inserted'
29879 FROM t0_template source_tab
29880 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29882 # check transactions-5 success: 1
29885 # check transactions-6 success: 1
29886 # INFO: Storage engine used for t1 seems to be transactional.
29889 # check transactions-7 success: 1
29890 DELETE FROM t1 WHERE f_charbig = 'was inserted';
29892 SET @@session.sql_mode = 'traditional';
29893 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29894 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29895 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29896 '', '', 'was inserted' FROM t0_template
29897 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29898 ERROR 22012: Division by 0
29901 # check transactions-8 success: 1
29902 # INFO: Storage engine used for t1 seems to be able to revert
29903 # changes made by the failing statement.
29904 SET @@session.sql_mode = '';
29906 DELETE FROM t1 WHERE f_charbig = 'was inserted';
29908 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29910 # check special-1 success: 1
29911 UPDATE t1 SET f_charbig = '';
29913 # check special-2 success: 1
29914 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29915 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29916 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29917 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29918 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29919 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29920 'just inserted' FROM t0_template
29921 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29922 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29924 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29925 f_charbig = 'updated by trigger'
29926 WHERE f_int1 = new.f_int1;
29928 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29929 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29930 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29932 # check trigger-1 success: 1
29933 DROP TRIGGER trg_1;
29934 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29935 f_int2 = CAST(f_char1 AS SIGNED INT),
29936 f_charbig = 'just inserted'
29937 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29939 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29940 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29941 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29942 'just inserted' FROM t0_template
29943 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29944 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29946 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29947 f_charbig = 'updated by trigger'
29948 WHERE f_int1 = new.f_int1;
29950 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29951 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29952 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29954 # check trigger-2 success: 1
29955 DROP TRIGGER trg_1;
29956 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29957 f_int2 = CAST(f_char1 AS SIGNED INT),
29958 f_charbig = 'just inserted'
29959 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29961 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29962 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29963 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29964 'just inserted' FROM t0_template
29965 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29966 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29968 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29969 f_charbig = 'updated by trigger'
29970 WHERE f_int1 = new.f_int1;
29972 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29973 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29975 # check trigger-3 success: 1
29976 DROP TRIGGER trg_1;
29977 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29978 f_int2 = CAST(f_char1 AS SIGNED INT),
29979 f_charbig = 'just inserted'
29980 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29982 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29983 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29984 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29985 'just inserted' FROM t0_template
29986 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29987 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29989 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29990 f_charbig = 'updated by trigger'
29991 WHERE f_int1 = - old.f_int1;
29993 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29994 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29996 # check trigger-4 success: 1
29997 DROP TRIGGER trg_1;
29998 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29999 f_int2 = CAST(f_char1 AS SIGNED INT),
30000 f_charbig = 'just inserted'
30001 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30003 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30004 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30005 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30006 'just inserted' FROM t0_template
30007 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30008 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30010 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30011 f_charbig = 'updated by trigger'
30012 WHERE f_int1 = new.f_int1;
30014 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30015 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30017 # check trigger-5 success: 1
30018 DROP TRIGGER trg_1;
30019 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30020 f_int2 = CAST(f_char1 AS SIGNED INT),
30021 f_charbig = 'just inserted'
30022 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30024 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30025 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30026 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30027 'just inserted' FROM t0_template
30028 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30029 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30031 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30032 f_charbig = 'updated by trigger'
30033 WHERE f_int1 = - old.f_int1;
30035 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30036 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30038 # check trigger-6 success: 1
30039 DROP TRIGGER trg_1;
30040 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30041 f_int2 = CAST(f_char1 AS SIGNED INT),
30042 f_charbig = 'just inserted'
30043 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30045 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30046 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30047 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30048 'just inserted' FROM t0_template
30049 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30050 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30052 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30053 f_charbig = 'updated by trigger'
30054 WHERE f_int1 = - old.f_int1;
30057 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30059 # check trigger-7 success: 1
30060 DROP TRIGGER trg_1;
30061 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30062 f_int2 = CAST(f_char1 AS SIGNED INT),
30063 f_charbig = 'just inserted'
30064 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30066 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30067 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30068 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30069 'just inserted' FROM t0_template
30070 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30071 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30073 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30074 f_charbig = 'updated by trigger'
30075 WHERE f_int1 = - old.f_int1;
30078 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30080 # check trigger-8 success: 1
30081 DROP TRIGGER trg_1;
30082 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30083 f_int2 = CAST(f_char1 AS SIGNED INT),
30084 f_charbig = 'just inserted'
30085 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30087 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30089 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30090 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30092 SET new.f_int1 = old.f_int1 + @max_row,
30093 new.f_int2 = old.f_int2 - @max_row,
30094 new.f_charbig = '####updated per update trigger####';
30097 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30098 f_charbig = '####updated per update statement itself####';
30100 # check trigger-9 success: 1
30101 DROP TRIGGER trg_2;
30102 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30103 f_int2 = CAST(f_char1 AS SIGNED INT),
30104 f_charbig = CONCAT('===',f_char1,'===');
30105 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30107 SET new.f_int1 = new.f_int1 + @max_row,
30108 new.f_int2 = new.f_int2 - @max_row,
30109 new.f_charbig = '####updated per update trigger####';
30112 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30113 f_charbig = '####updated per update statement itself####';
30115 # check trigger-10 success: 1
30116 DROP TRIGGER trg_2;
30117 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30118 f_int2 = CAST(f_char1 AS SIGNED INT),
30119 f_charbig = CONCAT('===',f_char1,'===');
30120 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30122 SET new.f_int1 = @my_max1 + @counter,
30123 new.f_int2 = @my_min2 - @counter,
30124 new.f_charbig = '####updated per insert trigger####';
30125 SET @counter = @counter + 1;
30128 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30129 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30130 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30131 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30132 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30134 DROP TRIGGER trg_3;
30136 # check trigger-11 success: 1
30138 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30139 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30140 AND f_charbig = '####updated per insert trigger####';
30141 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30143 SET new.f_int1 = @my_max1 + @counter,
30144 new.f_int2 = @my_min2 - @counter,
30145 new.f_charbig = '####updated per insert trigger####';
30146 SET @counter = @counter + 1;
30149 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30150 INSERT INTO t1 (f_char1, f_char2, f_charbig)
30151 SELECT CAST(f_int1 AS CHAR),
30152 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30153 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30155 DROP TRIGGER trg_3;
30157 # check trigger-12 success: 1
30159 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30160 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30161 AND f_charbig = '####updated per insert trigger####';
30163 Table Op Msg_type Msg_text
30164 test.t1 analyze status OK
30165 CHECK TABLE t1 EXTENDED;
30166 Table Op Msg_type Msg_text
30167 test.t1 check status OK
30168 CHECKSUM TABLE t1 EXTENDED;
30170 test.t1 <some_value>
30172 Table Op Msg_type Msg_text
30173 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
30174 test.t1 optimize status OK
30175 # check layout success: 1
30176 REPAIR TABLE t1 EXTENDED;
30177 Table Op Msg_type Msg_text
30178 test.t1 repair note The storage engine for the table doesn't support repair
30179 # check layout success: 1
30182 # check TRUNCATE success: 1
30183 # check layout success: 1
30184 # End usability test (inc/partition_check.inc)
30191 f_charbig VARCHAR(1000)
30192 , PRIMARY KEY (f_int1,f_int2)
30194 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
30195 (PARTITION part1 VALUES LESS THAN (0)
30196 (SUBPARTITION subpart11, SUBPARTITION subpart12),
30197 PARTITION part2 VALUES LESS THAN (5)
30198 (SUBPARTITION subpart21, SUBPARTITION subpart22),
30199 PARTITION part3 VALUES LESS THAN (10)
30200 (SUBPARTITION subpart31, SUBPARTITION subpart32),
30201 PARTITION part4 VALUES LESS THAN (2147483646)
30202 (SUBPARTITION subpart41, SUBPARTITION subpart42));
30203 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30204 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30205 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30206 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
30207 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30208 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30209 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30210 # Start usability test (inc/partition_check.inc)
30212 SHOW CREATE TABLE t1;
30214 t1 CREATE TABLE `t1` (
30215 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
30216 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
30217 `f_char1` char(20) DEFAULT NULL,
30218 `f_char2` char(20) DEFAULT NULL,
30219 `f_charbig` varchar(1000) DEFAULT NULL,
30220 PRIMARY KEY (`f_int1`,`f_int2`)
30221 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
30222 /*!50100 PARTITION BY RANGE (f_int1)
30223 SUBPARTITION BY KEY (f_int1)
30224 (PARTITION part1 VALUES LESS THAN (0)
30225 (SUBPARTITION subpart11 ENGINE = InnoDB,
30226 SUBPARTITION subpart12 ENGINE = InnoDB),
30227 PARTITION part2 VALUES LESS THAN (5)
30228 (SUBPARTITION subpart21 ENGINE = InnoDB,
30229 SUBPARTITION subpart22 ENGINE = InnoDB),
30230 PARTITION part3 VALUES LESS THAN (10)
30231 (SUBPARTITION subpart31 ENGINE = InnoDB,
30232 SUBPARTITION subpart32 ENGINE = InnoDB),
30233 PARTITION part4 VALUES LESS THAN (2147483646)
30234 (SUBPARTITION subpart41 ENGINE = InnoDB,
30235 SUBPARTITION subpart42 ENGINE = InnoDB)) */
30237 # check prerequisites-1 success: 1
30238 # check COUNT(*) success: 1
30239 # check MIN/MAX(f_int1) success: 1
30240 # check MIN/MAX(f_int2) success: 1
30241 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30242 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30243 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30244 WHERE f_int1 IN (2,3);
30245 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
30246 # check prerequisites-3 success: 1
30247 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
30248 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30249 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
30250 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
30251 WHERE f_int1 IN (2,3);
30252 DELETE FROM t1 WHERE f_charbig = 'delete me';
30253 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30254 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
30255 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
30256 WHERE f_int1 IN (2,3);
30257 DELETE FROM t1 WHERE f_charbig = 'delete me';
30258 # check read via f_int1 success: 1
30259 # check read via f_int2 success: 1
30261 # check multiple-1 success: 1
30262 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30264 # check multiple-2 success: 1
30265 INSERT INTO t1 SELECT * FROM t0_template
30266 WHERE MOD(f_int1,3) = 0;
30268 # check multiple-3 success: 1
30269 UPDATE t1 SET f_int1 = f_int1 + @max_row
30270 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30271 AND @max_row_div2 + @max_row_div4;
30273 # check multiple-4 success: 1
30275 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30276 AND @max_row_div2 + @max_row_div4 + @max_row;
30278 # check multiple-5 success: 1
30279 SELECT COUNT(*) INTO @try_count FROM t0_template
30280 WHERE MOD(f_int1,3) = 0
30281 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30282 SELECT COUNT(*) INTO @clash_count
30283 FROM t1 INNER JOIN t0_template USING(f_int1)
30284 WHERE MOD(f_int1,3) = 0
30285 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30286 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30288 SET f_int1 = @cur_value , f_int2 = @cur_value,
30289 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30290 f_charbig = '#SINGLE#';
30292 # check single-1 success: 1
30293 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30295 SET f_int1 = @cur_value , f_int2 = @cur_value,
30296 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30297 f_charbig = '#SINGLE#';
30299 # check single-2 success: 1
30300 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30301 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30302 UPDATE t1 SET f_int1 = @cur_value2
30303 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30305 # check single-3 success: 1
30306 SET @cur_value1= -1;
30307 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30308 UPDATE t1 SET f_int1 = @cur_value1
30309 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30311 # check single-4 success: 1
30312 SELECT MAX(f_int1) INTO @cur_value FROM t1;
30313 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30315 # check single-5 success: 1
30316 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30318 # check single-6 success: 1
30319 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30321 Warning 1264 Out of range value for column 'f_int1' at row 1
30322 Warning 1264 Out of range value for column 'f_int2' at row 1
30324 # check single-7 success: 1
30325 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
30326 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30327 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30328 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30329 f_charbig = '#NULL#';
30331 SET f_int1 = NULL , f_int2 = -@max_row,
30332 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30333 f_charbig = '#NULL#';
30334 ERROR 23000: Column 'f_int1' cannot be null
30335 # check null success: 1
30337 WHERE f_int1 = 0 AND f_int2 = 0
30338 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30339 AND f_charbig = '#NULL#';
30340 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30341 SELECT f_int1, f_int1, '', '', 'was inserted'
30342 FROM t0_template source_tab
30343 WHERE MOD(f_int1,3) = 0
30344 AND f_int1 BETWEEN @max_row_div2 AND @max_row
30346 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
30347 f_int2 = 2 * @max_row + source_tab.f_int1,
30348 f_charbig = 'was updated';
30350 # check unique-1-a success: 1
30352 # check unique-1-b success: 1
30353 DELETE FROM t1 WHERE f_charbig = 'was inserted';
30354 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30355 f_int2 = CAST(f_char1 AS SIGNED INT),
30356 f_charbig = CONCAT('===',f_char1,'===')
30357 WHERE f_charbig = 'was updated';
30358 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30359 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
30360 FROM t0_template source_tab
30361 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30363 # check replace success: 1
30365 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
30367 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
30368 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
30369 UPDATE t1 SET f_int2 = f_int1,
30370 f_char1 = CAST(f_int1 AS CHAR),
30371 f_char2 = CAST(f_int1 AS CHAR),
30372 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
30373 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
30375 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30376 SELECT f_int1, f_int1, '', '', 'was inserted'
30377 FROM t0_template source_tab
30378 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30380 # check transactions-1 success: 1
30383 # check transactions-2 success: 1
30386 # check transactions-3 success: 1
30387 DELETE FROM t1 WHERE f_charbig = 'was inserted';
30391 # check transactions-4 success: 1
30392 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30393 SELECT f_int1, f_int1, '', '', 'was inserted'
30394 FROM t0_template source_tab
30395 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30397 # check transactions-5 success: 1
30400 # check transactions-6 success: 1
30401 # INFO: Storage engine used for t1 seems to be transactional.
30404 # check transactions-7 success: 1
30405 DELETE FROM t1 WHERE f_charbig = 'was inserted';
30407 SET @@session.sql_mode = 'traditional';
30408 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30409 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30410 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30411 '', '', 'was inserted' FROM t0_template
30412 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30413 ERROR 22012: Division by 0
30416 # check transactions-8 success: 1
30417 # INFO: Storage engine used for t1 seems to be able to revert
30418 # changes made by the failing statement.
30419 SET @@session.sql_mode = '';
30421 DELETE FROM t1 WHERE f_charbig = 'was inserted';
30423 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30425 # check special-1 success: 1
30426 UPDATE t1 SET f_charbig = '';
30428 # check special-2 success: 1
30429 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30430 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30431 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30432 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30433 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30434 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30435 'just inserted' FROM t0_template
30436 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30437 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30439 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30440 f_charbig = 'updated by trigger'
30441 WHERE f_int1 = new.f_int1;
30443 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30444 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30445 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30447 # check trigger-1 success: 1
30448 DROP TRIGGER trg_1;
30449 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30450 f_int2 = CAST(f_char1 AS SIGNED INT),
30451 f_charbig = 'just inserted'
30452 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30454 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30455 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30456 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30457 'just inserted' FROM t0_template
30458 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30459 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30461 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30462 f_charbig = 'updated by trigger'
30463 WHERE f_int1 = new.f_int1;
30465 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30466 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30467 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30469 # check trigger-2 success: 1
30470 DROP TRIGGER trg_1;
30471 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30472 f_int2 = CAST(f_char1 AS SIGNED INT),
30473 f_charbig = 'just inserted'
30474 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30476 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30477 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30478 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30479 'just inserted' FROM t0_template
30480 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30481 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30483 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30484 f_charbig = 'updated by trigger'
30485 WHERE f_int1 = new.f_int1;
30487 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30488 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30490 # check trigger-3 success: 1
30491 DROP TRIGGER trg_1;
30492 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30493 f_int2 = CAST(f_char1 AS SIGNED INT),
30494 f_charbig = 'just inserted'
30495 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30497 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30498 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30499 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30500 'just inserted' FROM t0_template
30501 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30502 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30504 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30505 f_charbig = 'updated by trigger'
30506 WHERE f_int1 = - old.f_int1;
30508 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30509 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30511 # check trigger-4 success: 1
30512 DROP TRIGGER trg_1;
30513 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30514 f_int2 = CAST(f_char1 AS SIGNED INT),
30515 f_charbig = 'just inserted'
30516 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30518 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30519 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30520 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30521 'just inserted' FROM t0_template
30522 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30523 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30525 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30526 f_charbig = 'updated by trigger'
30527 WHERE f_int1 = new.f_int1;
30529 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30530 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30532 # check trigger-5 success: 1
30533 DROP TRIGGER trg_1;
30534 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30535 f_int2 = CAST(f_char1 AS SIGNED INT),
30536 f_charbig = 'just inserted'
30537 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30539 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30540 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30541 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30542 'just inserted' FROM t0_template
30543 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30544 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30546 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30547 f_charbig = 'updated by trigger'
30548 WHERE f_int1 = - old.f_int1;
30550 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30551 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30553 # check trigger-6 success: 1
30554 DROP TRIGGER trg_1;
30555 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30556 f_int2 = CAST(f_char1 AS SIGNED INT),
30557 f_charbig = 'just inserted'
30558 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30560 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30561 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30562 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30563 'just inserted' FROM t0_template
30564 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30565 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30567 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30568 f_charbig = 'updated by trigger'
30569 WHERE f_int1 = - old.f_int1;
30572 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30574 # check trigger-7 success: 1
30575 DROP TRIGGER trg_1;
30576 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30577 f_int2 = CAST(f_char1 AS SIGNED INT),
30578 f_charbig = 'just inserted'
30579 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30581 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30582 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30583 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30584 'just inserted' FROM t0_template
30585 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30586 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30588 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30589 f_charbig = 'updated by trigger'
30590 WHERE f_int1 = - old.f_int1;
30593 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30595 # check trigger-8 success: 1
30596 DROP TRIGGER trg_1;
30597 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30598 f_int2 = CAST(f_char1 AS SIGNED INT),
30599 f_charbig = 'just inserted'
30600 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30602 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30604 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30605 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30607 SET new.f_int1 = old.f_int1 + @max_row,
30608 new.f_int2 = old.f_int2 - @max_row,
30609 new.f_charbig = '####updated per update trigger####';
30612 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30613 f_charbig = '####updated per update statement itself####';
30615 # check trigger-9 success: 1
30616 DROP TRIGGER trg_2;
30617 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30618 f_int2 = CAST(f_char1 AS SIGNED INT),
30619 f_charbig = CONCAT('===',f_char1,'===');
30620 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30622 SET new.f_int1 = new.f_int1 + @max_row,
30623 new.f_int2 = new.f_int2 - @max_row,
30624 new.f_charbig = '####updated per update trigger####';
30627 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30628 f_charbig = '####updated per update statement itself####';
30630 # check trigger-10 success: 1
30631 DROP TRIGGER trg_2;
30632 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30633 f_int2 = CAST(f_char1 AS SIGNED INT),
30634 f_charbig = CONCAT('===',f_char1,'===');
30635 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30637 SET new.f_int1 = @my_max1 + @counter,
30638 new.f_int2 = @my_min2 - @counter,
30639 new.f_charbig = '####updated per insert trigger####';
30640 SET @counter = @counter + 1;
30643 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30644 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30645 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30646 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30647 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30649 DROP TRIGGER trg_3;
30651 # check trigger-11 success: 1
30653 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30654 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30655 AND f_charbig = '####updated per insert trigger####';
30656 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30658 SET new.f_int1 = @my_max1 + @counter,
30659 new.f_int2 = @my_min2 - @counter,
30660 new.f_charbig = '####updated per insert trigger####';
30661 SET @counter = @counter + 1;
30664 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30665 INSERT INTO t1 (f_char1, f_char2, f_charbig)
30666 SELECT CAST(f_int1 AS CHAR),
30667 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30668 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30670 DROP TRIGGER trg_3;
30672 # check trigger-12 success: 1
30674 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30675 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30676 AND f_charbig = '####updated per insert trigger####';
30678 Table Op Msg_type Msg_text
30679 test.t1 analyze status OK
30680 CHECK TABLE t1 EXTENDED;
30681 Table Op Msg_type Msg_text
30682 test.t1 check status OK
30683 CHECKSUM TABLE t1 EXTENDED;
30685 test.t1 <some_value>
30687 Table Op Msg_type Msg_text
30688 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
30689 test.t1 optimize status OK
30690 # check layout success: 1
30691 REPAIR TABLE t1 EXTENDED;
30692 Table Op Msg_type Msg_text
30693 test.t1 repair note The storage engine for the table doesn't support repair
30694 # check layout success: 1
30697 # check TRUNCATE success: 1
30698 # check layout success: 1
30699 # End usability test (inc/partition_check.inc)
30706 f_charbig VARCHAR(1000)
30707 , PRIMARY KEY (f_int1,f_int2)
30709 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
30710 (PARTITION part1 VALUES IN (0)
30711 (SUBPARTITION sp11, SUBPARTITION sp12),
30712 PARTITION part2 VALUES IN (1)
30713 (SUBPARTITION sp21, SUBPARTITION sp22),
30714 PARTITION part3 VALUES IN (2)
30715 (SUBPARTITION sp31, SUBPARTITION sp32),
30716 PARTITION part4 VALUES IN (NULL)
30717 (SUBPARTITION sp41, SUBPARTITION sp42));
30718 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30719 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30720 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30721 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
30722 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30723 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30724 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30725 # Start usability test (inc/partition_check.inc)
30727 SHOW CREATE TABLE t1;
30729 t1 CREATE TABLE `t1` (
30730 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
30731 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
30732 `f_char1` char(20) DEFAULT NULL,
30733 `f_char2` char(20) DEFAULT NULL,
30734 `f_charbig` varchar(1000) DEFAULT NULL,
30735 PRIMARY KEY (`f_int1`,`f_int2`)
30736 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
30737 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
30738 SUBPARTITION BY HASH (f_int1 + 1)
30739 (PARTITION part1 VALUES IN (0)
30740 (SUBPARTITION sp11 ENGINE = InnoDB,
30741 SUBPARTITION sp12 ENGINE = InnoDB),
30742 PARTITION part2 VALUES IN (1)
30743 (SUBPARTITION sp21 ENGINE = InnoDB,
30744 SUBPARTITION sp22 ENGINE = InnoDB),
30745 PARTITION part3 VALUES IN (2)
30746 (SUBPARTITION sp31 ENGINE = InnoDB,
30747 SUBPARTITION sp32 ENGINE = InnoDB),
30748 PARTITION part4 VALUES IN (NULL)
30749 (SUBPARTITION sp41 ENGINE = InnoDB,
30750 SUBPARTITION sp42 ENGINE = InnoDB)) */
30752 # check prerequisites-1 success: 1
30753 # check COUNT(*) success: 1
30754 # check MIN/MAX(f_int1) success: 1
30755 # check MIN/MAX(f_int2) success: 1
30756 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30757 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30758 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30759 WHERE f_int1 IN (2,3);
30760 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
30761 # check prerequisites-3 success: 1
30762 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
30763 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30764 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
30765 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
30766 WHERE f_int1 IN (2,3);
30767 DELETE FROM t1 WHERE f_charbig = 'delete me';
30768 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30769 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
30770 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
30771 WHERE f_int1 IN (2,3);
30772 DELETE FROM t1 WHERE f_charbig = 'delete me';
30773 # check read via f_int1 success: 1
30774 # check read via f_int2 success: 1
30776 # check multiple-1 success: 1
30777 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30779 # check multiple-2 success: 1
30780 INSERT INTO t1 SELECT * FROM t0_template
30781 WHERE MOD(f_int1,3) = 0;
30783 # check multiple-3 success: 1
30784 UPDATE t1 SET f_int1 = f_int1 + @max_row
30785 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30786 AND @max_row_div2 + @max_row_div4;
30788 # check multiple-4 success: 1
30790 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30791 AND @max_row_div2 + @max_row_div4 + @max_row;
30793 # check multiple-5 success: 1
30794 SELECT COUNT(*) INTO @try_count FROM t0_template
30795 WHERE MOD(f_int1,3) = 0
30796 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30797 SELECT COUNT(*) INTO @clash_count
30798 FROM t1 INNER JOIN t0_template USING(f_int1)
30799 WHERE MOD(f_int1,3) = 0
30800 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30801 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30803 SET f_int1 = @cur_value , f_int2 = @cur_value,
30804 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30805 f_charbig = '#SINGLE#';
30807 # check single-1 success: 1
30808 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30810 SET f_int1 = @cur_value , f_int2 = @cur_value,
30811 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30812 f_charbig = '#SINGLE#';
30814 # check single-2 success: 1
30815 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30816 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30817 UPDATE t1 SET f_int1 = @cur_value2
30818 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30820 # check single-3 success: 1
30821 SET @cur_value1= -1;
30822 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30823 UPDATE t1 SET f_int1 = @cur_value1
30824 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30826 # check single-4 success: 1
30827 SELECT MAX(f_int1) INTO @cur_value FROM t1;
30828 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30830 # check single-5 success: 1
30831 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30833 # check single-6 success: 1
30834 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30836 Warning 1264 Out of range value for column 'f_int1' at row 1
30837 Warning 1264 Out of range value for column 'f_int2' at row 1
30839 # check single-7 success: 1
30840 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
30841 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30842 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30843 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30844 f_charbig = '#NULL#';
30846 SET f_int1 = NULL , f_int2 = -@max_row,
30847 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30848 f_charbig = '#NULL#';
30849 ERROR 23000: Column 'f_int1' cannot be null
30850 # check null success: 1
30852 WHERE f_int1 = 0 AND f_int2 = 0
30853 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30854 AND f_charbig = '#NULL#';
30855 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30856 SELECT f_int1, f_int1, '', '', 'was inserted'
30857 FROM t0_template source_tab
30858 WHERE MOD(f_int1,3) = 0
30859 AND f_int1 BETWEEN @max_row_div2 AND @max_row
30861 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
30862 f_int2 = 2 * @max_row + source_tab.f_int1,
30863 f_charbig = 'was updated';
30865 # check unique-1-a success: 1
30867 # check unique-1-b success: 1
30868 DELETE FROM t1 WHERE f_charbig = 'was inserted';
30869 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30870 f_int2 = CAST(f_char1 AS SIGNED INT),
30871 f_charbig = CONCAT('===',f_char1,'===')
30872 WHERE f_charbig = 'was updated';
30873 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30874 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
30875 FROM t0_template source_tab
30876 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30878 # check replace success: 1
30880 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
30882 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
30883 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
30884 UPDATE t1 SET f_int2 = f_int1,
30885 f_char1 = CAST(f_int1 AS CHAR),
30886 f_char2 = CAST(f_int1 AS CHAR),
30887 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
30888 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
30890 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30891 SELECT f_int1, f_int1, '', '', 'was inserted'
30892 FROM t0_template source_tab
30893 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30895 # check transactions-1 success: 1
30898 # check transactions-2 success: 1
30901 # check transactions-3 success: 1
30902 DELETE FROM t1 WHERE f_charbig = 'was inserted';
30906 # check transactions-4 success: 1
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;
30912 # check transactions-5 success: 1
30915 # check transactions-6 success: 1
30916 # INFO: Storage engine used for t1 seems to be transactional.
30919 # check transactions-7 success: 1
30920 DELETE FROM t1 WHERE f_charbig = 'was inserted';
30922 SET @@session.sql_mode = 'traditional';
30923 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30924 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30925 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30926 '', '', 'was inserted' FROM t0_template
30927 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30928 ERROR 22012: Division by 0
30931 # check transactions-8 success: 1
30932 # INFO: Storage engine used for t1 seems to be able to revert
30933 # changes made by the failing statement.
30934 SET @@session.sql_mode = '';
30936 DELETE FROM t1 WHERE f_charbig = 'was inserted';
30938 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30940 # check special-1 success: 1
30941 UPDATE t1 SET f_charbig = '';
30943 # check special-2 success: 1
30944 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30945 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30946 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30947 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30948 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30949 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30950 'just inserted' FROM t0_template
30951 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30952 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30954 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30955 f_charbig = 'updated by trigger'
30956 WHERE f_int1 = new.f_int1;
30958 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30959 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30960 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30962 # check trigger-1 success: 1
30963 DROP TRIGGER trg_1;
30964 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30965 f_int2 = CAST(f_char1 AS SIGNED INT),
30966 f_charbig = 'just inserted'
30967 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30969 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30970 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30971 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30972 'just inserted' FROM t0_template
30973 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30974 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30976 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30977 f_charbig = 'updated by trigger'
30978 WHERE f_int1 = new.f_int1;
30980 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30981 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30982 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30984 # check trigger-2 success: 1
30985 DROP TRIGGER trg_1;
30986 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30987 f_int2 = CAST(f_char1 AS SIGNED INT),
30988 f_charbig = 'just inserted'
30989 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30991 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30992 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30993 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30994 'just inserted' FROM t0_template
30995 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30996 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30998 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30999 f_charbig = 'updated by trigger'
31000 WHERE f_int1 = new.f_int1;
31002 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31003 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31005 # check trigger-3 success: 1
31006 DROP TRIGGER trg_1;
31007 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31008 f_int2 = CAST(f_char1 AS SIGNED INT),
31009 f_charbig = 'just inserted'
31010 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31012 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31013 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31014 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31015 'just inserted' FROM t0_template
31016 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31017 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31019 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31020 f_charbig = 'updated by trigger'
31021 WHERE f_int1 = - old.f_int1;
31023 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31024 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31026 # check trigger-4 success: 1
31027 DROP TRIGGER trg_1;
31028 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31029 f_int2 = CAST(f_char1 AS SIGNED INT),
31030 f_charbig = 'just inserted'
31031 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31033 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31034 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31035 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31036 'just inserted' FROM t0_template
31037 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31038 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31040 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31041 f_charbig = 'updated by trigger'
31042 WHERE f_int1 = new.f_int1;
31044 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31045 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31047 # check trigger-5 success: 1
31048 DROP TRIGGER trg_1;
31049 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31050 f_int2 = CAST(f_char1 AS SIGNED INT),
31051 f_charbig = 'just inserted'
31052 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31054 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31055 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31056 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31057 'just inserted' FROM t0_template
31058 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31059 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31061 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31062 f_charbig = 'updated by trigger'
31063 WHERE f_int1 = - old.f_int1;
31065 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31066 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31068 # check trigger-6 success: 1
31069 DROP TRIGGER trg_1;
31070 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31071 f_int2 = CAST(f_char1 AS SIGNED INT),
31072 f_charbig = 'just inserted'
31073 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31075 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31076 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31077 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31078 'just inserted' FROM t0_template
31079 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31080 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
31082 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31083 f_charbig = 'updated by trigger'
31084 WHERE f_int1 = - old.f_int1;
31087 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31089 # check trigger-7 success: 1
31090 DROP TRIGGER trg_1;
31091 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31092 f_int2 = CAST(f_char1 AS SIGNED INT),
31093 f_charbig = 'just inserted'
31094 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31096 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31097 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31098 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31099 'just inserted' FROM t0_template
31100 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31101 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
31103 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31104 f_charbig = 'updated by trigger'
31105 WHERE f_int1 = - old.f_int1;
31108 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31110 # check trigger-8 success: 1
31111 DROP TRIGGER trg_1;
31112 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31113 f_int2 = CAST(f_char1 AS SIGNED INT),
31114 f_charbig = 'just inserted'
31115 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31117 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31119 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31120 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31122 SET new.f_int1 = old.f_int1 + @max_row,
31123 new.f_int2 = old.f_int2 - @max_row,
31124 new.f_charbig = '####updated per update trigger####';
31127 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31128 f_charbig = '####updated per update statement itself####';
31130 # check trigger-9 success: 1
31131 DROP TRIGGER trg_2;
31132 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31133 f_int2 = CAST(f_char1 AS SIGNED INT),
31134 f_charbig = CONCAT('===',f_char1,'===');
31135 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31137 SET new.f_int1 = new.f_int1 + @max_row,
31138 new.f_int2 = new.f_int2 - @max_row,
31139 new.f_charbig = '####updated per update trigger####';
31142 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31143 f_charbig = '####updated per update statement itself####';
31145 # check trigger-10 success: 1
31146 DROP TRIGGER trg_2;
31147 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31148 f_int2 = CAST(f_char1 AS SIGNED INT),
31149 f_charbig = CONCAT('===',f_char1,'===');
31150 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31152 SET new.f_int1 = @my_max1 + @counter,
31153 new.f_int2 = @my_min2 - @counter,
31154 new.f_charbig = '####updated per insert trigger####';
31155 SET @counter = @counter + 1;
31158 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31159 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31160 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31161 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31162 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31164 DROP TRIGGER trg_3;
31166 # check trigger-11 success: 1
31168 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31169 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31170 AND f_charbig = '####updated per insert trigger####';
31171 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31173 SET new.f_int1 = @my_max1 + @counter,
31174 new.f_int2 = @my_min2 - @counter,
31175 new.f_charbig = '####updated per insert trigger####';
31176 SET @counter = @counter + 1;
31179 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31180 INSERT INTO t1 (f_char1, f_char2, f_charbig)
31181 SELECT CAST(f_int1 AS CHAR),
31182 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31183 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31185 DROP TRIGGER trg_3;
31187 # check trigger-12 success: 1
31189 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31190 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31191 AND f_charbig = '####updated per insert trigger####';
31193 Table Op Msg_type Msg_text
31194 test.t1 analyze status OK
31195 CHECK TABLE t1 EXTENDED;
31196 Table Op Msg_type Msg_text
31197 test.t1 check status OK
31198 CHECKSUM TABLE t1 EXTENDED;
31200 test.t1 <some_value>
31202 Table Op Msg_type Msg_text
31203 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
31204 test.t1 optimize status OK
31205 # check layout success: 1
31206 REPAIR TABLE t1 EXTENDED;
31207 Table Op Msg_type Msg_text
31208 test.t1 repair note The storage engine for the table doesn't support repair
31209 # check layout success: 1
31212 # check TRUNCATE success: 1
31213 # check layout success: 1
31214 # End usability test (inc/partition_check.inc)
31221 f_charbig VARCHAR(1000)
31222 , PRIMARY KEY (f_int1,f_int2)
31224 PARTITION BY LIST(ABS(MOD(f_int1,2)))
31225 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
31226 (PARTITION part1 VALUES IN (0),
31227 PARTITION part2 VALUES IN (1),
31228 PARTITION part3 VALUES IN (NULL));
31229 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31230 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31231 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31232 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
31233 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31234 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31235 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
31236 # Start usability test (inc/partition_check.inc)
31238 SHOW CREATE TABLE t1;
31240 t1 CREATE TABLE `t1` (
31241 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
31242 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
31243 `f_char1` char(20) DEFAULT NULL,
31244 `f_char2` char(20) DEFAULT NULL,
31245 `f_charbig` varchar(1000) DEFAULT NULL,
31246 PRIMARY KEY (`f_int1`,`f_int2`)
31247 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
31248 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
31249 SUBPARTITION BY KEY (f_int1)
31251 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
31252 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
31253 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
31255 # check prerequisites-1 success: 1
31256 # check COUNT(*) success: 1
31257 # check MIN/MAX(f_int1) success: 1
31258 # check MIN/MAX(f_int2) success: 1
31259 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31260 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31261 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31262 WHERE f_int1 IN (2,3);
31263 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
31264 # check prerequisites-3 success: 1
31265 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
31266 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31267 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
31268 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
31269 WHERE f_int1 IN (2,3);
31270 DELETE FROM t1 WHERE f_charbig = 'delete me';
31271 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31272 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
31273 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
31274 WHERE f_int1 IN (2,3);
31275 DELETE FROM t1 WHERE f_charbig = 'delete me';
31276 # check read via f_int1 success: 1
31277 # check read via f_int2 success: 1
31279 # check multiple-1 success: 1
31280 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31282 # check multiple-2 success: 1
31283 INSERT INTO t1 SELECT * FROM t0_template
31284 WHERE MOD(f_int1,3) = 0;
31286 # check multiple-3 success: 1
31287 UPDATE t1 SET f_int1 = f_int1 + @max_row
31288 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31289 AND @max_row_div2 + @max_row_div4;
31291 # check multiple-4 success: 1
31293 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31294 AND @max_row_div2 + @max_row_div4 + @max_row;
31296 # check multiple-5 success: 1
31297 SELECT COUNT(*) INTO @try_count FROM t0_template
31298 WHERE MOD(f_int1,3) = 0
31299 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
31300 SELECT COUNT(*) INTO @clash_count
31301 FROM t1 INNER JOIN t0_template USING(f_int1)
31302 WHERE MOD(f_int1,3) = 0
31303 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
31304 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
31306 SET f_int1 = @cur_value , f_int2 = @cur_value,
31307 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31308 f_charbig = '#SINGLE#';
31310 # check single-1 success: 1
31311 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
31313 SET f_int1 = @cur_value , f_int2 = @cur_value,
31314 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31315 f_charbig = '#SINGLE#';
31317 # check single-2 success: 1
31318 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
31319 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
31320 UPDATE t1 SET f_int1 = @cur_value2
31321 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
31323 # check single-3 success: 1
31324 SET @cur_value1= -1;
31325 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
31326 UPDATE t1 SET f_int1 = @cur_value1
31327 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
31329 # check single-4 success: 1
31330 SELECT MAX(f_int1) INTO @cur_value FROM t1;
31331 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
31333 # check single-5 success: 1
31334 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
31336 # check single-6 success: 1
31337 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
31339 Warning 1264 Out of range value for column 'f_int1' at row 1
31340 Warning 1264 Out of range value for column 'f_int2' at row 1
31342 # check single-7 success: 1
31343 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
31344 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
31345 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
31346 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
31347 f_charbig = '#NULL#';
31349 SET f_int1 = NULL , f_int2 = -@max_row,
31350 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
31351 f_charbig = '#NULL#';
31352 ERROR 23000: Column 'f_int1' cannot be null
31353 # check null success: 1
31355 WHERE f_int1 = 0 AND f_int2 = 0
31356 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
31357 AND f_charbig = '#NULL#';
31358 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31359 SELECT f_int1, f_int1, '', '', 'was inserted'
31360 FROM t0_template source_tab
31361 WHERE MOD(f_int1,3) = 0
31362 AND f_int1 BETWEEN @max_row_div2 AND @max_row
31364 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
31365 f_int2 = 2 * @max_row + source_tab.f_int1,
31366 f_charbig = 'was updated';
31368 # check unique-1-a success: 1
31370 # check unique-1-b success: 1
31371 DELETE FROM t1 WHERE f_charbig = 'was inserted';
31372 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31373 f_int2 = CAST(f_char1 AS SIGNED INT),
31374 f_charbig = CONCAT('===',f_char1,'===')
31375 WHERE f_charbig = 'was updated';
31376 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31377 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
31378 FROM t0_template source_tab
31379 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
31381 # check replace success: 1
31383 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
31385 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
31386 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
31387 UPDATE t1 SET f_int2 = f_int1,
31388 f_char1 = CAST(f_int1 AS CHAR),
31389 f_char2 = CAST(f_int1 AS CHAR),
31390 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
31391 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
31393 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31394 SELECT f_int1, f_int1, '', '', 'was inserted'
31395 FROM t0_template source_tab
31396 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31398 # check transactions-1 success: 1
31401 # check transactions-2 success: 1
31404 # check transactions-3 success: 1
31405 DELETE FROM t1 WHERE f_charbig = 'was inserted';
31409 # check transactions-4 success: 1
31410 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31411 SELECT f_int1, f_int1, '', '', 'was inserted'
31412 FROM t0_template source_tab
31413 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31415 # check transactions-5 success: 1
31418 # check transactions-6 success: 1
31419 # INFO: Storage engine used for t1 seems to be transactional.
31422 # check transactions-7 success: 1
31423 DELETE FROM t1 WHERE f_charbig = 'was inserted';
31425 SET @@session.sql_mode = 'traditional';
31426 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31427 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31428 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31429 '', '', 'was inserted' FROM t0_template
31430 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31431 ERROR 22012: Division by 0
31434 # check transactions-8 success: 1
31435 # INFO: Storage engine used for t1 seems to be able to revert
31436 # changes made by the failing statement.
31437 SET @@session.sql_mode = '';
31439 DELETE FROM t1 WHERE f_charbig = 'was inserted';
31441 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31443 # check special-1 success: 1
31444 UPDATE t1 SET f_charbig = '';
31446 # check special-2 success: 1
31447 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31448 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31449 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31450 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31451 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31452 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31453 'just inserted' FROM t0_template
31454 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31455 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31457 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31458 f_charbig = 'updated by trigger'
31459 WHERE f_int1 = new.f_int1;
31461 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31462 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31463 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31465 # check trigger-1 success: 1
31466 DROP TRIGGER trg_1;
31467 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31468 f_int2 = CAST(f_char1 AS SIGNED INT),
31469 f_charbig = 'just inserted'
31470 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31472 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31473 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31474 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31475 'just inserted' FROM t0_template
31476 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31477 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31479 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31480 f_charbig = 'updated by trigger'
31481 WHERE f_int1 = new.f_int1;
31483 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31484 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31485 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31487 # check trigger-2 success: 1
31488 DROP TRIGGER trg_1;
31489 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31490 f_int2 = CAST(f_char1 AS SIGNED INT),
31491 f_charbig = 'just inserted'
31492 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31494 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31495 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31496 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31497 'just inserted' FROM t0_template
31498 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31499 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31501 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31502 f_charbig = 'updated by trigger'
31503 WHERE f_int1 = new.f_int1;
31505 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31506 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31508 # check trigger-3 success: 1
31509 DROP TRIGGER trg_1;
31510 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31511 f_int2 = CAST(f_char1 AS SIGNED INT),
31512 f_charbig = 'just inserted'
31513 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31515 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31516 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31517 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31518 'just inserted' FROM t0_template
31519 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31520 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31522 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31523 f_charbig = 'updated by trigger'
31524 WHERE f_int1 = - old.f_int1;
31526 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31527 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31529 # check trigger-4 success: 1
31530 DROP TRIGGER trg_1;
31531 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31532 f_int2 = CAST(f_char1 AS SIGNED INT),
31533 f_charbig = 'just inserted'
31534 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31536 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31537 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31538 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31539 'just inserted' FROM t0_template
31540 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31541 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31543 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31544 f_charbig = 'updated by trigger'
31545 WHERE f_int1 = new.f_int1;
31547 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31548 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31550 # check trigger-5 success: 1
31551 DROP TRIGGER trg_1;
31552 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31553 f_int2 = CAST(f_char1 AS SIGNED INT),
31554 f_charbig = 'just inserted'
31555 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31557 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31558 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31559 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31560 'just inserted' FROM t0_template
31561 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31562 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31564 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31565 f_charbig = 'updated by trigger'
31566 WHERE f_int1 = - old.f_int1;
31568 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31569 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31571 # check trigger-6 success: 1
31572 DROP TRIGGER trg_1;
31573 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31574 f_int2 = CAST(f_char1 AS SIGNED INT),
31575 f_charbig = 'just inserted'
31576 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31578 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31579 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31580 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31581 'just inserted' FROM t0_template
31582 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31583 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
31585 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31586 f_charbig = 'updated by trigger'
31587 WHERE f_int1 = - old.f_int1;
31590 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31592 # check trigger-7 success: 1
31593 DROP TRIGGER trg_1;
31594 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31595 f_int2 = CAST(f_char1 AS SIGNED INT),
31596 f_charbig = 'just inserted'
31597 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31599 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31600 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31601 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31602 'just inserted' FROM t0_template
31603 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31604 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
31606 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31607 f_charbig = 'updated by trigger'
31608 WHERE f_int1 = - old.f_int1;
31611 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31613 # check trigger-8 success: 1
31614 DROP TRIGGER trg_1;
31615 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31616 f_int2 = CAST(f_char1 AS SIGNED INT),
31617 f_charbig = 'just inserted'
31618 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31620 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31622 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31623 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31625 SET new.f_int1 = old.f_int1 + @max_row,
31626 new.f_int2 = old.f_int2 - @max_row,
31627 new.f_charbig = '####updated per update trigger####';
31630 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31631 f_charbig = '####updated per update statement itself####';
31633 # check trigger-9 success: 1
31634 DROP TRIGGER trg_2;
31635 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31636 f_int2 = CAST(f_char1 AS SIGNED INT),
31637 f_charbig = CONCAT('===',f_char1,'===');
31638 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31640 SET new.f_int1 = new.f_int1 + @max_row,
31641 new.f_int2 = new.f_int2 - @max_row,
31642 new.f_charbig = '####updated per update trigger####';
31645 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31646 f_charbig = '####updated per update statement itself####';
31648 # check trigger-10 success: 1
31649 DROP TRIGGER trg_2;
31650 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31651 f_int2 = CAST(f_char1 AS SIGNED INT),
31652 f_charbig = CONCAT('===',f_char1,'===');
31653 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31655 SET new.f_int1 = @my_max1 + @counter,
31656 new.f_int2 = @my_min2 - @counter,
31657 new.f_charbig = '####updated per insert trigger####';
31658 SET @counter = @counter + 1;
31661 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31662 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31663 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31664 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31665 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31667 DROP TRIGGER trg_3;
31669 # check trigger-11 success: 1
31671 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31672 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31673 AND f_charbig = '####updated per insert trigger####';
31674 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31676 SET new.f_int1 = @my_max1 + @counter,
31677 new.f_int2 = @my_min2 - @counter,
31678 new.f_charbig = '####updated per insert trigger####';
31679 SET @counter = @counter + 1;
31682 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31683 INSERT INTO t1 (f_char1, f_char2, f_charbig)
31684 SELECT CAST(f_int1 AS CHAR),
31685 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31686 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31688 DROP TRIGGER trg_3;
31690 # check trigger-12 success: 1
31692 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31693 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31694 AND f_charbig = '####updated per insert trigger####';
31696 Table Op Msg_type Msg_text
31697 test.t1 analyze status OK
31698 CHECK TABLE t1 EXTENDED;
31699 Table Op Msg_type Msg_text
31700 test.t1 check status OK
31701 CHECKSUM TABLE t1 EXTENDED;
31703 test.t1 <some_value>
31705 Table Op Msg_type Msg_text
31706 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
31707 test.t1 optimize status OK
31708 # check layout success: 1
31709 REPAIR TABLE t1 EXTENDED;
31710 Table Op Msg_type Msg_text
31711 test.t1 repair note The storage engine for the table doesn't support repair
31712 # check layout success: 1
31715 # check TRUNCATE success: 1
31716 # check layout success: 1
31717 # End usability test (inc/partition_check.inc)
31719 DROP TABLE IF EXISTS t1;
31725 f_charbig VARCHAR(1000)
31726 , PRIMARY KEY (f_int1,f_int2)
31728 PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
31729 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31730 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31731 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31732 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
31733 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31734 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31735 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
31736 # Start usability test (inc/partition_check.inc)
31738 SHOW CREATE TABLE t1;
31740 t1 CREATE TABLE `t1` (
31741 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
31742 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
31743 `f_char1` char(20) DEFAULT NULL,
31744 `f_char2` char(20) DEFAULT NULL,
31745 `f_charbig` varchar(1000) DEFAULT NULL,
31746 PRIMARY KEY (`f_int1`,`f_int2`)
31747 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
31748 /*!50100 PARTITION BY HASH (f_int1 + f_int2)
31751 # check prerequisites-1 success: 1
31752 # check COUNT(*) success: 1
31753 # check MIN/MAX(f_int1) success: 1
31754 # check MIN/MAX(f_int2) success: 1
31755 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31756 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31757 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31758 WHERE f_int1 IN (2,3);
31759 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
31760 # check prerequisites-3 success: 1
31761 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
31762 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31763 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
31764 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
31765 WHERE f_int1 IN (2,3);
31766 DELETE FROM t1 WHERE f_charbig = 'delete me';
31767 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31768 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
31769 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
31770 WHERE f_int1 IN (2,3);
31771 DELETE FROM t1 WHERE f_charbig = 'delete me';
31772 # check read via f_int1 success: 1
31773 # check read via f_int2 success: 1
31775 # check multiple-1 success: 1
31776 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31778 # check multiple-2 success: 1
31779 INSERT INTO t1 SELECT * FROM t0_template
31780 WHERE MOD(f_int1,3) = 0;
31782 # check multiple-3 success: 1
31783 UPDATE t1 SET f_int1 = f_int1 + @max_row
31784 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31785 AND @max_row_div2 + @max_row_div4;
31787 # check multiple-4 success: 1
31789 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31790 AND @max_row_div2 + @max_row_div4 + @max_row;
31792 # check multiple-5 success: 1
31793 SELECT COUNT(*) INTO @try_count FROM t0_template
31794 WHERE MOD(f_int1,3) = 0
31795 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
31796 SELECT COUNT(*) INTO @clash_count
31797 FROM t1 INNER JOIN t0_template USING(f_int1)
31798 WHERE MOD(f_int1,3) = 0
31799 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
31800 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
31802 SET f_int1 = @cur_value , f_int2 = @cur_value,
31803 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31804 f_charbig = '#SINGLE#';
31806 # check single-1 success: 1
31807 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
31809 SET f_int1 = @cur_value , f_int2 = @cur_value,
31810 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31811 f_charbig = '#SINGLE#';
31813 # check single-2 success: 1
31814 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
31815 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
31816 UPDATE t1 SET f_int1 = @cur_value2
31817 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
31819 # check single-3 success: 1
31820 SET @cur_value1= -1;
31821 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
31822 UPDATE t1 SET f_int1 = @cur_value1
31823 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
31825 # check single-4 success: 1
31826 SELECT MAX(f_int1) INTO @cur_value FROM t1;
31827 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
31829 # check single-5 success: 1
31830 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
31832 # check single-6 success: 1
31833 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
31835 Warning 1264 Out of range value for column 'f_int1' at row 1
31836 Warning 1264 Out of range value for column 'f_int2' at row 1
31838 # check single-7 success: 1
31839 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
31840 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
31841 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
31842 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
31843 f_charbig = '#NULL#';
31845 SET f_int1 = NULL , f_int2 = -@max_row,
31846 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
31847 f_charbig = '#NULL#';
31848 ERROR 23000: Column 'f_int1' cannot be null
31849 # check null success: 1
31851 WHERE f_int1 = 0 AND f_int2 = 0
31852 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
31853 AND f_charbig = '#NULL#';
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 MOD(f_int1,3) = 0
31858 AND f_int1 BETWEEN @max_row_div2 AND @max_row
31860 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
31861 f_int2 = 2 * @max_row + source_tab.f_int1,
31862 f_charbig = 'was updated';
31864 # check unique-1-a success: 1
31866 # check unique-1-b success: 1
31867 DELETE FROM t1 WHERE f_charbig = 'was inserted';
31868 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31869 f_int2 = CAST(f_char1 AS SIGNED INT),
31870 f_charbig = CONCAT('===',f_char1,'===')
31871 WHERE f_charbig = 'was updated';
31872 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31873 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
31874 FROM t0_template source_tab
31875 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
31877 # check replace success: 1
31879 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
31881 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
31882 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
31883 UPDATE t1 SET f_int2 = f_int1,
31884 f_char1 = CAST(f_int1 AS CHAR),
31885 f_char2 = CAST(f_int1 AS CHAR),
31886 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
31887 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
31889 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31890 SELECT f_int1, f_int1, '', '', 'was inserted'
31891 FROM t0_template source_tab
31892 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31894 # check transactions-1 success: 1
31897 # check transactions-2 success: 1
31900 # check transactions-3 success: 1
31901 DELETE FROM t1 WHERE f_charbig = 'was inserted';
31905 # check transactions-4 success: 1
31906 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31907 SELECT f_int1, f_int1, '', '', 'was inserted'
31908 FROM t0_template source_tab
31909 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31911 # check transactions-5 success: 1
31914 # check transactions-6 success: 1
31915 # INFO: Storage engine used for t1 seems to be transactional.
31918 # check transactions-7 success: 1
31919 DELETE FROM t1 WHERE f_charbig = 'was inserted';
31921 SET @@session.sql_mode = 'traditional';
31922 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31923 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31924 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31925 '', '', 'was inserted' FROM t0_template
31926 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31927 ERROR 22012: Division by 0
31930 # check transactions-8 success: 1
31931 # INFO: Storage engine used for t1 seems to be able to revert
31932 # changes made by the failing statement.
31933 SET @@session.sql_mode = '';
31935 DELETE FROM t1 WHERE f_charbig = 'was inserted';
31937 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31939 # check special-1 success: 1
31940 UPDATE t1 SET f_charbig = '';
31942 # check special-2 success: 1
31943 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31944 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31945 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31946 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31947 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31948 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31949 'just inserted' FROM t0_template
31950 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31951 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31953 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31954 f_charbig = 'updated by trigger'
31955 WHERE f_int1 = new.f_int1;
31957 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31958 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31959 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31961 # check trigger-1 success: 1
31962 DROP TRIGGER trg_1;
31963 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31964 f_int2 = CAST(f_char1 AS SIGNED INT),
31965 f_charbig = 'just inserted'
31966 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31968 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31969 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31970 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31971 'just inserted' FROM t0_template
31972 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31973 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31975 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31976 f_charbig = 'updated by trigger'
31977 WHERE f_int1 = new.f_int1;
31979 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31980 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31981 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31983 # check trigger-2 success: 1
31984 DROP TRIGGER trg_1;
31985 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31986 f_int2 = CAST(f_char1 AS SIGNED INT),
31987 f_charbig = 'just inserted'
31988 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31990 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31991 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31992 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31993 'just inserted' FROM t0_template
31994 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31995 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31997 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31998 f_charbig = 'updated by trigger'
31999 WHERE f_int1 = new.f_int1;
32001 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32002 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32004 # check trigger-3 success: 1
32005 DROP TRIGGER trg_1;
32006 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32007 f_int2 = CAST(f_char1 AS SIGNED INT),
32008 f_charbig = 'just inserted'
32009 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32011 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32012 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32013 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32014 'just inserted' FROM t0_template
32015 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32016 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32018 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32019 f_charbig = 'updated by trigger'
32020 WHERE f_int1 = - old.f_int1;
32022 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32023 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32025 # check trigger-4 success: 1
32026 DROP TRIGGER trg_1;
32027 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32028 f_int2 = CAST(f_char1 AS SIGNED INT),
32029 f_charbig = 'just inserted'
32030 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32032 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32033 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32034 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32035 'just inserted' FROM t0_template
32036 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32037 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32039 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32040 f_charbig = 'updated by trigger'
32041 WHERE f_int1 = new.f_int1;
32043 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32044 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32046 # check trigger-5 success: 1
32047 DROP TRIGGER trg_1;
32048 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32049 f_int2 = CAST(f_char1 AS SIGNED INT),
32050 f_charbig = 'just inserted'
32051 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32053 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32054 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32055 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32056 'just inserted' FROM t0_template
32057 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32058 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32060 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32061 f_charbig = 'updated by trigger'
32062 WHERE f_int1 = - old.f_int1;
32064 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32065 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32067 # check trigger-6 success: 1
32068 DROP TRIGGER trg_1;
32069 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32070 f_int2 = CAST(f_char1 AS SIGNED INT),
32071 f_charbig = 'just inserted'
32072 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32074 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32075 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32076 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32077 'just inserted' FROM t0_template
32078 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32079 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
32081 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32082 f_charbig = 'updated by trigger'
32083 WHERE f_int1 = - old.f_int1;
32086 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32088 # check trigger-7 success: 1
32089 DROP TRIGGER trg_1;
32090 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32091 f_int2 = CAST(f_char1 AS SIGNED INT),
32092 f_charbig = 'just inserted'
32093 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32095 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32096 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32097 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32098 'just inserted' FROM t0_template
32099 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32100 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
32102 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32103 f_charbig = 'updated by trigger'
32104 WHERE f_int1 = - old.f_int1;
32107 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32109 # check trigger-8 success: 1
32110 DROP TRIGGER trg_1;
32111 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32112 f_int2 = CAST(f_char1 AS SIGNED INT),
32113 f_charbig = 'just inserted'
32114 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32116 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32118 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32119 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32121 SET new.f_int1 = old.f_int1 + @max_row,
32122 new.f_int2 = old.f_int2 - @max_row,
32123 new.f_charbig = '####updated per update trigger####';
32126 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32127 f_charbig = '####updated per update statement itself####';
32129 # check trigger-9 success: 1
32130 DROP TRIGGER trg_2;
32131 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32132 f_int2 = CAST(f_char1 AS SIGNED INT),
32133 f_charbig = CONCAT('===',f_char1,'===');
32134 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32136 SET new.f_int1 = new.f_int1 + @max_row,
32137 new.f_int2 = new.f_int2 - @max_row,
32138 new.f_charbig = '####updated per update trigger####';
32141 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32142 f_charbig = '####updated per update statement itself####';
32144 # check trigger-10 success: 1
32145 DROP TRIGGER trg_2;
32146 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32147 f_int2 = CAST(f_char1 AS SIGNED INT),
32148 f_charbig = CONCAT('===',f_char1,'===');
32149 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32151 SET new.f_int1 = @my_max1 + @counter,
32152 new.f_int2 = @my_min2 - @counter,
32153 new.f_charbig = '####updated per insert trigger####';
32154 SET @counter = @counter + 1;
32157 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32158 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32159 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32160 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32161 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32163 DROP TRIGGER trg_3;
32165 # check trigger-11 success: 1
32167 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32168 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32169 AND f_charbig = '####updated per insert trigger####';
32170 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32172 SET new.f_int1 = @my_max1 + @counter,
32173 new.f_int2 = @my_min2 - @counter,
32174 new.f_charbig = '####updated per insert trigger####';
32175 SET @counter = @counter + 1;
32178 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32179 INSERT INTO t1 (f_char1, f_char2, f_charbig)
32180 SELECT CAST(f_int1 AS CHAR),
32181 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32182 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32184 DROP TRIGGER trg_3;
32186 # check trigger-12 success: 1
32188 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32189 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32190 AND f_charbig = '####updated per insert trigger####';
32192 Table Op Msg_type Msg_text
32193 test.t1 analyze status OK
32194 CHECK TABLE t1 EXTENDED;
32195 Table Op Msg_type Msg_text
32196 test.t1 check status OK
32197 CHECKSUM TABLE t1 EXTENDED;
32199 test.t1 <some_value>
32201 Table Op Msg_type Msg_text
32202 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
32203 test.t1 optimize status OK
32204 # check layout success: 1
32205 REPAIR TABLE t1 EXTENDED;
32206 Table Op Msg_type Msg_text
32207 test.t1 repair note The storage engine for the table doesn't support repair
32208 # check layout success: 1
32211 # check TRUNCATE success: 1
32212 # check layout success: 1
32213 # End usability test (inc/partition_check.inc)
32220 f_charbig VARCHAR(1000)
32221 , PRIMARY KEY (f_int1,f_int2)
32223 PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
32224 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32225 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32226 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
32227 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
32228 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32229 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32230 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
32231 # Start usability test (inc/partition_check.inc)
32233 SHOW CREATE TABLE t1;
32235 t1 CREATE TABLE `t1` (
32236 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
32237 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
32238 `f_char1` char(20) DEFAULT NULL,
32239 `f_char2` char(20) DEFAULT NULL,
32240 `f_charbig` varchar(1000) DEFAULT NULL,
32241 PRIMARY KEY (`f_int1`,`f_int2`)
32242 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
32243 /*!50100 PARTITION BY KEY (f_int1,f_int2)
32246 # check prerequisites-1 success: 1
32247 # check COUNT(*) success: 1
32248 # check MIN/MAX(f_int1) success: 1
32249 # check MIN/MAX(f_int2) success: 1
32250 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32251 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32252 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
32253 WHERE f_int1 IN (2,3);
32254 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
32255 # check prerequisites-3 success: 1
32256 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
32257 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32258 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
32259 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
32260 WHERE f_int1 IN (2,3);
32261 DELETE FROM t1 WHERE f_charbig = 'delete me';
32262 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32263 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
32264 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
32265 WHERE f_int1 IN (2,3);
32266 DELETE FROM t1 WHERE f_charbig = 'delete me';
32267 # check read via f_int1 success: 1
32268 # check read via f_int2 success: 1
32270 # check multiple-1 success: 1
32271 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
32273 # check multiple-2 success: 1
32274 INSERT INTO t1 SELECT * FROM t0_template
32275 WHERE MOD(f_int1,3) = 0;
32277 # check multiple-3 success: 1
32278 UPDATE t1 SET f_int1 = f_int1 + @max_row
32279 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
32280 AND @max_row_div2 + @max_row_div4;
32282 # check multiple-4 success: 1
32284 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
32285 AND @max_row_div2 + @max_row_div4 + @max_row;
32287 # check multiple-5 success: 1
32288 SELECT COUNT(*) INTO @try_count FROM t0_template
32289 WHERE MOD(f_int1,3) = 0
32290 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
32291 SELECT COUNT(*) INTO @clash_count
32292 FROM t1 INNER JOIN t0_template USING(f_int1)
32293 WHERE MOD(f_int1,3) = 0
32294 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
32295 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
32297 SET f_int1 = @cur_value , f_int2 = @cur_value,
32298 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32299 f_charbig = '#SINGLE#';
32301 # check single-1 success: 1
32302 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
32304 SET f_int1 = @cur_value , f_int2 = @cur_value,
32305 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32306 f_charbig = '#SINGLE#';
32308 # check single-2 success: 1
32309 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
32310 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
32311 UPDATE t1 SET f_int1 = @cur_value2
32312 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
32314 # check single-3 success: 1
32315 SET @cur_value1= -1;
32316 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
32317 UPDATE t1 SET f_int1 = @cur_value1
32318 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
32320 # check single-4 success: 1
32321 SELECT MAX(f_int1) INTO @cur_value FROM t1;
32322 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
32324 # check single-5 success: 1
32325 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
32327 # check single-6 success: 1
32328 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
32330 Warning 1264 Out of range value for column 'f_int1' at row 1
32331 Warning 1264 Out of range value for column 'f_int2' at row 1
32333 # check single-7 success: 1
32334 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
32335 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
32336 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
32337 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
32338 f_charbig = '#NULL#';
32340 SET f_int1 = NULL , f_int2 = -@max_row,
32341 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
32342 f_charbig = '#NULL#';
32343 ERROR 23000: Column 'f_int1' cannot be null
32344 # check null success: 1
32346 WHERE f_int1 = 0 AND f_int2 = 0
32347 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
32348 AND f_charbig = '#NULL#';
32349 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32350 SELECT f_int1, f_int1, '', '', 'was inserted'
32351 FROM t0_template source_tab
32352 WHERE MOD(f_int1,3) = 0
32353 AND f_int1 BETWEEN @max_row_div2 AND @max_row
32355 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
32356 f_int2 = 2 * @max_row + source_tab.f_int1,
32357 f_charbig = 'was updated';
32359 # check unique-1-a success: 1
32361 # check unique-1-b success: 1
32362 DELETE FROM t1 WHERE f_charbig = 'was inserted';
32363 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32364 f_int2 = CAST(f_char1 AS SIGNED INT),
32365 f_charbig = CONCAT('===',f_char1,'===')
32366 WHERE f_charbig = 'was updated';
32367 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32368 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
32369 FROM t0_template source_tab
32370 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
32372 # check replace success: 1
32374 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
32376 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
32377 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
32378 UPDATE t1 SET f_int2 = f_int1,
32379 f_char1 = CAST(f_int1 AS CHAR),
32380 f_char2 = CAST(f_int1 AS CHAR),
32381 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
32382 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
32384 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32385 SELECT f_int1, f_int1, '', '', 'was inserted'
32386 FROM t0_template source_tab
32387 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32389 # check transactions-1 success: 1
32392 # check transactions-2 success: 1
32395 # check transactions-3 success: 1
32396 DELETE FROM t1 WHERE f_charbig = 'was inserted';
32400 # check transactions-4 success: 1
32401 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32402 SELECT f_int1, f_int1, '', '', 'was inserted'
32403 FROM t0_template source_tab
32404 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32406 # check transactions-5 success: 1
32409 # check transactions-6 success: 1
32410 # INFO: Storage engine used for t1 seems to be transactional.
32413 # check transactions-7 success: 1
32414 DELETE FROM t1 WHERE f_charbig = 'was inserted';
32416 SET @@session.sql_mode = 'traditional';
32417 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
32418 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32419 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
32420 '', '', 'was inserted' FROM t0_template
32421 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32422 ERROR 22012: Division by 0
32425 # check transactions-8 success: 1
32426 # INFO: Storage engine used for t1 seems to be able to revert
32427 # changes made by the failing statement.
32428 SET @@session.sql_mode = '';
32430 DELETE FROM t1 WHERE f_charbig = 'was inserted';
32432 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
32434 # check special-1 success: 1
32435 UPDATE t1 SET f_charbig = '';
32437 # check special-2 success: 1
32438 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
32439 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32440 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
32441 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32442 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32443 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32444 'just inserted' FROM t0_template
32445 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32446 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
32448 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32449 f_charbig = 'updated by trigger'
32450 WHERE f_int1 = new.f_int1;
32452 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32453 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32454 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32456 # check trigger-1 success: 1
32457 DROP TRIGGER trg_1;
32458 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32459 f_int2 = CAST(f_char1 AS SIGNED INT),
32460 f_charbig = 'just inserted'
32461 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32463 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32464 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32465 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32466 'just inserted' FROM t0_template
32467 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32468 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
32470 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32471 f_charbig = 'updated by trigger'
32472 WHERE f_int1 = new.f_int1;
32474 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32475 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32476 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32478 # check trigger-2 success: 1
32479 DROP TRIGGER trg_1;
32480 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32481 f_int2 = CAST(f_char1 AS SIGNED INT),
32482 f_charbig = 'just inserted'
32483 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32485 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32486 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32487 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32488 'just inserted' FROM t0_template
32489 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32490 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32492 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32493 f_charbig = 'updated by trigger'
32494 WHERE f_int1 = new.f_int1;
32496 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32497 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32499 # check trigger-3 success: 1
32500 DROP TRIGGER trg_1;
32501 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32502 f_int2 = CAST(f_char1 AS SIGNED INT),
32503 f_charbig = 'just inserted'
32504 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32506 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32507 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32508 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32509 'just inserted' FROM t0_template
32510 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32511 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32513 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32514 f_charbig = 'updated by trigger'
32515 WHERE f_int1 = - old.f_int1;
32517 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32518 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32520 # check trigger-4 success: 1
32521 DROP TRIGGER trg_1;
32522 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32523 f_int2 = CAST(f_char1 AS SIGNED INT),
32524 f_charbig = 'just inserted'
32525 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32527 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32528 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32529 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32530 'just inserted' FROM t0_template
32531 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32532 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32534 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32535 f_charbig = 'updated by trigger'
32536 WHERE f_int1 = new.f_int1;
32538 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32539 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32541 # check trigger-5 success: 1
32542 DROP TRIGGER trg_1;
32543 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32544 f_int2 = CAST(f_char1 AS SIGNED INT),
32545 f_charbig = 'just inserted'
32546 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32548 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32549 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32550 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32551 'just inserted' FROM t0_template
32552 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32553 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32555 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32556 f_charbig = 'updated by trigger'
32557 WHERE f_int1 = - old.f_int1;
32559 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32560 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32562 # check trigger-6 success: 1
32563 DROP TRIGGER trg_1;
32564 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32565 f_int2 = CAST(f_char1 AS SIGNED INT),
32566 f_charbig = 'just inserted'
32567 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32569 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32570 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32571 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32572 'just inserted' FROM t0_template
32573 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32574 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
32576 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32577 f_charbig = 'updated by trigger'
32578 WHERE f_int1 = - old.f_int1;
32581 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32583 # check trigger-7 success: 1
32584 DROP TRIGGER trg_1;
32585 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32586 f_int2 = CAST(f_char1 AS SIGNED INT),
32587 f_charbig = 'just inserted'
32588 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32590 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32591 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32592 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32593 'just inserted' FROM t0_template
32594 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32595 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
32597 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32598 f_charbig = 'updated by trigger'
32599 WHERE f_int1 = - old.f_int1;
32602 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32604 # check trigger-8 success: 1
32605 DROP TRIGGER trg_1;
32606 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32607 f_int2 = CAST(f_char1 AS SIGNED INT),
32608 f_charbig = 'just inserted'
32609 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32611 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32613 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32614 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32616 SET new.f_int1 = old.f_int1 + @max_row,
32617 new.f_int2 = old.f_int2 - @max_row,
32618 new.f_charbig = '####updated per update trigger####';
32621 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32622 f_charbig = '####updated per update statement itself####';
32624 # check trigger-9 success: 1
32625 DROP TRIGGER trg_2;
32626 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32627 f_int2 = CAST(f_char1 AS SIGNED INT),
32628 f_charbig = CONCAT('===',f_char1,'===');
32629 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32631 SET new.f_int1 = new.f_int1 + @max_row,
32632 new.f_int2 = new.f_int2 - @max_row,
32633 new.f_charbig = '####updated per update trigger####';
32636 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32637 f_charbig = '####updated per update statement itself####';
32639 # check trigger-10 success: 1
32640 DROP TRIGGER trg_2;
32641 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32642 f_int2 = CAST(f_char1 AS SIGNED INT),
32643 f_charbig = CONCAT('===',f_char1,'===');
32644 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32646 SET new.f_int1 = @my_max1 + @counter,
32647 new.f_int2 = @my_min2 - @counter,
32648 new.f_charbig = '####updated per insert trigger####';
32649 SET @counter = @counter + 1;
32652 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32653 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32654 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32655 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32656 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32658 DROP TRIGGER trg_3;
32660 # check trigger-11 success: 1
32662 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32663 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32664 AND f_charbig = '####updated per insert trigger####';
32665 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32667 SET new.f_int1 = @my_max1 + @counter,
32668 new.f_int2 = @my_min2 - @counter,
32669 new.f_charbig = '####updated per insert trigger####';
32670 SET @counter = @counter + 1;
32673 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32674 INSERT INTO t1 (f_char1, f_char2, f_charbig)
32675 SELECT CAST(f_int1 AS CHAR),
32676 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32677 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32679 DROP TRIGGER trg_3;
32681 # check trigger-12 success: 1
32683 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32684 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32685 AND f_charbig = '####updated per insert trigger####';
32687 Table Op Msg_type Msg_text
32688 test.t1 analyze status OK
32689 CHECK TABLE t1 EXTENDED;
32690 Table Op Msg_type Msg_text
32691 test.t1 check status OK
32692 CHECKSUM TABLE t1 EXTENDED;
32694 test.t1 <some_value>
32696 Table Op Msg_type Msg_text
32697 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
32698 test.t1 optimize status OK
32699 # check layout success: 1
32700 REPAIR TABLE t1 EXTENDED;
32701 Table Op Msg_type Msg_text
32702 test.t1 repair note The storage engine for the table doesn't support repair
32703 # check layout success: 1
32706 # check TRUNCATE success: 1
32707 # check layout success: 1
32708 # End usability test (inc/partition_check.inc)
32715 f_charbig VARCHAR(1000)
32716 , PRIMARY KEY (f_int1,f_int2)
32718 PARTITION BY LIST(MOD(f_int1 + f_int2,4))
32719 (PARTITION part_3 VALUES IN (-3),
32720 PARTITION part_2 VALUES IN (-2),
32721 PARTITION part_1 VALUES IN (-1),
32722 PARTITION part_N VALUES IN (NULL),
32723 PARTITION part0 VALUES IN (0),
32724 PARTITION part1 VALUES IN (1),
32725 PARTITION part2 VALUES IN (2),
32726 PARTITION part3 VALUES IN (3));
32727 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32728 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32729 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
32730 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
32731 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32732 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32733 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
32734 # Start usability test (inc/partition_check.inc)
32736 SHOW CREATE TABLE t1;
32738 t1 CREATE TABLE `t1` (
32739 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
32740 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
32741 `f_char1` char(20) DEFAULT NULL,
32742 `f_char2` char(20) DEFAULT NULL,
32743 `f_charbig` varchar(1000) DEFAULT NULL,
32744 PRIMARY KEY (`f_int1`,`f_int2`)
32745 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
32746 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
32747 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
32748 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
32749 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
32750 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
32751 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
32752 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
32753 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
32754 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
32756 # check prerequisites-1 success: 1
32757 # check COUNT(*) success: 1
32758 # check MIN/MAX(f_int1) success: 1
32759 # check MIN/MAX(f_int2) success: 1
32760 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32761 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32762 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
32763 WHERE f_int1 IN (2,3);
32764 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
32765 # check prerequisites-3 success: 1
32766 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
32767 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32768 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
32769 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
32770 WHERE f_int1 IN (2,3);
32771 DELETE FROM t1 WHERE f_charbig = 'delete me';
32772 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32773 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
32774 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
32775 WHERE f_int1 IN (2,3);
32776 DELETE FROM t1 WHERE f_charbig = 'delete me';
32777 # check read via f_int1 success: 1
32778 # check read via f_int2 success: 1
32780 # check multiple-1 success: 1
32781 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
32783 # check multiple-2 success: 1
32784 INSERT INTO t1 SELECT * FROM t0_template
32785 WHERE MOD(f_int1,3) = 0;
32787 # check multiple-3 success: 1
32788 UPDATE t1 SET f_int1 = f_int1 + @max_row
32789 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
32790 AND @max_row_div2 + @max_row_div4;
32792 # check multiple-4 success: 1
32794 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
32795 AND @max_row_div2 + @max_row_div4 + @max_row;
32797 # check multiple-5 success: 1
32798 SELECT COUNT(*) INTO @try_count FROM t0_template
32799 WHERE MOD(f_int1,3) = 0
32800 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
32801 SELECT COUNT(*) INTO @clash_count
32802 FROM t1 INNER JOIN t0_template USING(f_int1)
32803 WHERE MOD(f_int1,3) = 0
32804 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
32805 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
32807 SET f_int1 = @cur_value , f_int2 = @cur_value,
32808 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32809 f_charbig = '#SINGLE#';
32811 # check single-1 success: 1
32812 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
32814 SET f_int1 = @cur_value , f_int2 = @cur_value,
32815 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32816 f_charbig = '#SINGLE#';
32818 # check single-2 success: 1
32819 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
32820 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
32821 UPDATE t1 SET f_int1 = @cur_value2
32822 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
32824 # check single-3 success: 1
32825 SET @cur_value1= -1;
32826 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
32827 UPDATE t1 SET f_int1 = @cur_value1
32828 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
32830 # check single-4 success: 1
32831 SELECT MAX(f_int1) INTO @cur_value FROM t1;
32832 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
32834 # check single-5 success: 1
32835 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
32837 # check single-6 success: 1
32838 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
32840 Warning 1264 Out of range value for column 'f_int1' at row 1
32841 Warning 1264 Out of range value for column 'f_int2' at row 1
32843 # check single-7 success: 1
32844 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
32845 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
32846 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
32847 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
32848 f_charbig = '#NULL#';
32850 SET f_int1 = NULL , f_int2 = -@max_row,
32851 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
32852 f_charbig = '#NULL#';
32853 ERROR 23000: Column 'f_int1' cannot be null
32854 # check null success: 1
32856 WHERE f_int1 = 0 AND f_int2 = 0
32857 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
32858 AND f_charbig = '#NULL#';
32859 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32860 SELECT f_int1, f_int1, '', '', 'was inserted'
32861 FROM t0_template source_tab
32862 WHERE MOD(f_int1,3) = 0
32863 AND f_int1 BETWEEN @max_row_div2 AND @max_row
32865 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
32866 f_int2 = 2 * @max_row + source_tab.f_int1,
32867 f_charbig = 'was updated';
32869 # check unique-1-a success: 1
32871 # check unique-1-b success: 1
32872 DELETE FROM t1 WHERE f_charbig = 'was inserted';
32873 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32874 f_int2 = CAST(f_char1 AS SIGNED INT),
32875 f_charbig = CONCAT('===',f_char1,'===')
32876 WHERE f_charbig = 'was updated';
32877 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32878 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
32879 FROM t0_template source_tab
32880 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
32882 # check replace success: 1
32884 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
32886 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
32887 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
32888 UPDATE t1 SET f_int2 = f_int1,
32889 f_char1 = CAST(f_int1 AS CHAR),
32890 f_char2 = CAST(f_int1 AS CHAR),
32891 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
32892 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
32894 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32895 SELECT f_int1, f_int1, '', '', 'was inserted'
32896 FROM t0_template source_tab
32897 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32899 # check transactions-1 success: 1
32902 # check transactions-2 success: 1
32905 # check transactions-3 success: 1
32906 DELETE FROM t1 WHERE f_charbig = 'was inserted';
32910 # check transactions-4 success: 1
32911 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32912 SELECT f_int1, f_int1, '', '', 'was inserted'
32913 FROM t0_template source_tab
32914 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32916 # check transactions-5 success: 1
32919 # check transactions-6 success: 1
32920 # INFO: Storage engine used for t1 seems to be transactional.
32923 # check transactions-7 success: 1
32924 DELETE FROM t1 WHERE f_charbig = 'was inserted';
32926 SET @@session.sql_mode = 'traditional';
32927 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
32928 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32929 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
32930 '', '', 'was inserted' FROM t0_template
32931 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32932 ERROR 22012: Division by 0
32935 # check transactions-8 success: 1
32936 # INFO: Storage engine used for t1 seems to be able to revert
32937 # changes made by the failing statement.
32938 SET @@session.sql_mode = '';
32940 DELETE FROM t1 WHERE f_charbig = 'was inserted';
32942 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
32944 # check special-1 success: 1
32945 UPDATE t1 SET f_charbig = '';
32947 # check special-2 success: 1
32948 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
32949 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32950 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
32951 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32952 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32953 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32954 'just inserted' FROM t0_template
32955 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32956 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
32958 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32959 f_charbig = 'updated by trigger'
32960 WHERE f_int1 = new.f_int1;
32962 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32963 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32964 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32966 # check trigger-1 success: 1
32967 DROP TRIGGER trg_1;
32968 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32969 f_int2 = CAST(f_char1 AS SIGNED INT),
32970 f_charbig = 'just inserted'
32971 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32973 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32974 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32975 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32976 'just inserted' FROM t0_template
32977 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32978 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
32980 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32981 f_charbig = 'updated by trigger'
32982 WHERE f_int1 = new.f_int1;
32984 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32985 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32986 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32988 # check trigger-2 success: 1
32989 DROP TRIGGER trg_1;
32990 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32991 f_int2 = CAST(f_char1 AS SIGNED INT),
32992 f_charbig = 'just inserted'
32993 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32995 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32996 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32997 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32998 'just inserted' FROM t0_template
32999 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33000 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33002 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33003 f_charbig = 'updated by trigger'
33004 WHERE f_int1 = new.f_int1;
33006 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33007 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33009 # check trigger-3 success: 1
33010 DROP TRIGGER trg_1;
33011 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33012 f_int2 = CAST(f_char1 AS SIGNED INT),
33013 f_charbig = 'just inserted'
33014 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33016 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33017 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33018 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33019 'just inserted' FROM t0_template
33020 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33021 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33023 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33024 f_charbig = 'updated by trigger'
33025 WHERE f_int1 = - old.f_int1;
33027 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33028 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33030 # check trigger-4 success: 1
33031 DROP TRIGGER trg_1;
33032 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33033 f_int2 = CAST(f_char1 AS SIGNED INT),
33034 f_charbig = 'just inserted'
33035 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33037 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33038 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33039 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33040 'just inserted' FROM t0_template
33041 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33042 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33044 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33045 f_charbig = 'updated by trigger'
33046 WHERE f_int1 = new.f_int1;
33048 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33049 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33051 # check trigger-5 success: 1
33052 DROP TRIGGER trg_1;
33053 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33054 f_int2 = CAST(f_char1 AS SIGNED INT),
33055 f_charbig = 'just inserted'
33056 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33058 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33059 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33060 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33061 'just inserted' FROM t0_template
33062 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33063 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33065 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33066 f_charbig = 'updated by trigger'
33067 WHERE f_int1 = - old.f_int1;
33069 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33070 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33072 # check trigger-6 success: 1
33073 DROP TRIGGER trg_1;
33074 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33075 f_int2 = CAST(f_char1 AS SIGNED INT),
33076 f_charbig = 'just inserted'
33077 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33079 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33080 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33081 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33082 'just inserted' FROM t0_template
33083 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33084 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
33086 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33087 f_charbig = 'updated by trigger'
33088 WHERE f_int1 = - old.f_int1;
33091 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33093 # check trigger-7 success: 1
33094 DROP TRIGGER trg_1;
33095 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33096 f_int2 = CAST(f_char1 AS SIGNED INT),
33097 f_charbig = 'just inserted'
33098 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33100 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33101 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33102 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33103 'just inserted' FROM t0_template
33104 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33105 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
33107 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33108 f_charbig = 'updated by trigger'
33109 WHERE f_int1 = - old.f_int1;
33112 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33114 # check trigger-8 success: 1
33115 DROP TRIGGER trg_1;
33116 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33117 f_int2 = CAST(f_char1 AS SIGNED INT),
33118 f_charbig = 'just inserted'
33119 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33121 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33123 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33124 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33126 SET new.f_int1 = old.f_int1 + @max_row,
33127 new.f_int2 = old.f_int2 - @max_row,
33128 new.f_charbig = '####updated per update trigger####';
33131 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33132 f_charbig = '####updated per update statement itself####';
33134 # check trigger-9 success: 1
33135 DROP TRIGGER trg_2;
33136 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33137 f_int2 = CAST(f_char1 AS SIGNED INT),
33138 f_charbig = CONCAT('===',f_char1,'===');
33139 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33141 SET new.f_int1 = new.f_int1 + @max_row,
33142 new.f_int2 = new.f_int2 - @max_row,
33143 new.f_charbig = '####updated per update trigger####';
33146 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33147 f_charbig = '####updated per update statement itself####';
33149 # check trigger-10 success: 1
33150 DROP TRIGGER trg_2;
33151 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33152 f_int2 = CAST(f_char1 AS SIGNED INT),
33153 f_charbig = CONCAT('===',f_char1,'===');
33154 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33156 SET new.f_int1 = @my_max1 + @counter,
33157 new.f_int2 = @my_min2 - @counter,
33158 new.f_charbig = '####updated per insert trigger####';
33159 SET @counter = @counter + 1;
33162 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33163 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33164 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33165 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33166 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33168 DROP TRIGGER trg_3;
33170 # check trigger-11 success: 1
33172 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33173 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33174 AND f_charbig = '####updated per insert trigger####';
33175 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33177 SET new.f_int1 = @my_max1 + @counter,
33178 new.f_int2 = @my_min2 - @counter,
33179 new.f_charbig = '####updated per insert trigger####';
33180 SET @counter = @counter + 1;
33183 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33184 INSERT INTO t1 (f_char1, f_char2, f_charbig)
33185 SELECT CAST(f_int1 AS CHAR),
33186 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33187 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33189 DROP TRIGGER trg_3;
33191 # check trigger-12 success: 1
33193 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33194 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33195 AND f_charbig = '####updated per insert trigger####';
33197 Table Op Msg_type Msg_text
33198 test.t1 analyze status OK
33199 CHECK TABLE t1 EXTENDED;
33200 Table Op Msg_type Msg_text
33201 test.t1 check status OK
33202 CHECKSUM TABLE t1 EXTENDED;
33204 test.t1 <some_value>
33206 Table Op Msg_type Msg_text
33207 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
33208 test.t1 optimize status OK
33209 # check layout success: 1
33210 REPAIR TABLE t1 EXTENDED;
33211 Table Op Msg_type Msg_text
33212 test.t1 repair note The storage engine for the table doesn't support repair
33213 # check layout success: 1
33216 # check TRUNCATE success: 1
33217 # check layout success: 1
33218 # End usability test (inc/partition_check.inc)
33225 f_charbig VARCHAR(1000)
33226 , PRIMARY KEY (f_int1,f_int2)
33228 PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
33229 (PARTITION parta VALUES LESS THAN (0),
33230 PARTITION partb VALUES LESS THAN (5),
33231 PARTITION partc VALUES LESS THAN (10),
33232 PARTITION partd VALUES LESS THAN (10 + 5),
33233 PARTITION parte VALUES LESS THAN (20),
33234 PARTITION partf VALUES LESS THAN (2147483646));
33235 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33236 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33237 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
33238 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
33239 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33240 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33241 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
33242 # Start usability test (inc/partition_check.inc)
33244 SHOW CREATE TABLE t1;
33246 t1 CREATE TABLE `t1` (
33247 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
33248 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
33249 `f_char1` char(20) DEFAULT NULL,
33250 `f_char2` char(20) DEFAULT NULL,
33251 `f_charbig` varchar(1000) DEFAULT NULL,
33252 PRIMARY KEY (`f_int1`,`f_int2`)
33253 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
33254 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
33255 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
33256 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
33257 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
33258 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
33259 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
33260 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
33262 # check prerequisites-1 success: 1
33263 # check COUNT(*) success: 1
33264 # check MIN/MAX(f_int1) success: 1
33265 # check MIN/MAX(f_int2) success: 1
33266 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33267 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33268 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
33269 WHERE f_int1 IN (2,3);
33270 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
33271 # check prerequisites-3 success: 1
33272 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
33273 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33274 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
33275 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
33276 WHERE f_int1 IN (2,3);
33277 DELETE FROM t1 WHERE f_charbig = 'delete me';
33278 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33279 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
33280 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
33281 WHERE f_int1 IN (2,3);
33282 DELETE FROM t1 WHERE f_charbig = 'delete me';
33283 # check read via f_int1 success: 1
33284 # check read via f_int2 success: 1
33286 # check multiple-1 success: 1
33287 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
33289 # check multiple-2 success: 1
33290 INSERT INTO t1 SELECT * FROM t0_template
33291 WHERE MOD(f_int1,3) = 0;
33293 # check multiple-3 success: 1
33294 UPDATE t1 SET f_int1 = f_int1 + @max_row
33295 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
33296 AND @max_row_div2 + @max_row_div4;
33298 # check multiple-4 success: 1
33300 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
33301 AND @max_row_div2 + @max_row_div4 + @max_row;
33303 # check multiple-5 success: 1
33304 SELECT COUNT(*) INTO @try_count FROM t0_template
33305 WHERE MOD(f_int1,3) = 0
33306 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
33307 SELECT COUNT(*) INTO @clash_count
33308 FROM t1 INNER JOIN t0_template USING(f_int1)
33309 WHERE MOD(f_int1,3) = 0
33310 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
33311 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
33313 SET f_int1 = @cur_value , f_int2 = @cur_value,
33314 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33315 f_charbig = '#SINGLE#';
33317 # check single-1 success: 1
33318 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
33320 SET f_int1 = @cur_value , f_int2 = @cur_value,
33321 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33322 f_charbig = '#SINGLE#';
33324 # check single-2 success: 1
33325 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
33326 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
33327 UPDATE t1 SET f_int1 = @cur_value2
33328 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
33330 # check single-3 success: 1
33331 SET @cur_value1= -1;
33332 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
33333 UPDATE t1 SET f_int1 = @cur_value1
33334 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
33336 # check single-4 success: 1
33337 SELECT MAX(f_int1) INTO @cur_value FROM t1;
33338 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
33340 # check single-5 success: 1
33341 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
33343 # check single-6 success: 1
33344 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
33346 Warning 1264 Out of range value for column 'f_int1' at row 1
33347 Warning 1264 Out of range value for column 'f_int2' at row 1
33349 # check single-7 success: 1
33350 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
33351 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
33352 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
33353 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
33354 f_charbig = '#NULL#';
33356 SET f_int1 = NULL , f_int2 = -@max_row,
33357 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
33358 f_charbig = '#NULL#';
33359 ERROR 23000: Column 'f_int1' cannot be null
33360 # check null success: 1
33362 WHERE f_int1 = 0 AND f_int2 = 0
33363 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
33364 AND f_charbig = '#NULL#';
33365 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33366 SELECT f_int1, f_int1, '', '', 'was inserted'
33367 FROM t0_template source_tab
33368 WHERE MOD(f_int1,3) = 0
33369 AND f_int1 BETWEEN @max_row_div2 AND @max_row
33371 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
33372 f_int2 = 2 * @max_row + source_tab.f_int1,
33373 f_charbig = 'was updated';
33375 # check unique-1-a success: 1
33377 # check unique-1-b success: 1
33378 DELETE FROM t1 WHERE f_charbig = 'was inserted';
33379 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33380 f_int2 = CAST(f_char1 AS SIGNED INT),
33381 f_charbig = CONCAT('===',f_char1,'===')
33382 WHERE f_charbig = 'was updated';
33383 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33384 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
33385 FROM t0_template source_tab
33386 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
33388 # check replace success: 1
33390 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
33392 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
33393 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
33394 UPDATE t1 SET f_int2 = f_int1,
33395 f_char1 = CAST(f_int1 AS CHAR),
33396 f_char2 = CAST(f_int1 AS CHAR),
33397 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
33398 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
33400 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33401 SELECT f_int1, f_int1, '', '', 'was inserted'
33402 FROM t0_template source_tab
33403 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33405 # check transactions-1 success: 1
33408 # check transactions-2 success: 1
33411 # check transactions-3 success: 1
33412 DELETE FROM t1 WHERE f_charbig = 'was inserted';
33416 # check transactions-4 success: 1
33417 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33418 SELECT f_int1, f_int1, '', '', 'was inserted'
33419 FROM t0_template source_tab
33420 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33422 # check transactions-5 success: 1
33425 # check transactions-6 success: 1
33426 # INFO: Storage engine used for t1 seems to be transactional.
33429 # check transactions-7 success: 1
33430 DELETE FROM t1 WHERE f_charbig = 'was inserted';
33432 SET @@session.sql_mode = 'traditional';
33433 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
33434 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33435 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
33436 '', '', 'was inserted' FROM t0_template
33437 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33438 ERROR 22012: Division by 0
33441 # check transactions-8 success: 1
33442 # INFO: Storage engine used for t1 seems to be able to revert
33443 # changes made by the failing statement.
33444 SET @@session.sql_mode = '';
33446 DELETE FROM t1 WHERE f_charbig = 'was inserted';
33448 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
33450 # check special-1 success: 1
33451 UPDATE t1 SET f_charbig = '';
33453 # check special-2 success: 1
33454 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
33455 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33456 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
33457 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33458 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33459 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33460 'just inserted' FROM t0_template
33461 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33462 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
33464 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33465 f_charbig = 'updated by trigger'
33466 WHERE f_int1 = new.f_int1;
33468 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33469 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33470 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33472 # check trigger-1 success: 1
33473 DROP TRIGGER trg_1;
33474 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33475 f_int2 = CAST(f_char1 AS SIGNED INT),
33476 f_charbig = 'just inserted'
33477 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33479 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33480 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33481 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33482 'just inserted' FROM t0_template
33483 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33484 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
33486 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33487 f_charbig = 'updated by trigger'
33488 WHERE f_int1 = new.f_int1;
33490 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33491 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33492 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33494 # check trigger-2 success: 1
33495 DROP TRIGGER trg_1;
33496 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33497 f_int2 = CAST(f_char1 AS SIGNED INT),
33498 f_charbig = 'just inserted'
33499 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33501 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33502 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33503 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33504 'just inserted' FROM t0_template
33505 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33506 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33508 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33509 f_charbig = 'updated by trigger'
33510 WHERE f_int1 = new.f_int1;
33512 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33513 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33515 # check trigger-3 success: 1
33516 DROP TRIGGER trg_1;
33517 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33518 f_int2 = CAST(f_char1 AS SIGNED INT),
33519 f_charbig = 'just inserted'
33520 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33522 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33523 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33524 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33525 'just inserted' FROM t0_template
33526 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33527 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33529 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33530 f_charbig = 'updated by trigger'
33531 WHERE f_int1 = - old.f_int1;
33533 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33534 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33536 # check trigger-4 success: 1
33537 DROP TRIGGER trg_1;
33538 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33539 f_int2 = CAST(f_char1 AS SIGNED INT),
33540 f_charbig = 'just inserted'
33541 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33543 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33544 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33545 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33546 'just inserted' FROM t0_template
33547 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33548 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33550 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33551 f_charbig = 'updated by trigger'
33552 WHERE f_int1 = new.f_int1;
33554 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33555 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33557 # check trigger-5 success: 1
33558 DROP TRIGGER trg_1;
33559 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33560 f_int2 = CAST(f_char1 AS SIGNED INT),
33561 f_charbig = 'just inserted'
33562 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33564 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33565 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33566 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33567 'just inserted' FROM t0_template
33568 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33569 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33571 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33572 f_charbig = 'updated by trigger'
33573 WHERE f_int1 = - old.f_int1;
33575 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33576 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33578 # check trigger-6 success: 1
33579 DROP TRIGGER trg_1;
33580 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33581 f_int2 = CAST(f_char1 AS SIGNED INT),
33582 f_charbig = 'just inserted'
33583 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33585 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33586 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33587 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33588 'just inserted' FROM t0_template
33589 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33590 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
33592 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33593 f_charbig = 'updated by trigger'
33594 WHERE f_int1 = - old.f_int1;
33597 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33599 # check trigger-7 success: 1
33600 DROP TRIGGER trg_1;
33601 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33602 f_int2 = CAST(f_char1 AS SIGNED INT),
33603 f_charbig = 'just inserted'
33604 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33606 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33607 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33608 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33609 'just inserted' FROM t0_template
33610 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33611 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
33613 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33614 f_charbig = 'updated by trigger'
33615 WHERE f_int1 = - old.f_int1;
33618 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33620 # check trigger-8 success: 1
33621 DROP TRIGGER trg_1;
33622 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33623 f_int2 = CAST(f_char1 AS SIGNED INT),
33624 f_charbig = 'just inserted'
33625 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33627 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33629 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33630 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33632 SET new.f_int1 = old.f_int1 + @max_row,
33633 new.f_int2 = old.f_int2 - @max_row,
33634 new.f_charbig = '####updated per update trigger####';
33637 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33638 f_charbig = '####updated per update statement itself####';
33640 # check trigger-9 success: 1
33641 DROP TRIGGER trg_2;
33642 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33643 f_int2 = CAST(f_char1 AS SIGNED INT),
33644 f_charbig = CONCAT('===',f_char1,'===');
33645 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33647 SET new.f_int1 = new.f_int1 + @max_row,
33648 new.f_int2 = new.f_int2 - @max_row,
33649 new.f_charbig = '####updated per update trigger####';
33652 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33653 f_charbig = '####updated per update statement itself####';
33655 # check trigger-10 success: 1
33656 DROP TRIGGER trg_2;
33657 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33658 f_int2 = CAST(f_char1 AS SIGNED INT),
33659 f_charbig = CONCAT('===',f_char1,'===');
33660 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33662 SET new.f_int1 = @my_max1 + @counter,
33663 new.f_int2 = @my_min2 - @counter,
33664 new.f_charbig = '####updated per insert trigger####';
33665 SET @counter = @counter + 1;
33668 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33669 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33670 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33671 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33672 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33674 DROP TRIGGER trg_3;
33676 # check trigger-11 success: 1
33678 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33679 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33680 AND f_charbig = '####updated per insert trigger####';
33681 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33683 SET new.f_int1 = @my_max1 + @counter,
33684 new.f_int2 = @my_min2 - @counter,
33685 new.f_charbig = '####updated per insert trigger####';
33686 SET @counter = @counter + 1;
33689 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33690 INSERT INTO t1 (f_char1, f_char2, f_charbig)
33691 SELECT CAST(f_int1 AS CHAR),
33692 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33693 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33695 DROP TRIGGER trg_3;
33697 # check trigger-12 success: 1
33699 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33700 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33701 AND f_charbig = '####updated per insert trigger####';
33703 Table Op Msg_type Msg_text
33704 test.t1 analyze status OK
33705 CHECK TABLE t1 EXTENDED;
33706 Table Op Msg_type Msg_text
33707 test.t1 check status OK
33708 CHECKSUM TABLE t1 EXTENDED;
33710 test.t1 <some_value>
33712 Table Op Msg_type Msg_text
33713 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
33714 test.t1 optimize status OK
33715 # check layout success: 1
33716 REPAIR TABLE t1 EXTENDED;
33717 Table Op Msg_type Msg_text
33718 test.t1 repair note The storage engine for the table doesn't support repair
33719 # check layout success: 1
33722 # check TRUNCATE success: 1
33723 # check layout success: 1
33724 # End usability test (inc/partition_check.inc)
33731 f_charbig VARCHAR(1000)
33732 , PRIMARY KEY (f_int1,f_int2)
33734 PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
33735 (PARTITION parta VALUES LESS THAN (0),
33736 PARTITION partb VALUES LESS THAN (5),
33737 PARTITION partc VALUES LESS THAN (10),
33738 PARTITION partd VALUES LESS THAN (2147483646));
33739 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33740 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33741 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
33742 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
33743 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33744 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33745 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
33746 # Start usability test (inc/partition_check.inc)
33748 SHOW CREATE TABLE t1;
33750 t1 CREATE TABLE `t1` (
33751 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
33752 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
33753 `f_char1` char(20) DEFAULT NULL,
33754 `f_char2` char(20) DEFAULT NULL,
33755 `f_charbig` varchar(1000) DEFAULT NULL,
33756 PRIMARY KEY (`f_int1`,`f_int2`)
33757 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
33758 /*!50100 PARTITION BY RANGE (f_int1)
33759 SUBPARTITION BY HASH (f_int2)
33761 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
33762 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
33763 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
33764 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
33766 # check prerequisites-1 success: 1
33767 # check COUNT(*) success: 1
33768 # check MIN/MAX(f_int1) success: 1
33769 # check MIN/MAX(f_int2) success: 1
33770 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33771 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33772 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
33773 WHERE f_int1 IN (2,3);
33774 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
33775 # check prerequisites-3 success: 1
33776 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
33777 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33778 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
33779 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
33780 WHERE f_int1 IN (2,3);
33781 DELETE FROM t1 WHERE f_charbig = 'delete me';
33782 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33783 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
33784 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
33785 WHERE f_int1 IN (2,3);
33786 DELETE FROM t1 WHERE f_charbig = 'delete me';
33787 # check read via f_int1 success: 1
33788 # check read via f_int2 success: 1
33790 # check multiple-1 success: 1
33791 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
33793 # check multiple-2 success: 1
33794 INSERT INTO t1 SELECT * FROM t0_template
33795 WHERE MOD(f_int1,3) = 0;
33797 # check multiple-3 success: 1
33798 UPDATE t1 SET f_int1 = f_int1 + @max_row
33799 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
33800 AND @max_row_div2 + @max_row_div4;
33802 # check multiple-4 success: 1
33804 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
33805 AND @max_row_div2 + @max_row_div4 + @max_row;
33807 # check multiple-5 success: 1
33808 SELECT COUNT(*) INTO @try_count FROM t0_template
33809 WHERE MOD(f_int1,3) = 0
33810 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
33811 SELECT COUNT(*) INTO @clash_count
33812 FROM t1 INNER JOIN t0_template USING(f_int1)
33813 WHERE MOD(f_int1,3) = 0
33814 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
33815 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
33817 SET f_int1 = @cur_value , f_int2 = @cur_value,
33818 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33819 f_charbig = '#SINGLE#';
33821 # check single-1 success: 1
33822 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
33824 SET f_int1 = @cur_value , f_int2 = @cur_value,
33825 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33826 f_charbig = '#SINGLE#';
33828 # check single-2 success: 1
33829 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
33830 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
33831 UPDATE t1 SET f_int1 = @cur_value2
33832 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
33834 # check single-3 success: 1
33835 SET @cur_value1= -1;
33836 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
33837 UPDATE t1 SET f_int1 = @cur_value1
33838 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
33840 # check single-4 success: 1
33841 SELECT MAX(f_int1) INTO @cur_value FROM t1;
33842 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
33844 # check single-5 success: 1
33845 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
33847 # check single-6 success: 1
33848 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
33850 Warning 1264 Out of range value for column 'f_int1' at row 1
33851 Warning 1264 Out of range value for column 'f_int2' at row 1
33853 # check single-7 success: 1
33854 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
33855 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
33856 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
33857 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
33858 f_charbig = '#NULL#';
33860 SET f_int1 = NULL , f_int2 = -@max_row,
33861 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
33862 f_charbig = '#NULL#';
33863 ERROR 23000: Column 'f_int1' cannot be null
33864 # check null success: 1
33866 WHERE f_int1 = 0 AND f_int2 = 0
33867 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
33868 AND f_charbig = '#NULL#';
33869 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33870 SELECT f_int1, f_int1, '', '', 'was inserted'
33871 FROM t0_template source_tab
33872 WHERE MOD(f_int1,3) = 0
33873 AND f_int1 BETWEEN @max_row_div2 AND @max_row
33875 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
33876 f_int2 = 2 * @max_row + source_tab.f_int1,
33877 f_charbig = 'was updated';
33879 # check unique-1-a success: 1
33881 # check unique-1-b success: 1
33882 DELETE FROM t1 WHERE f_charbig = 'was inserted';
33883 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33884 f_int2 = CAST(f_char1 AS SIGNED INT),
33885 f_charbig = CONCAT('===',f_char1,'===')
33886 WHERE f_charbig = 'was updated';
33887 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33888 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
33889 FROM t0_template source_tab
33890 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
33892 # check replace success: 1
33894 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
33896 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
33897 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
33898 UPDATE t1 SET f_int2 = f_int1,
33899 f_char1 = CAST(f_int1 AS CHAR),
33900 f_char2 = CAST(f_int1 AS CHAR),
33901 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
33902 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
33904 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33905 SELECT f_int1, f_int1, '', '', 'was inserted'
33906 FROM t0_template source_tab
33907 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33909 # check transactions-1 success: 1
33912 # check transactions-2 success: 1
33915 # check transactions-3 success: 1
33916 DELETE FROM t1 WHERE f_charbig = 'was inserted';
33920 # check transactions-4 success: 1
33921 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33922 SELECT f_int1, f_int1, '', '', 'was inserted'
33923 FROM t0_template source_tab
33924 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33926 # check transactions-5 success: 1
33929 # check transactions-6 success: 1
33930 # INFO: Storage engine used for t1 seems to be transactional.
33933 # check transactions-7 success: 1
33934 DELETE FROM t1 WHERE f_charbig = 'was inserted';
33936 SET @@session.sql_mode = 'traditional';
33937 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
33938 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33939 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
33940 '', '', 'was inserted' FROM t0_template
33941 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33942 ERROR 22012: Division by 0
33945 # check transactions-8 success: 1
33946 # INFO: Storage engine used for t1 seems to be able to revert
33947 # changes made by the failing statement.
33948 SET @@session.sql_mode = '';
33950 DELETE FROM t1 WHERE f_charbig = 'was inserted';
33952 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
33954 # check special-1 success: 1
33955 UPDATE t1 SET f_charbig = '';
33957 # check special-2 success: 1
33958 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
33959 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33960 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
33961 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33962 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33963 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33964 'just inserted' FROM t0_template
33965 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33966 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
33968 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33969 f_charbig = 'updated by trigger'
33970 WHERE f_int1 = new.f_int1;
33972 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33973 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33974 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33976 # check trigger-1 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);
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 INSERT ON t0_aux FOR EACH ROW
33990 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33991 f_charbig = 'updated by trigger'
33992 WHERE f_int1 = new.f_int1;
33994 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33995 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33996 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33998 # check trigger-2 success: 1
33999 DROP TRIGGER trg_1;
34000 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34001 f_int2 = CAST(f_char1 AS SIGNED INT),
34002 f_charbig = 'just inserted'
34003 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34005 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34006 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34007 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34008 'just inserted' FROM t0_template
34009 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34010 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34012 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34013 f_charbig = 'updated by trigger'
34014 WHERE f_int1 = new.f_int1;
34016 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34017 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34019 # check trigger-3 success: 1
34020 DROP TRIGGER trg_1;
34021 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34022 f_int2 = CAST(f_char1 AS SIGNED INT),
34023 f_charbig = 'just inserted'
34024 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34026 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34027 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34028 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34029 'just inserted' FROM t0_template
34030 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34031 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34033 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34034 f_charbig = 'updated by trigger'
34035 WHERE f_int1 = - old.f_int1;
34037 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34038 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34040 # check trigger-4 success: 1
34041 DROP TRIGGER trg_1;
34042 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34043 f_int2 = CAST(f_char1 AS SIGNED INT),
34044 f_charbig = 'just inserted'
34045 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34047 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34048 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34049 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34050 'just inserted' FROM t0_template
34051 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34052 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34054 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34055 f_charbig = 'updated by trigger'
34056 WHERE f_int1 = new.f_int1;
34058 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34059 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34061 # check trigger-5 success: 1
34062 DROP TRIGGER trg_1;
34063 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34064 f_int2 = CAST(f_char1 AS SIGNED INT),
34065 f_charbig = 'just inserted'
34066 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34068 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34069 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34070 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34071 'just inserted' FROM t0_template
34072 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34073 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34075 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34076 f_charbig = 'updated by trigger'
34077 WHERE f_int1 = - old.f_int1;
34079 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34080 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34082 # check trigger-6 success: 1
34083 DROP TRIGGER trg_1;
34084 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34085 f_int2 = CAST(f_char1 AS SIGNED INT),
34086 f_charbig = 'just inserted'
34087 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34089 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34090 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34091 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34092 'just inserted' FROM t0_template
34093 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34094 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
34096 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34097 f_charbig = 'updated by trigger'
34098 WHERE f_int1 = - old.f_int1;
34101 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34103 # check trigger-7 success: 1
34104 DROP TRIGGER trg_1;
34105 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34106 f_int2 = CAST(f_char1 AS SIGNED INT),
34107 f_charbig = 'just inserted'
34108 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34110 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34111 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34112 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34113 'just inserted' FROM t0_template
34114 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34115 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
34117 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34118 f_charbig = 'updated by trigger'
34119 WHERE f_int1 = - old.f_int1;
34122 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34124 # check trigger-8 success: 1
34125 DROP TRIGGER trg_1;
34126 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34127 f_int2 = CAST(f_char1 AS SIGNED INT),
34128 f_charbig = 'just inserted'
34129 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34131 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34133 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34134 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34136 SET new.f_int1 = old.f_int1 + @max_row,
34137 new.f_int2 = old.f_int2 - @max_row,
34138 new.f_charbig = '####updated per update trigger####';
34141 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34142 f_charbig = '####updated per update statement itself####';
34144 # check trigger-9 success: 1
34145 DROP TRIGGER trg_2;
34146 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34147 f_int2 = CAST(f_char1 AS SIGNED INT),
34148 f_charbig = CONCAT('===',f_char1,'===');
34149 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34151 SET new.f_int1 = new.f_int1 + @max_row,
34152 new.f_int2 = new.f_int2 - @max_row,
34153 new.f_charbig = '####updated per update trigger####';
34156 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34157 f_charbig = '####updated per update statement itself####';
34159 # check trigger-10 success: 1
34160 DROP TRIGGER trg_2;
34161 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34162 f_int2 = CAST(f_char1 AS SIGNED INT),
34163 f_charbig = CONCAT('===',f_char1,'===');
34164 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34166 SET new.f_int1 = @my_max1 + @counter,
34167 new.f_int2 = @my_min2 - @counter,
34168 new.f_charbig = '####updated per insert trigger####';
34169 SET @counter = @counter + 1;
34172 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34173 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34174 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34175 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34176 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34178 DROP TRIGGER trg_3;
34180 # check trigger-11 success: 1
34182 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34183 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34184 AND f_charbig = '####updated per insert trigger####';
34185 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34187 SET new.f_int1 = @my_max1 + @counter,
34188 new.f_int2 = @my_min2 - @counter,
34189 new.f_charbig = '####updated per insert trigger####';
34190 SET @counter = @counter + 1;
34193 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34194 INSERT INTO t1 (f_char1, f_char2, f_charbig)
34195 SELECT CAST(f_int1 AS CHAR),
34196 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34197 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34199 DROP TRIGGER trg_3;
34201 # check trigger-12 success: 1
34203 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34204 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34205 AND f_charbig = '####updated per insert trigger####';
34207 Table Op Msg_type Msg_text
34208 test.t1 analyze status OK
34209 CHECK TABLE t1 EXTENDED;
34210 Table Op Msg_type Msg_text
34211 test.t1 check status OK
34212 CHECKSUM TABLE t1 EXTENDED;
34214 test.t1 <some_value>
34216 Table Op Msg_type Msg_text
34217 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
34218 test.t1 optimize status OK
34219 # check layout success: 1
34220 REPAIR TABLE t1 EXTENDED;
34221 Table Op Msg_type Msg_text
34222 test.t1 repair note The storage engine for the table doesn't support repair
34223 # check layout success: 1
34226 # check TRUNCATE success: 1
34227 # check layout success: 1
34228 # End usability test (inc/partition_check.inc)
34235 f_charbig VARCHAR(1000)
34236 , PRIMARY KEY (f_int1,f_int2)
34238 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
34239 (PARTITION part1 VALUES LESS THAN (0)
34240 (SUBPARTITION subpart11, SUBPARTITION subpart12),
34241 PARTITION part2 VALUES LESS THAN (5)
34242 (SUBPARTITION subpart21, SUBPARTITION subpart22),
34243 PARTITION part3 VALUES LESS THAN (10)
34244 (SUBPARTITION subpart31, SUBPARTITION subpart32),
34245 PARTITION part4 VALUES LESS THAN (2147483646)
34246 (SUBPARTITION subpart41, SUBPARTITION subpart42));
34247 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34248 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34249 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
34250 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
34251 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34252 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34253 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
34254 # Start usability test (inc/partition_check.inc)
34256 SHOW CREATE TABLE t1;
34258 t1 CREATE TABLE `t1` (
34259 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
34260 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
34261 `f_char1` char(20) DEFAULT NULL,
34262 `f_char2` char(20) DEFAULT NULL,
34263 `f_charbig` varchar(1000) DEFAULT NULL,
34264 PRIMARY KEY (`f_int1`,`f_int2`)
34265 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
34266 /*!50100 PARTITION BY RANGE (f_int1)
34267 SUBPARTITION BY KEY (f_int2)
34268 (PARTITION part1 VALUES LESS THAN (0)
34269 (SUBPARTITION subpart11 ENGINE = InnoDB,
34270 SUBPARTITION subpart12 ENGINE = InnoDB),
34271 PARTITION part2 VALUES LESS THAN (5)
34272 (SUBPARTITION subpart21 ENGINE = InnoDB,
34273 SUBPARTITION subpart22 ENGINE = InnoDB),
34274 PARTITION part3 VALUES LESS THAN (10)
34275 (SUBPARTITION subpart31 ENGINE = InnoDB,
34276 SUBPARTITION subpart32 ENGINE = InnoDB),
34277 PARTITION part4 VALUES LESS THAN (2147483646)
34278 (SUBPARTITION subpart41 ENGINE = InnoDB,
34279 SUBPARTITION subpart42 ENGINE = InnoDB)) */
34281 # check prerequisites-1 success: 1
34282 # check COUNT(*) success: 1
34283 # check MIN/MAX(f_int1) success: 1
34284 # check MIN/MAX(f_int2) success: 1
34285 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34286 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34287 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
34288 WHERE f_int1 IN (2,3);
34289 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
34290 # check prerequisites-3 success: 1
34291 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
34292 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34293 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
34294 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
34295 WHERE f_int1 IN (2,3);
34296 DELETE FROM t1 WHERE f_charbig = 'delete me';
34297 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34298 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
34299 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
34300 WHERE f_int1 IN (2,3);
34301 DELETE FROM t1 WHERE f_charbig = 'delete me';
34302 # check read via f_int1 success: 1
34303 # check read via f_int2 success: 1
34305 # check multiple-1 success: 1
34306 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
34308 # check multiple-2 success: 1
34309 INSERT INTO t1 SELECT * FROM t0_template
34310 WHERE MOD(f_int1,3) = 0;
34312 # check multiple-3 success: 1
34313 UPDATE t1 SET f_int1 = f_int1 + @max_row
34314 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
34315 AND @max_row_div2 + @max_row_div4;
34317 # check multiple-4 success: 1
34319 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
34320 AND @max_row_div2 + @max_row_div4 + @max_row;
34322 # check multiple-5 success: 1
34323 SELECT COUNT(*) INTO @try_count FROM t0_template
34324 WHERE MOD(f_int1,3) = 0
34325 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
34326 SELECT COUNT(*) INTO @clash_count
34327 FROM t1 INNER JOIN t0_template USING(f_int1)
34328 WHERE MOD(f_int1,3) = 0
34329 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
34330 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
34332 SET f_int1 = @cur_value , f_int2 = @cur_value,
34333 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34334 f_charbig = '#SINGLE#';
34336 # check single-1 success: 1
34337 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
34339 SET f_int1 = @cur_value , f_int2 = @cur_value,
34340 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34341 f_charbig = '#SINGLE#';
34343 # check single-2 success: 1
34344 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
34345 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
34346 UPDATE t1 SET f_int1 = @cur_value2
34347 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
34349 # check single-3 success: 1
34350 SET @cur_value1= -1;
34351 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
34352 UPDATE t1 SET f_int1 = @cur_value1
34353 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
34355 # check single-4 success: 1
34356 SELECT MAX(f_int1) INTO @cur_value FROM t1;
34357 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
34359 # check single-5 success: 1
34360 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
34362 # check single-6 success: 1
34363 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
34365 Warning 1264 Out of range value for column 'f_int1' at row 1
34366 Warning 1264 Out of range value for column 'f_int2' at row 1
34368 # check single-7 success: 1
34369 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
34370 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
34371 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
34372 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
34373 f_charbig = '#NULL#';
34375 SET f_int1 = NULL , f_int2 = -@max_row,
34376 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
34377 f_charbig = '#NULL#';
34378 ERROR 23000: Column 'f_int1' cannot be null
34379 # check null success: 1
34381 WHERE f_int1 = 0 AND f_int2 = 0
34382 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
34383 AND f_charbig = '#NULL#';
34384 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34385 SELECT f_int1, f_int1, '', '', 'was inserted'
34386 FROM t0_template source_tab
34387 WHERE MOD(f_int1,3) = 0
34388 AND f_int1 BETWEEN @max_row_div2 AND @max_row
34390 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
34391 f_int2 = 2 * @max_row + source_tab.f_int1,
34392 f_charbig = 'was updated';
34394 # check unique-1-a success: 1
34396 # check unique-1-b success: 1
34397 DELETE FROM t1 WHERE f_charbig = 'was inserted';
34398 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34399 f_int2 = CAST(f_char1 AS SIGNED INT),
34400 f_charbig = CONCAT('===',f_char1,'===')
34401 WHERE f_charbig = 'was updated';
34402 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34403 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
34404 FROM t0_template source_tab
34405 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
34407 # check replace success: 1
34409 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
34411 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
34412 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
34413 UPDATE t1 SET f_int2 = f_int1,
34414 f_char1 = CAST(f_int1 AS CHAR),
34415 f_char2 = CAST(f_int1 AS CHAR),
34416 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
34417 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
34419 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34420 SELECT f_int1, f_int1, '', '', 'was inserted'
34421 FROM t0_template source_tab
34422 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34424 # check transactions-1 success: 1
34427 # check transactions-2 success: 1
34430 # check transactions-3 success: 1
34431 DELETE FROM t1 WHERE f_charbig = 'was inserted';
34435 # check transactions-4 success: 1
34436 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34437 SELECT f_int1, f_int1, '', '', 'was inserted'
34438 FROM t0_template source_tab
34439 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34441 # check transactions-5 success: 1
34444 # check transactions-6 success: 1
34445 # INFO: Storage engine used for t1 seems to be transactional.
34448 # check transactions-7 success: 1
34449 DELETE FROM t1 WHERE f_charbig = 'was inserted';
34451 SET @@session.sql_mode = 'traditional';
34452 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
34453 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34454 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
34455 '', '', 'was inserted' FROM t0_template
34456 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34457 ERROR 22012: Division by 0
34460 # check transactions-8 success: 1
34461 # INFO: Storage engine used for t1 seems to be able to revert
34462 # changes made by the failing statement.
34463 SET @@session.sql_mode = '';
34465 DELETE FROM t1 WHERE f_charbig = 'was inserted';
34467 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
34469 # check special-1 success: 1
34470 UPDATE t1 SET f_charbig = '';
34472 # check special-2 success: 1
34473 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
34474 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34475 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
34476 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34477 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34478 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34479 'just inserted' FROM t0_template
34480 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34481 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
34483 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34484 f_charbig = 'updated by trigger'
34485 WHERE f_int1 = new.f_int1;
34487 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34488 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34489 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34491 # check trigger-1 success: 1
34492 DROP TRIGGER trg_1;
34493 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34494 f_int2 = CAST(f_char1 AS SIGNED INT),
34495 f_charbig = 'just inserted'
34496 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34498 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34499 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34500 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34501 'just inserted' FROM t0_template
34502 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34503 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
34505 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34506 f_charbig = 'updated by trigger'
34507 WHERE f_int1 = new.f_int1;
34509 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34510 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34511 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34513 # check trigger-2 success: 1
34514 DROP TRIGGER trg_1;
34515 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34516 f_int2 = CAST(f_char1 AS SIGNED INT),
34517 f_charbig = 'just inserted'
34518 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34520 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34521 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34522 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34523 'just inserted' FROM t0_template
34524 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34525 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34527 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34528 f_charbig = 'updated by trigger'
34529 WHERE f_int1 = new.f_int1;
34531 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34532 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34534 # check trigger-3 success: 1
34535 DROP TRIGGER trg_1;
34536 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34537 f_int2 = CAST(f_char1 AS SIGNED INT),
34538 f_charbig = 'just inserted'
34539 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34541 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34542 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34543 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34544 'just inserted' FROM t0_template
34545 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34546 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34548 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34549 f_charbig = 'updated by trigger'
34550 WHERE f_int1 = - old.f_int1;
34552 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34553 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34555 # check trigger-4 success: 1
34556 DROP TRIGGER trg_1;
34557 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34558 f_int2 = CAST(f_char1 AS SIGNED INT),
34559 f_charbig = 'just inserted'
34560 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34562 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34563 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34564 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34565 'just inserted' FROM t0_template
34566 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34567 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34569 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34570 f_charbig = 'updated by trigger'
34571 WHERE f_int1 = new.f_int1;
34573 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34574 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34576 # check trigger-5 success: 1
34577 DROP TRIGGER trg_1;
34578 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34579 f_int2 = CAST(f_char1 AS SIGNED INT),
34580 f_charbig = 'just inserted'
34581 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34583 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34584 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34585 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34586 'just inserted' FROM t0_template
34587 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34588 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34590 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34591 f_charbig = 'updated by trigger'
34592 WHERE f_int1 = - old.f_int1;
34594 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34595 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34597 # check trigger-6 success: 1
34598 DROP TRIGGER trg_1;
34599 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34600 f_int2 = CAST(f_char1 AS SIGNED INT),
34601 f_charbig = 'just inserted'
34602 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34604 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34605 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34606 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34607 'just inserted' FROM t0_template
34608 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34609 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
34611 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34612 f_charbig = 'updated by trigger'
34613 WHERE f_int1 = - old.f_int1;
34616 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34618 # check trigger-7 success: 1
34619 DROP TRIGGER trg_1;
34620 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34621 f_int2 = CAST(f_char1 AS SIGNED INT),
34622 f_charbig = 'just inserted'
34623 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34625 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34626 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34627 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34628 'just inserted' FROM t0_template
34629 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34630 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
34632 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34633 f_charbig = 'updated by trigger'
34634 WHERE f_int1 = - old.f_int1;
34637 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34639 # check trigger-8 success: 1
34640 DROP TRIGGER trg_1;
34641 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34642 f_int2 = CAST(f_char1 AS SIGNED INT),
34643 f_charbig = 'just inserted'
34644 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34646 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34648 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34649 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34651 SET new.f_int1 = old.f_int1 + @max_row,
34652 new.f_int2 = old.f_int2 - @max_row,
34653 new.f_charbig = '####updated per update trigger####';
34656 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34657 f_charbig = '####updated per update statement itself####';
34659 # check trigger-9 success: 1
34660 DROP TRIGGER trg_2;
34661 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34662 f_int2 = CAST(f_char1 AS SIGNED INT),
34663 f_charbig = CONCAT('===',f_char1,'===');
34664 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34666 SET new.f_int1 = new.f_int1 + @max_row,
34667 new.f_int2 = new.f_int2 - @max_row,
34668 new.f_charbig = '####updated per update trigger####';
34671 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34672 f_charbig = '####updated per update statement itself####';
34674 # check trigger-10 success: 1
34675 DROP TRIGGER trg_2;
34676 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34677 f_int2 = CAST(f_char1 AS SIGNED INT),
34678 f_charbig = CONCAT('===',f_char1,'===');
34679 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34681 SET new.f_int1 = @my_max1 + @counter,
34682 new.f_int2 = @my_min2 - @counter,
34683 new.f_charbig = '####updated per insert trigger####';
34684 SET @counter = @counter + 1;
34687 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34688 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34689 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34690 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34691 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34693 DROP TRIGGER trg_3;
34695 # check trigger-11 success: 1
34697 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34698 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34699 AND f_charbig = '####updated per insert trigger####';
34700 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34702 SET new.f_int1 = @my_max1 + @counter,
34703 new.f_int2 = @my_min2 - @counter,
34704 new.f_charbig = '####updated per insert trigger####';
34705 SET @counter = @counter + 1;
34708 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34709 INSERT INTO t1 (f_char1, f_char2, f_charbig)
34710 SELECT CAST(f_int1 AS CHAR),
34711 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34712 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34714 DROP TRIGGER trg_3;
34716 # check trigger-12 success: 1
34718 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34719 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34720 AND f_charbig = '####updated per insert trigger####';
34722 Table Op Msg_type Msg_text
34723 test.t1 analyze status OK
34724 CHECK TABLE t1 EXTENDED;
34725 Table Op Msg_type Msg_text
34726 test.t1 check status OK
34727 CHECKSUM TABLE t1 EXTENDED;
34729 test.t1 <some_value>
34731 Table Op Msg_type Msg_text
34732 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
34733 test.t1 optimize status OK
34734 # check layout success: 1
34735 REPAIR TABLE t1 EXTENDED;
34736 Table Op Msg_type Msg_text
34737 test.t1 repair note The storage engine for the table doesn't support repair
34738 # check layout success: 1
34741 # check TRUNCATE success: 1
34742 # check layout success: 1
34743 # End usability test (inc/partition_check.inc)
34750 f_charbig VARCHAR(1000)
34751 , PRIMARY KEY (f_int1,f_int2)
34753 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
34754 (PARTITION part1 VALUES IN (0)
34755 (SUBPARTITION sp11, SUBPARTITION sp12),
34756 PARTITION part2 VALUES IN (1)
34757 (SUBPARTITION sp21, SUBPARTITION sp22),
34758 PARTITION part3 VALUES IN (2)
34759 (SUBPARTITION sp31, SUBPARTITION sp32),
34760 PARTITION part4 VALUES IN (NULL)
34761 (SUBPARTITION sp41, SUBPARTITION sp42));
34762 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34763 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34764 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
34765 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
34766 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34767 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34768 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
34769 # Start usability test (inc/partition_check.inc)
34771 SHOW CREATE TABLE t1;
34773 t1 CREATE TABLE `t1` (
34774 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
34775 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
34776 `f_char1` char(20) DEFAULT NULL,
34777 `f_char2` char(20) DEFAULT NULL,
34778 `f_charbig` varchar(1000) DEFAULT NULL,
34779 PRIMARY KEY (`f_int1`,`f_int2`)
34780 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
34781 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
34782 SUBPARTITION BY HASH (f_int2 + 1)
34783 (PARTITION part1 VALUES IN (0)
34784 (SUBPARTITION sp11 ENGINE = InnoDB,
34785 SUBPARTITION sp12 ENGINE = InnoDB),
34786 PARTITION part2 VALUES IN (1)
34787 (SUBPARTITION sp21 ENGINE = InnoDB,
34788 SUBPARTITION sp22 ENGINE = InnoDB),
34789 PARTITION part3 VALUES IN (2)
34790 (SUBPARTITION sp31 ENGINE = InnoDB,
34791 SUBPARTITION sp32 ENGINE = InnoDB),
34792 PARTITION part4 VALUES IN (NULL)
34793 (SUBPARTITION sp41 ENGINE = InnoDB,
34794 SUBPARTITION sp42 ENGINE = InnoDB)) */
34796 # check prerequisites-1 success: 1
34797 # check COUNT(*) success: 1
34798 # check MIN/MAX(f_int1) success: 1
34799 # check MIN/MAX(f_int2) success: 1
34800 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34801 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34802 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
34803 WHERE f_int1 IN (2,3);
34804 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
34805 # check prerequisites-3 success: 1
34806 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
34807 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34808 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
34809 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
34810 WHERE f_int1 IN (2,3);
34811 DELETE FROM t1 WHERE f_charbig = 'delete me';
34812 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34813 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
34814 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
34815 WHERE f_int1 IN (2,3);
34816 DELETE FROM t1 WHERE f_charbig = 'delete me';
34817 # check read via f_int1 success: 1
34818 # check read via f_int2 success: 1
34820 # check multiple-1 success: 1
34821 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
34823 # check multiple-2 success: 1
34824 INSERT INTO t1 SELECT * FROM t0_template
34825 WHERE MOD(f_int1,3) = 0;
34827 # check multiple-3 success: 1
34828 UPDATE t1 SET f_int1 = f_int1 + @max_row
34829 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
34830 AND @max_row_div2 + @max_row_div4;
34832 # check multiple-4 success: 1
34834 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
34835 AND @max_row_div2 + @max_row_div4 + @max_row;
34837 # check multiple-5 success: 1
34838 SELECT COUNT(*) INTO @try_count FROM t0_template
34839 WHERE MOD(f_int1,3) = 0
34840 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
34841 SELECT COUNT(*) INTO @clash_count
34842 FROM t1 INNER JOIN t0_template USING(f_int1)
34843 WHERE MOD(f_int1,3) = 0
34844 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
34845 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
34847 SET f_int1 = @cur_value , f_int2 = @cur_value,
34848 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34849 f_charbig = '#SINGLE#';
34851 # check single-1 success: 1
34852 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
34854 SET f_int1 = @cur_value , f_int2 = @cur_value,
34855 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34856 f_charbig = '#SINGLE#';
34858 # check single-2 success: 1
34859 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
34860 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
34861 UPDATE t1 SET f_int1 = @cur_value2
34862 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
34864 # check single-3 success: 1
34865 SET @cur_value1= -1;
34866 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
34867 UPDATE t1 SET f_int1 = @cur_value1
34868 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
34870 # check single-4 success: 1
34871 SELECT MAX(f_int1) INTO @cur_value FROM t1;
34872 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
34874 # check single-5 success: 1
34875 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
34877 # check single-6 success: 1
34878 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
34880 Warning 1264 Out of range value for column 'f_int1' at row 1
34881 Warning 1264 Out of range value for column 'f_int2' at row 1
34883 # check single-7 success: 1
34884 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
34885 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
34886 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
34887 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
34888 f_charbig = '#NULL#';
34890 SET f_int1 = NULL , f_int2 = -@max_row,
34891 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
34892 f_charbig = '#NULL#';
34893 ERROR 23000: Column 'f_int1' cannot be null
34894 # check null success: 1
34896 WHERE f_int1 = 0 AND f_int2 = 0
34897 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
34898 AND f_charbig = '#NULL#';
34899 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34900 SELECT f_int1, f_int1, '', '', 'was inserted'
34901 FROM t0_template source_tab
34902 WHERE MOD(f_int1,3) = 0
34903 AND f_int1 BETWEEN @max_row_div2 AND @max_row
34905 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
34906 f_int2 = 2 * @max_row + source_tab.f_int1,
34907 f_charbig = 'was updated';
34909 # check unique-1-a success: 1
34911 # check unique-1-b success: 1
34912 DELETE FROM t1 WHERE f_charbig = 'was inserted';
34913 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34914 f_int2 = CAST(f_char1 AS SIGNED INT),
34915 f_charbig = CONCAT('===',f_char1,'===')
34916 WHERE f_charbig = 'was updated';
34917 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34918 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
34919 FROM t0_template source_tab
34920 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
34922 # check replace success: 1
34924 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
34926 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
34927 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
34928 UPDATE t1 SET f_int2 = f_int1,
34929 f_char1 = CAST(f_int1 AS CHAR),
34930 f_char2 = CAST(f_int1 AS CHAR),
34931 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
34932 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
34934 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34935 SELECT f_int1, f_int1, '', '', 'was inserted'
34936 FROM t0_template source_tab
34937 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34939 # check transactions-1 success: 1
34942 # check transactions-2 success: 1
34945 # check transactions-3 success: 1
34946 DELETE FROM t1 WHERE f_charbig = 'was inserted';
34950 # check transactions-4 success: 1
34951 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34952 SELECT f_int1, f_int1, '', '', 'was inserted'
34953 FROM t0_template source_tab
34954 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34956 # check transactions-5 success: 1
34959 # check transactions-6 success: 1
34960 # INFO: Storage engine used for t1 seems to be transactional.
34963 # check transactions-7 success: 1
34964 DELETE FROM t1 WHERE f_charbig = 'was inserted';
34966 SET @@session.sql_mode = 'traditional';
34967 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
34968 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34969 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
34970 '', '', 'was inserted' FROM t0_template
34971 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34972 ERROR 22012: Division by 0
34975 # check transactions-8 success: 1
34976 # INFO: Storage engine used for t1 seems to be able to revert
34977 # changes made by the failing statement.
34978 SET @@session.sql_mode = '';
34980 DELETE FROM t1 WHERE f_charbig = 'was inserted';
34982 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
34984 # check special-1 success: 1
34985 UPDATE t1 SET f_charbig = '';
34987 # check special-2 success: 1
34988 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
34989 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34990 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
34991 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34992 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34993 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34994 'just inserted' FROM t0_template
34995 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34996 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
34998 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34999 f_charbig = 'updated by trigger'
35000 WHERE f_int1 = new.f_int1;
35002 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35003 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35004 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35006 # check trigger-1 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);
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 INSERT ON t0_aux FOR EACH ROW
35020 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35021 f_charbig = 'updated by trigger'
35022 WHERE f_int1 = new.f_int1;
35024 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35025 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35026 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35028 # check trigger-2 success: 1
35029 DROP TRIGGER trg_1;
35030 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35031 f_int2 = CAST(f_char1 AS SIGNED INT),
35032 f_charbig = 'just inserted'
35033 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35035 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35036 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35037 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35038 'just inserted' FROM t0_template
35039 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35040 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35042 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35043 f_charbig = 'updated by trigger'
35044 WHERE f_int1 = new.f_int1;
35046 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35047 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35049 # check trigger-3 success: 1
35050 DROP TRIGGER trg_1;
35051 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35052 f_int2 = CAST(f_char1 AS SIGNED INT),
35053 f_charbig = 'just inserted'
35054 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35056 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35057 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35058 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35059 'just inserted' FROM t0_template
35060 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35061 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35063 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35064 f_charbig = 'updated by trigger'
35065 WHERE f_int1 = - old.f_int1;
35067 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35068 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35070 # check trigger-4 success: 1
35071 DROP TRIGGER trg_1;
35072 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35073 f_int2 = CAST(f_char1 AS SIGNED INT),
35074 f_charbig = 'just inserted'
35075 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35077 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35078 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35079 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35080 'just inserted' FROM t0_template
35081 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35082 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35084 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35085 f_charbig = 'updated by trigger'
35086 WHERE f_int1 = new.f_int1;
35088 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35089 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35091 # check trigger-5 success: 1
35092 DROP TRIGGER trg_1;
35093 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35094 f_int2 = CAST(f_char1 AS SIGNED INT),
35095 f_charbig = 'just inserted'
35096 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35098 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35099 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35100 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35101 'just inserted' FROM t0_template
35102 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35103 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35105 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35106 f_charbig = 'updated by trigger'
35107 WHERE f_int1 = - old.f_int1;
35109 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35110 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35112 # check trigger-6 success: 1
35113 DROP TRIGGER trg_1;
35114 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35115 f_int2 = CAST(f_char1 AS SIGNED INT),
35116 f_charbig = 'just inserted'
35117 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35119 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35120 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35121 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35122 'just inserted' FROM t0_template
35123 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35124 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
35126 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35127 f_charbig = 'updated by trigger'
35128 WHERE f_int1 = - old.f_int1;
35131 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35133 # check trigger-7 success: 1
35134 DROP TRIGGER trg_1;
35135 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35136 f_int2 = CAST(f_char1 AS SIGNED INT),
35137 f_charbig = 'just inserted'
35138 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35140 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35141 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35142 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35143 'just inserted' FROM t0_template
35144 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35145 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
35147 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35148 f_charbig = 'updated by trigger'
35149 WHERE f_int1 = - old.f_int1;
35152 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35154 # check trigger-8 success: 1
35155 DROP TRIGGER trg_1;
35156 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35157 f_int2 = CAST(f_char1 AS SIGNED INT),
35158 f_charbig = 'just inserted'
35159 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35161 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35163 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35164 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35166 SET new.f_int1 = old.f_int1 + @max_row,
35167 new.f_int2 = old.f_int2 - @max_row,
35168 new.f_charbig = '####updated per update trigger####';
35171 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35172 f_charbig = '####updated per update statement itself####';
35174 # check trigger-9 success: 1
35175 DROP TRIGGER trg_2;
35176 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35177 f_int2 = CAST(f_char1 AS SIGNED INT),
35178 f_charbig = CONCAT('===',f_char1,'===');
35179 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35181 SET new.f_int1 = new.f_int1 + @max_row,
35182 new.f_int2 = new.f_int2 - @max_row,
35183 new.f_charbig = '####updated per update trigger####';
35186 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35187 f_charbig = '####updated per update statement itself####';
35189 # check trigger-10 success: 1
35190 DROP TRIGGER trg_2;
35191 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35192 f_int2 = CAST(f_char1 AS SIGNED INT),
35193 f_charbig = CONCAT('===',f_char1,'===');
35194 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35196 SET new.f_int1 = @my_max1 + @counter,
35197 new.f_int2 = @my_min2 - @counter,
35198 new.f_charbig = '####updated per insert trigger####';
35199 SET @counter = @counter + 1;
35202 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35203 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35204 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35205 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35206 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35208 DROP TRIGGER trg_3;
35210 # check trigger-11 success: 1
35212 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35213 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35214 AND f_charbig = '####updated per insert trigger####';
35215 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35217 SET new.f_int1 = @my_max1 + @counter,
35218 new.f_int2 = @my_min2 - @counter,
35219 new.f_charbig = '####updated per insert trigger####';
35220 SET @counter = @counter + 1;
35223 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35224 INSERT INTO t1 (f_char1, f_char2, f_charbig)
35225 SELECT CAST(f_int1 AS CHAR),
35226 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35227 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35229 DROP TRIGGER trg_3;
35231 # check trigger-12 success: 1
35233 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35234 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35235 AND f_charbig = '####updated per insert trigger####';
35237 Table Op Msg_type Msg_text
35238 test.t1 analyze status OK
35239 CHECK TABLE t1 EXTENDED;
35240 Table Op Msg_type Msg_text
35241 test.t1 check status OK
35242 CHECKSUM TABLE t1 EXTENDED;
35244 test.t1 <some_value>
35246 Table Op Msg_type Msg_text
35247 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
35248 test.t1 optimize status OK
35249 # check layout success: 1
35250 REPAIR TABLE t1 EXTENDED;
35251 Table Op Msg_type Msg_text
35252 test.t1 repair note The storage engine for the table doesn't support repair
35253 # check layout success: 1
35256 # check TRUNCATE success: 1
35257 # check layout success: 1
35258 # End usability test (inc/partition_check.inc)
35265 f_charbig VARCHAR(1000)
35266 , PRIMARY KEY (f_int1,f_int2)
35268 PARTITION BY LIST(ABS(MOD(f_int1,2)))
35269 SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
35270 (PARTITION part1 VALUES IN (0),
35271 PARTITION part2 VALUES IN (1),
35272 PARTITION part3 VALUES IN (NULL));
35273 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35274 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35275 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
35276 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
35277 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35278 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35279 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
35280 # Start usability test (inc/partition_check.inc)
35282 SHOW CREATE TABLE t1;
35284 t1 CREATE TABLE `t1` (
35285 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
35286 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
35287 `f_char1` char(20) DEFAULT NULL,
35288 `f_char2` char(20) DEFAULT NULL,
35289 `f_charbig` varchar(1000) DEFAULT NULL,
35290 PRIMARY KEY (`f_int1`,`f_int2`)
35291 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
35292 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
35293 SUBPARTITION BY KEY (f_int2)
35295 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
35296 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
35297 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
35299 # check prerequisites-1 success: 1
35300 # check COUNT(*) success: 1
35301 # check MIN/MAX(f_int1) success: 1
35302 # check MIN/MAX(f_int2) success: 1
35303 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35304 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35305 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
35306 WHERE f_int1 IN (2,3);
35307 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
35308 # check prerequisites-3 success: 1
35309 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
35310 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35311 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
35312 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
35313 WHERE f_int1 IN (2,3);
35314 DELETE FROM t1 WHERE f_charbig = 'delete me';
35315 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35316 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
35317 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
35318 WHERE f_int1 IN (2,3);
35319 DELETE FROM t1 WHERE f_charbig = 'delete me';
35320 # check read via f_int1 success: 1
35321 # check read via f_int2 success: 1
35323 # check multiple-1 success: 1
35324 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
35326 # check multiple-2 success: 1
35327 INSERT INTO t1 SELECT * FROM t0_template
35328 WHERE MOD(f_int1,3) = 0;
35330 # check multiple-3 success: 1
35331 UPDATE t1 SET f_int1 = f_int1 + @max_row
35332 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
35333 AND @max_row_div2 + @max_row_div4;
35335 # check multiple-4 success: 1
35337 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
35338 AND @max_row_div2 + @max_row_div4 + @max_row;
35340 # check multiple-5 success: 1
35341 SELECT COUNT(*) INTO @try_count FROM t0_template
35342 WHERE MOD(f_int1,3) = 0
35343 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
35344 SELECT COUNT(*) INTO @clash_count
35345 FROM t1 INNER JOIN t0_template USING(f_int1)
35346 WHERE MOD(f_int1,3) = 0
35347 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
35348 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
35350 SET f_int1 = @cur_value , f_int2 = @cur_value,
35351 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35352 f_charbig = '#SINGLE#';
35354 # check single-1 success: 1
35355 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
35357 SET f_int1 = @cur_value , f_int2 = @cur_value,
35358 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35359 f_charbig = '#SINGLE#';
35361 # check single-2 success: 1
35362 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
35363 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
35364 UPDATE t1 SET f_int1 = @cur_value2
35365 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
35367 # check single-3 success: 1
35368 SET @cur_value1= -1;
35369 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
35370 UPDATE t1 SET f_int1 = @cur_value1
35371 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
35373 # check single-4 success: 1
35374 SELECT MAX(f_int1) INTO @cur_value FROM t1;
35375 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
35377 # check single-5 success: 1
35378 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
35380 # check single-6 success: 1
35381 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
35383 Warning 1264 Out of range value for column 'f_int1' at row 1
35384 Warning 1264 Out of range value for column 'f_int2' at row 1
35386 # check single-7 success: 1
35387 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
35388 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
35389 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
35390 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
35391 f_charbig = '#NULL#';
35393 SET f_int1 = NULL , f_int2 = -@max_row,
35394 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
35395 f_charbig = '#NULL#';
35396 ERROR 23000: Column 'f_int1' cannot be null
35397 # check null success: 1
35399 WHERE f_int1 = 0 AND f_int2 = 0
35400 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
35401 AND f_charbig = '#NULL#';
35402 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35403 SELECT f_int1, f_int1, '', '', 'was inserted'
35404 FROM t0_template source_tab
35405 WHERE MOD(f_int1,3) = 0
35406 AND f_int1 BETWEEN @max_row_div2 AND @max_row
35408 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
35409 f_int2 = 2 * @max_row + source_tab.f_int1,
35410 f_charbig = 'was updated';
35412 # check unique-1-a success: 1
35414 # check unique-1-b success: 1
35415 DELETE FROM t1 WHERE f_charbig = 'was inserted';
35416 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35417 f_int2 = CAST(f_char1 AS SIGNED INT),
35418 f_charbig = CONCAT('===',f_char1,'===')
35419 WHERE f_charbig = 'was updated';
35420 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35421 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
35422 FROM t0_template source_tab
35423 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
35425 # check replace success: 1
35427 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
35429 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
35430 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
35431 UPDATE t1 SET f_int2 = f_int1,
35432 f_char1 = CAST(f_int1 AS CHAR),
35433 f_char2 = CAST(f_int1 AS CHAR),
35434 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
35435 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
35437 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35438 SELECT f_int1, f_int1, '', '', 'was inserted'
35439 FROM t0_template source_tab
35440 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35442 # check transactions-1 success: 1
35445 # check transactions-2 success: 1
35448 # check transactions-3 success: 1
35449 DELETE FROM t1 WHERE f_charbig = 'was inserted';
35453 # check transactions-4 success: 1
35454 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35455 SELECT f_int1, f_int1, '', '', 'was inserted'
35456 FROM t0_template source_tab
35457 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35459 # check transactions-5 success: 1
35462 # check transactions-6 success: 1
35463 # INFO: Storage engine used for t1 seems to be transactional.
35466 # check transactions-7 success: 1
35467 DELETE FROM t1 WHERE f_charbig = 'was inserted';
35469 SET @@session.sql_mode = 'traditional';
35470 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
35471 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35472 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
35473 '', '', 'was inserted' FROM t0_template
35474 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35475 ERROR 22012: Division by 0
35478 # check transactions-8 success: 1
35479 # INFO: Storage engine used for t1 seems to be able to revert
35480 # changes made by the failing statement.
35481 SET @@session.sql_mode = '';
35483 DELETE FROM t1 WHERE f_charbig = 'was inserted';
35485 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
35487 # check special-1 success: 1
35488 UPDATE t1 SET f_charbig = '';
35490 # check special-2 success: 1
35491 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
35492 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35493 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
35494 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35495 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35496 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35497 'just inserted' FROM t0_template
35498 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35499 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
35501 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35502 f_charbig = 'updated by trigger'
35503 WHERE f_int1 = new.f_int1;
35505 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35506 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35507 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35509 # check trigger-1 success: 1
35510 DROP TRIGGER trg_1;
35511 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35512 f_int2 = CAST(f_char1 AS SIGNED INT),
35513 f_charbig = 'just inserted'
35514 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35516 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35517 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35518 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35519 'just inserted' FROM t0_template
35520 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35521 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
35523 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35524 f_charbig = 'updated by trigger'
35525 WHERE f_int1 = new.f_int1;
35527 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35528 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35529 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35531 # check trigger-2 success: 1
35532 DROP TRIGGER trg_1;
35533 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35534 f_int2 = CAST(f_char1 AS SIGNED INT),
35535 f_charbig = 'just inserted'
35536 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35538 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35539 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35540 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35541 'just inserted' FROM t0_template
35542 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35543 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35545 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35546 f_charbig = 'updated by trigger'
35547 WHERE f_int1 = new.f_int1;
35549 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35550 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35552 # check trigger-3 success: 1
35553 DROP TRIGGER trg_1;
35554 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35555 f_int2 = CAST(f_char1 AS SIGNED INT),
35556 f_charbig = 'just inserted'
35557 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35559 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35560 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35561 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35562 'just inserted' FROM t0_template
35563 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35564 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35566 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35567 f_charbig = 'updated by trigger'
35568 WHERE f_int1 = - old.f_int1;
35570 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35571 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35573 # check trigger-4 success: 1
35574 DROP TRIGGER trg_1;
35575 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35576 f_int2 = CAST(f_char1 AS SIGNED INT),
35577 f_charbig = 'just inserted'
35578 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35580 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35581 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35582 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35583 'just inserted' FROM t0_template
35584 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35585 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35587 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35588 f_charbig = 'updated by trigger'
35589 WHERE f_int1 = new.f_int1;
35591 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35592 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35594 # check trigger-5 success: 1
35595 DROP TRIGGER trg_1;
35596 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35597 f_int2 = CAST(f_char1 AS SIGNED INT),
35598 f_charbig = 'just inserted'
35599 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35601 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35602 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35603 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35604 'just inserted' FROM t0_template
35605 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35606 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35608 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35609 f_charbig = 'updated by trigger'
35610 WHERE f_int1 = - old.f_int1;
35612 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35613 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35615 # check trigger-6 success: 1
35616 DROP TRIGGER trg_1;
35617 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35618 f_int2 = CAST(f_char1 AS SIGNED INT),
35619 f_charbig = 'just inserted'
35620 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35622 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35623 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35624 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35625 'just inserted' FROM t0_template
35626 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35627 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
35629 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35630 f_charbig = 'updated by trigger'
35631 WHERE f_int1 = - old.f_int1;
35634 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35636 # check trigger-7 success: 1
35637 DROP TRIGGER trg_1;
35638 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35639 f_int2 = CAST(f_char1 AS SIGNED INT),
35640 f_charbig = 'just inserted'
35641 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35643 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35644 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35645 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35646 'just inserted' FROM t0_template
35647 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35648 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
35650 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35651 f_charbig = 'updated by trigger'
35652 WHERE f_int1 = - old.f_int1;
35655 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35657 # check trigger-8 success: 1
35658 DROP TRIGGER trg_1;
35659 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35660 f_int2 = CAST(f_char1 AS SIGNED INT),
35661 f_charbig = 'just inserted'
35662 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35664 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35666 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35667 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35669 SET new.f_int1 = old.f_int1 + @max_row,
35670 new.f_int2 = old.f_int2 - @max_row,
35671 new.f_charbig = '####updated per update trigger####';
35674 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35675 f_charbig = '####updated per update statement itself####';
35677 # check trigger-9 success: 1
35678 DROP TRIGGER trg_2;
35679 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35680 f_int2 = CAST(f_char1 AS SIGNED INT),
35681 f_charbig = CONCAT('===',f_char1,'===');
35682 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35684 SET new.f_int1 = new.f_int1 + @max_row,
35685 new.f_int2 = new.f_int2 - @max_row,
35686 new.f_charbig = '####updated per update trigger####';
35689 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35690 f_charbig = '####updated per update statement itself####';
35692 # check trigger-10 success: 1
35693 DROP TRIGGER trg_2;
35694 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35695 f_int2 = CAST(f_char1 AS SIGNED INT),
35696 f_charbig = CONCAT('===',f_char1,'===');
35697 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35699 SET new.f_int1 = @my_max1 + @counter,
35700 new.f_int2 = @my_min2 - @counter,
35701 new.f_charbig = '####updated per insert trigger####';
35702 SET @counter = @counter + 1;
35705 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35706 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35707 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35708 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35709 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35711 DROP TRIGGER trg_3;
35713 # check trigger-11 success: 1
35715 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35716 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35717 AND f_charbig = '####updated per insert trigger####';
35718 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35720 SET new.f_int1 = @my_max1 + @counter,
35721 new.f_int2 = @my_min2 - @counter,
35722 new.f_charbig = '####updated per insert trigger####';
35723 SET @counter = @counter + 1;
35726 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35727 INSERT INTO t1 (f_char1, f_char2, f_charbig)
35728 SELECT CAST(f_int1 AS CHAR),
35729 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35730 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35732 DROP TRIGGER trg_3;
35734 # check trigger-12 success: 1
35736 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35737 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35738 AND f_charbig = '####updated per insert trigger####';
35740 Table Op Msg_type Msg_text
35741 test.t1 analyze status OK
35742 CHECK TABLE t1 EXTENDED;
35743 Table Op Msg_type Msg_text
35744 test.t1 check status OK
35745 CHECKSUM TABLE t1 EXTENDED;
35747 test.t1 <some_value>
35749 Table Op Msg_type Msg_text
35750 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
35751 test.t1 optimize status OK
35752 # check layout success: 1
35753 REPAIR TABLE t1 EXTENDED;
35754 Table Op Msg_type Msg_text
35755 test.t1 repair note The storage engine for the table doesn't support repair
35756 # check layout success: 1
35759 # check TRUNCATE success: 1
35760 # check layout success: 1
35761 # End usability test (inc/partition_check.inc)
35763 DROP TABLE IF EXISTS t1;
35769 f_charbig VARCHAR(1000)
35770 , PRIMARY KEY (f_int2,f_int1)
35772 PARTITION BY HASH(f_int1) PARTITIONS 2;
35773 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35774 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35775 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
35776 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
35777 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35778 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35779 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
35780 # Start usability test (inc/partition_check.inc)
35782 SHOW CREATE TABLE t1;
35784 t1 CREATE TABLE `t1` (
35785 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
35786 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
35787 `f_char1` char(20) DEFAULT NULL,
35788 `f_char2` char(20) DEFAULT NULL,
35789 `f_charbig` varchar(1000) DEFAULT NULL,
35790 PRIMARY KEY (`f_int2`,`f_int1`)
35791 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
35792 /*!50100 PARTITION BY HASH (f_int1)
35795 # check prerequisites-1 success: 1
35796 # check COUNT(*) success: 1
35797 # check MIN/MAX(f_int1) success: 1
35798 # check MIN/MAX(f_int2) success: 1
35799 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35800 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35801 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
35802 WHERE f_int1 IN (2,3);
35803 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
35804 # check prerequisites-3 success: 1
35805 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
35806 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35807 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
35808 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
35809 WHERE f_int1 IN (2,3);
35810 DELETE FROM t1 WHERE f_charbig = 'delete me';
35811 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35812 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
35813 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
35814 WHERE f_int1 IN (2,3);
35815 DELETE FROM t1 WHERE f_charbig = 'delete me';
35816 # check read via f_int1 success: 1
35817 # check read via f_int2 success: 1
35819 # check multiple-1 success: 1
35820 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
35822 # check multiple-2 success: 1
35823 INSERT INTO t1 SELECT * FROM t0_template
35824 WHERE MOD(f_int1,3) = 0;
35826 # check multiple-3 success: 1
35827 UPDATE t1 SET f_int1 = f_int1 + @max_row
35828 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
35829 AND @max_row_div2 + @max_row_div4;
35831 # check multiple-4 success: 1
35833 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
35834 AND @max_row_div2 + @max_row_div4 + @max_row;
35836 # check multiple-5 success: 1
35837 SELECT COUNT(*) INTO @try_count FROM t0_template
35838 WHERE MOD(f_int1,3) = 0
35839 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
35840 SELECT COUNT(*) INTO @clash_count
35841 FROM t1 INNER JOIN t0_template USING(f_int1)
35842 WHERE MOD(f_int1,3) = 0
35843 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
35844 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
35846 SET f_int1 = @cur_value , f_int2 = @cur_value,
35847 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35848 f_charbig = '#SINGLE#';
35850 # check single-1 success: 1
35851 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
35853 SET f_int1 = @cur_value , f_int2 = @cur_value,
35854 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35855 f_charbig = '#SINGLE#';
35857 # check single-2 success: 1
35858 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
35859 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
35860 UPDATE t1 SET f_int1 = @cur_value2
35861 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
35863 # check single-3 success: 1
35864 SET @cur_value1= -1;
35865 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
35866 UPDATE t1 SET f_int1 = @cur_value1
35867 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
35869 # check single-4 success: 1
35870 SELECT MAX(f_int1) INTO @cur_value FROM t1;
35871 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
35873 # check single-5 success: 1
35874 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
35876 # check single-6 success: 1
35877 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
35879 Warning 1264 Out of range value for column 'f_int1' at row 1
35880 Warning 1264 Out of range value for column 'f_int2' at row 1
35882 # check single-7 success: 1
35883 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
35884 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
35885 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
35886 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
35887 f_charbig = '#NULL#';
35889 SET f_int1 = NULL , f_int2 = -@max_row,
35890 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
35891 f_charbig = '#NULL#';
35892 ERROR 23000: Column 'f_int1' cannot be null
35893 # check null success: 1
35895 WHERE f_int1 = 0 AND f_int2 = 0
35896 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
35897 AND f_charbig = '#NULL#';
35898 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35899 SELECT f_int1, f_int1, '', '', 'was inserted'
35900 FROM t0_template source_tab
35901 WHERE MOD(f_int1,3) = 0
35902 AND f_int1 BETWEEN @max_row_div2 AND @max_row
35904 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
35905 f_int2 = 2 * @max_row + source_tab.f_int1,
35906 f_charbig = 'was updated';
35908 # check unique-1-a success: 1
35910 # check unique-1-b success: 1
35911 DELETE FROM t1 WHERE f_charbig = 'was inserted';
35912 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35913 f_int2 = CAST(f_char1 AS SIGNED INT),
35914 f_charbig = CONCAT('===',f_char1,'===')
35915 WHERE f_charbig = 'was updated';
35916 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35917 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
35918 FROM t0_template source_tab
35919 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
35921 # check replace success: 1
35923 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
35925 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
35926 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
35927 UPDATE t1 SET f_int2 = f_int1,
35928 f_char1 = CAST(f_int1 AS CHAR),
35929 f_char2 = CAST(f_int1 AS CHAR),
35930 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
35931 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
35933 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35934 SELECT f_int1, f_int1, '', '', 'was inserted'
35935 FROM t0_template source_tab
35936 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35938 # check transactions-1 success: 1
35941 # check transactions-2 success: 1
35944 # check transactions-3 success: 1
35945 DELETE FROM t1 WHERE f_charbig = 'was inserted';
35949 # check transactions-4 success: 1
35950 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35951 SELECT f_int1, f_int1, '', '', 'was inserted'
35952 FROM t0_template source_tab
35953 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35955 # check transactions-5 success: 1
35958 # check transactions-6 success: 1
35959 # INFO: Storage engine used for t1 seems to be transactional.
35962 # check transactions-7 success: 1
35963 DELETE FROM t1 WHERE f_charbig = 'was inserted';
35965 SET @@session.sql_mode = 'traditional';
35966 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
35967 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35968 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
35969 '', '', 'was inserted' FROM t0_template
35970 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35971 ERROR 22012: Division by 0
35974 # check transactions-8 success: 1
35975 # INFO: Storage engine used for t1 seems to be able to revert
35976 # changes made by the failing statement.
35977 SET @@session.sql_mode = '';
35979 DELETE FROM t1 WHERE f_charbig = 'was inserted';
35981 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
35983 # check special-1 success: 1
35984 UPDATE t1 SET f_charbig = '';
35986 # check special-2 success: 1
35987 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
35988 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35989 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
35990 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35991 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35992 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35993 'just inserted' FROM t0_template
35994 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35995 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
35997 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35998 f_charbig = 'updated by trigger'
35999 WHERE f_int1 = new.f_int1;
36001 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36002 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
36003 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36005 # check trigger-1 success: 1
36006 DROP TRIGGER trg_1;
36007 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36008 f_int2 = CAST(f_char1 AS SIGNED INT),
36009 f_charbig = 'just inserted'
36010 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36012 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36013 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36014 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36015 'just inserted' FROM t0_template
36016 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36017 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
36019 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36020 f_charbig = 'updated by trigger'
36021 WHERE f_int1 = new.f_int1;
36023 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36024 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
36025 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36027 # check trigger-2 success: 1
36028 DROP TRIGGER trg_1;
36029 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36030 f_int2 = CAST(f_char1 AS SIGNED INT),
36031 f_charbig = 'just inserted'
36032 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36034 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36035 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36036 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36037 'just inserted' FROM t0_template
36038 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36039 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
36041 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36042 f_charbig = 'updated by trigger'
36043 WHERE f_int1 = new.f_int1;
36045 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36046 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36048 # check trigger-3 success: 1
36049 DROP TRIGGER trg_1;
36050 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36051 f_int2 = CAST(f_char1 AS SIGNED INT),
36052 f_charbig = 'just inserted'
36053 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36055 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36056 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36057 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36058 'just inserted' FROM t0_template
36059 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36060 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
36062 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36063 f_charbig = 'updated by trigger'
36064 WHERE f_int1 = - old.f_int1;
36066 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36067 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36069 # check trigger-4 success: 1
36070 DROP TRIGGER trg_1;
36071 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36072 f_int2 = CAST(f_char1 AS SIGNED INT),
36073 f_charbig = 'just inserted'
36074 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36076 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36077 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36078 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36079 'just inserted' FROM t0_template
36080 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36081 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
36083 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36084 f_charbig = 'updated by trigger'
36085 WHERE f_int1 = new.f_int1;
36087 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36088 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36090 # check trigger-5 success: 1
36091 DROP TRIGGER trg_1;
36092 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36093 f_int2 = CAST(f_char1 AS SIGNED INT),
36094 f_charbig = 'just inserted'
36095 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36097 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36098 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36099 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36100 'just inserted' FROM t0_template
36101 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36102 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
36104 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36105 f_charbig = 'updated by trigger'
36106 WHERE f_int1 = - old.f_int1;
36108 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36109 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36111 # check trigger-6 success: 1
36112 DROP TRIGGER trg_1;
36113 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36114 f_int2 = CAST(f_char1 AS SIGNED INT),
36115 f_charbig = 'just inserted'
36116 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36118 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36119 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36120 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36121 'just inserted' FROM t0_template
36122 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36123 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
36125 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36126 f_charbig = 'updated by trigger'
36127 WHERE f_int1 = - old.f_int1;
36130 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36132 # check trigger-7 success: 1
36133 DROP TRIGGER trg_1;
36134 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36135 f_int2 = CAST(f_char1 AS SIGNED INT),
36136 f_charbig = 'just inserted'
36137 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36139 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36140 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36141 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36142 'just inserted' FROM t0_template
36143 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36144 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
36146 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36147 f_charbig = 'updated by trigger'
36148 WHERE f_int1 = - old.f_int1;
36151 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36153 # check trigger-8 success: 1
36154 DROP TRIGGER trg_1;
36155 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36156 f_int2 = CAST(f_char1 AS SIGNED INT),
36157 f_charbig = 'just inserted'
36158 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36160 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36162 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36163 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36165 SET new.f_int1 = old.f_int1 + @max_row,
36166 new.f_int2 = old.f_int2 - @max_row,
36167 new.f_charbig = '####updated per update trigger####';
36170 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36171 f_charbig = '####updated per update statement itself####';
36173 # check trigger-9 success: 1
36174 DROP TRIGGER trg_2;
36175 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36176 f_int2 = CAST(f_char1 AS SIGNED INT),
36177 f_charbig = CONCAT('===',f_char1,'===');
36178 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36180 SET new.f_int1 = new.f_int1 + @max_row,
36181 new.f_int2 = new.f_int2 - @max_row,
36182 new.f_charbig = '####updated per update trigger####';
36185 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36186 f_charbig = '####updated per update statement itself####';
36188 # check trigger-10 success: 1
36189 DROP TRIGGER trg_2;
36190 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36191 f_int2 = CAST(f_char1 AS SIGNED INT),
36192 f_charbig = CONCAT('===',f_char1,'===');
36193 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36195 SET new.f_int1 = @my_max1 + @counter,
36196 new.f_int2 = @my_min2 - @counter,
36197 new.f_charbig = '####updated per insert trigger####';
36198 SET @counter = @counter + 1;
36201 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36202 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36203 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36204 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36205 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36207 DROP TRIGGER trg_3;
36209 # check trigger-11 success: 1
36211 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36212 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36213 AND f_charbig = '####updated per insert trigger####';
36214 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36216 SET new.f_int1 = @my_max1 + @counter,
36217 new.f_int2 = @my_min2 - @counter,
36218 new.f_charbig = '####updated per insert trigger####';
36219 SET @counter = @counter + 1;
36222 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36223 INSERT INTO t1 (f_char1, f_char2, f_charbig)
36224 SELECT CAST(f_int1 AS CHAR),
36225 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36226 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36228 DROP TRIGGER trg_3;
36230 # check trigger-12 success: 1
36232 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36233 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36234 AND f_charbig = '####updated per insert trigger####';
36236 Table Op Msg_type Msg_text
36237 test.t1 analyze status OK
36238 CHECK TABLE t1 EXTENDED;
36239 Table Op Msg_type Msg_text
36240 test.t1 check status OK
36241 CHECKSUM TABLE t1 EXTENDED;
36243 test.t1 <some_value>
36245 Table Op Msg_type Msg_text
36246 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
36247 test.t1 optimize status OK
36248 # check layout success: 1
36249 REPAIR TABLE t1 EXTENDED;
36250 Table Op Msg_type Msg_text
36251 test.t1 repair note The storage engine for the table doesn't support repair
36252 # check layout success: 1
36255 # check TRUNCATE success: 1
36256 # check layout success: 1
36257 # End usability test (inc/partition_check.inc)
36264 f_charbig VARCHAR(1000)
36265 , PRIMARY KEY (f_int2,f_int1)
36267 PARTITION BY KEY(f_int1) PARTITIONS 5;
36268 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36269 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
36270 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
36271 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
36272 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36273 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
36274 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
36275 # Start usability test (inc/partition_check.inc)
36277 SHOW CREATE TABLE t1;
36279 t1 CREATE TABLE `t1` (
36280 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
36281 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
36282 `f_char1` char(20) DEFAULT NULL,
36283 `f_char2` char(20) DEFAULT NULL,
36284 `f_charbig` varchar(1000) DEFAULT NULL,
36285 PRIMARY KEY (`f_int2`,`f_int1`)
36286 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
36287 /*!50100 PARTITION BY KEY (f_int1)
36290 # check prerequisites-1 success: 1
36291 # check COUNT(*) success: 1
36292 # check MIN/MAX(f_int1) success: 1
36293 # check MIN/MAX(f_int2) success: 1
36294 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36295 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36296 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
36297 WHERE f_int1 IN (2,3);
36298 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
36299 # check prerequisites-3 success: 1
36300 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
36301 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36302 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
36303 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
36304 WHERE f_int1 IN (2,3);
36305 DELETE FROM t1 WHERE f_charbig = 'delete me';
36306 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36307 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
36308 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
36309 WHERE f_int1 IN (2,3);
36310 DELETE FROM t1 WHERE f_charbig = 'delete me';
36311 # check read via f_int1 success: 1
36312 # check read via f_int2 success: 1
36314 # check multiple-1 success: 1
36315 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
36317 # check multiple-2 success: 1
36318 INSERT INTO t1 SELECT * FROM t0_template
36319 WHERE MOD(f_int1,3) = 0;
36321 # check multiple-3 success: 1
36322 UPDATE t1 SET f_int1 = f_int1 + @max_row
36323 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
36324 AND @max_row_div2 + @max_row_div4;
36326 # check multiple-4 success: 1
36328 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
36329 AND @max_row_div2 + @max_row_div4 + @max_row;
36331 # check multiple-5 success: 1
36332 SELECT COUNT(*) INTO @try_count FROM t0_template
36333 WHERE MOD(f_int1,3) = 0
36334 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
36335 SELECT COUNT(*) INTO @clash_count
36336 FROM t1 INNER JOIN t0_template USING(f_int1)
36337 WHERE MOD(f_int1,3) = 0
36338 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
36339 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
36341 SET f_int1 = @cur_value , f_int2 = @cur_value,
36342 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
36343 f_charbig = '#SINGLE#';
36345 # check single-1 success: 1
36346 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
36348 SET f_int1 = @cur_value , f_int2 = @cur_value,
36349 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
36350 f_charbig = '#SINGLE#';
36352 # check single-2 success: 1
36353 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
36354 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
36355 UPDATE t1 SET f_int1 = @cur_value2
36356 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
36358 # check single-3 success: 1
36359 SET @cur_value1= -1;
36360 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
36361 UPDATE t1 SET f_int1 = @cur_value1
36362 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
36364 # check single-4 success: 1
36365 SELECT MAX(f_int1) INTO @cur_value FROM t1;
36366 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
36368 # check single-5 success: 1
36369 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
36371 # check single-6 success: 1
36372 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
36374 Warning 1264 Out of range value for column 'f_int1' at row 1
36375 Warning 1264 Out of range value for column 'f_int2' at row 1
36377 # check single-7 success: 1
36378 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
36379 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
36380 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
36381 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
36382 f_charbig = '#NULL#';
36384 SET f_int1 = NULL , f_int2 = -@max_row,
36385 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
36386 f_charbig = '#NULL#';
36387 ERROR 23000: Column 'f_int1' cannot be null
36388 # check null success: 1
36390 WHERE f_int1 = 0 AND f_int2 = 0
36391 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
36392 AND f_charbig = '#NULL#';
36393 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36394 SELECT f_int1, f_int1, '', '', 'was inserted'
36395 FROM t0_template source_tab
36396 WHERE MOD(f_int1,3) = 0
36397 AND f_int1 BETWEEN @max_row_div2 AND @max_row
36399 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
36400 f_int2 = 2 * @max_row + source_tab.f_int1,
36401 f_charbig = 'was updated';
36403 # check unique-1-a success: 1
36405 # check unique-1-b success: 1
36406 DELETE FROM t1 WHERE f_charbig = 'was inserted';
36407 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36408 f_int2 = CAST(f_char1 AS SIGNED INT),
36409 f_charbig = CONCAT('===',f_char1,'===')
36410 WHERE f_charbig = 'was updated';
36411 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36412 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
36413 FROM t0_template source_tab
36414 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
36416 # check replace success: 1
36418 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
36420 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
36421 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
36422 UPDATE t1 SET f_int2 = f_int1,
36423 f_char1 = CAST(f_int1 AS CHAR),
36424 f_char2 = CAST(f_int1 AS CHAR),
36425 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
36426 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
36428 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36429 SELECT f_int1, f_int1, '', '', 'was inserted'
36430 FROM t0_template source_tab
36431 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36433 # check transactions-1 success: 1
36436 # check transactions-2 success: 1
36439 # check transactions-3 success: 1
36440 DELETE FROM t1 WHERE f_charbig = 'was inserted';
36444 # check transactions-4 success: 1
36445 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36446 SELECT f_int1, f_int1, '', '', 'was inserted'
36447 FROM t0_template source_tab
36448 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36450 # check transactions-5 success: 1
36453 # check transactions-6 success: 1
36454 # INFO: Storage engine used for t1 seems to be transactional.
36457 # check transactions-7 success: 1
36458 DELETE FROM t1 WHERE f_charbig = 'was inserted';
36460 SET @@session.sql_mode = 'traditional';
36461 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
36462 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36463 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
36464 '', '', 'was inserted' FROM t0_template
36465 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36466 ERROR 22012: Division by 0
36469 # check transactions-8 success: 1
36470 # INFO: Storage engine used for t1 seems to be able to revert
36471 # changes made by the failing statement.
36472 SET @@session.sql_mode = '';
36474 DELETE FROM t1 WHERE f_charbig = 'was inserted';
36476 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
36478 # check special-1 success: 1
36479 UPDATE t1 SET f_charbig = '';
36481 # check special-2 success: 1
36482 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
36483 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36484 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
36485 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36486 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36487 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36488 'just inserted' FROM t0_template
36489 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36490 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
36492 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36493 f_charbig = 'updated by trigger'
36494 WHERE f_int1 = new.f_int1;
36496 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36497 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
36498 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36500 # check trigger-1 success: 1
36501 DROP TRIGGER trg_1;
36502 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36503 f_int2 = CAST(f_char1 AS SIGNED INT),
36504 f_charbig = 'just inserted'
36505 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36507 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36508 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36509 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36510 'just inserted' FROM t0_template
36511 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36512 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
36514 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36515 f_charbig = 'updated by trigger'
36516 WHERE f_int1 = new.f_int1;
36518 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36519 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
36520 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36522 # check trigger-2 success: 1
36523 DROP TRIGGER trg_1;
36524 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36525 f_int2 = CAST(f_char1 AS SIGNED INT),
36526 f_charbig = 'just inserted'
36527 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36529 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36530 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36531 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36532 'just inserted' FROM t0_template
36533 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36534 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
36536 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36537 f_charbig = 'updated by trigger'
36538 WHERE f_int1 = new.f_int1;
36540 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36541 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36543 # check trigger-3 success: 1
36544 DROP TRIGGER trg_1;
36545 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36546 f_int2 = CAST(f_char1 AS SIGNED INT),
36547 f_charbig = 'just inserted'
36548 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36550 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36551 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36552 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36553 'just inserted' FROM t0_template
36554 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36555 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
36557 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36558 f_charbig = 'updated by trigger'
36559 WHERE f_int1 = - old.f_int1;
36561 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36562 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36564 # check trigger-4 success: 1
36565 DROP TRIGGER trg_1;
36566 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36567 f_int2 = CAST(f_char1 AS SIGNED INT),
36568 f_charbig = 'just inserted'
36569 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36571 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36572 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36573 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36574 'just inserted' FROM t0_template
36575 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36576 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
36578 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36579 f_charbig = 'updated by trigger'
36580 WHERE f_int1 = new.f_int1;
36582 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36583 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36585 # check trigger-5 success: 1
36586 DROP TRIGGER trg_1;
36587 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36588 f_int2 = CAST(f_char1 AS SIGNED INT),
36589 f_charbig = 'just inserted'
36590 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36592 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36593 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36594 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36595 'just inserted' FROM t0_template
36596 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36597 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
36599 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36600 f_charbig = 'updated by trigger'
36601 WHERE f_int1 = - old.f_int1;
36603 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36604 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36606 # check trigger-6 success: 1
36607 DROP TRIGGER trg_1;
36608 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36609 f_int2 = CAST(f_char1 AS SIGNED INT),
36610 f_charbig = 'just inserted'
36611 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36613 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36614 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36615 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36616 'just inserted' FROM t0_template
36617 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36618 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
36620 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36621 f_charbig = 'updated by trigger'
36622 WHERE f_int1 = - old.f_int1;
36625 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36627 # check trigger-7 success: 1
36628 DROP TRIGGER trg_1;
36629 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36630 f_int2 = CAST(f_char1 AS SIGNED INT),
36631 f_charbig = 'just inserted'
36632 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36634 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36635 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36636 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36637 'just inserted' FROM t0_template
36638 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36639 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
36641 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36642 f_charbig = 'updated by trigger'
36643 WHERE f_int1 = - old.f_int1;
36646 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36648 # check trigger-8 success: 1
36649 DROP TRIGGER trg_1;
36650 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36651 f_int2 = CAST(f_char1 AS SIGNED INT),
36652 f_charbig = 'just inserted'
36653 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36655 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36657 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36658 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36660 SET new.f_int1 = old.f_int1 + @max_row,
36661 new.f_int2 = old.f_int2 - @max_row,
36662 new.f_charbig = '####updated per update trigger####';
36665 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36666 f_charbig = '####updated per update statement itself####';
36668 # check trigger-9 success: 1
36669 DROP TRIGGER trg_2;
36670 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36671 f_int2 = CAST(f_char1 AS SIGNED INT),
36672 f_charbig = CONCAT('===',f_char1,'===');
36673 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36675 SET new.f_int1 = new.f_int1 + @max_row,
36676 new.f_int2 = new.f_int2 - @max_row,
36677 new.f_charbig = '####updated per update trigger####';
36680 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36681 f_charbig = '####updated per update statement itself####';
36683 # check trigger-10 success: 1
36684 DROP TRIGGER trg_2;
36685 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36686 f_int2 = CAST(f_char1 AS SIGNED INT),
36687 f_charbig = CONCAT('===',f_char1,'===');
36688 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36690 SET new.f_int1 = @my_max1 + @counter,
36691 new.f_int2 = @my_min2 - @counter,
36692 new.f_charbig = '####updated per insert trigger####';
36693 SET @counter = @counter + 1;
36696 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36697 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36698 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36699 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36700 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36702 DROP TRIGGER trg_3;
36704 # check trigger-11 success: 1
36706 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36707 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36708 AND f_charbig = '####updated per insert trigger####';
36709 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36711 SET new.f_int1 = @my_max1 + @counter,
36712 new.f_int2 = @my_min2 - @counter,
36713 new.f_charbig = '####updated per insert trigger####';
36714 SET @counter = @counter + 1;
36717 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36718 INSERT INTO t1 (f_char1, f_char2, f_charbig)
36719 SELECT CAST(f_int1 AS CHAR),
36720 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36721 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36723 DROP TRIGGER trg_3;
36725 # check trigger-12 success: 1
36727 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36728 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36729 AND f_charbig = '####updated per insert trigger####';
36731 Table Op Msg_type Msg_text
36732 test.t1 analyze status OK
36733 CHECK TABLE t1 EXTENDED;
36734 Table Op Msg_type Msg_text
36735 test.t1 check status OK
36736 CHECKSUM TABLE t1 EXTENDED;
36738 test.t1 <some_value>
36740 Table Op Msg_type Msg_text
36741 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
36742 test.t1 optimize status OK
36743 # check layout success: 1
36744 REPAIR TABLE t1 EXTENDED;
36745 Table Op Msg_type Msg_text
36746 test.t1 repair note The storage engine for the table doesn't support repair
36747 # check layout success: 1
36750 # check TRUNCATE success: 1
36751 # check layout success: 1
36752 # End usability test (inc/partition_check.inc)
36759 f_charbig VARCHAR(1000)
36760 , PRIMARY KEY (f_int2,f_int1)
36762 PARTITION BY LIST(MOD(f_int1,4))
36763 (PARTITION part_3 VALUES IN (-3),
36764 PARTITION part_2 VALUES IN (-2),
36765 PARTITION part_1 VALUES IN (-1),
36766 PARTITION part_N VALUES IN (NULL),
36767 PARTITION part0 VALUES IN (0),
36768 PARTITION part1 VALUES IN (1),
36769 PARTITION part2 VALUES IN (2),
36770 PARTITION part3 VALUES IN (3));
36771 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36772 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
36773 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
36774 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
36775 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36776 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
36777 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
36778 # Start usability test (inc/partition_check.inc)
36780 SHOW CREATE TABLE t1;
36782 t1 CREATE TABLE `t1` (
36783 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
36784 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
36785 `f_char1` char(20) DEFAULT NULL,
36786 `f_char2` char(20) DEFAULT NULL,
36787 `f_charbig` varchar(1000) DEFAULT NULL,
36788 PRIMARY KEY (`f_int2`,`f_int1`)
36789 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
36790 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
36791 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
36792 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
36793 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
36794 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
36795 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
36796 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
36797 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
36798 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
36800 # check prerequisites-1 success: 1
36801 # check COUNT(*) success: 1
36802 # check MIN/MAX(f_int1) success: 1
36803 # check MIN/MAX(f_int2) success: 1
36804 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36805 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36806 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
36807 WHERE f_int1 IN (2,3);
36808 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
36809 # check prerequisites-3 success: 1
36810 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
36811 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36812 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
36813 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
36814 WHERE f_int1 IN (2,3);
36815 DELETE FROM t1 WHERE f_charbig = 'delete me';
36816 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36817 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
36818 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
36819 WHERE f_int1 IN (2,3);
36820 DELETE FROM t1 WHERE f_charbig = 'delete me';
36821 # check read via f_int1 success: 1
36822 # check read via f_int2 success: 1
36824 # check multiple-1 success: 1
36825 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
36827 # check multiple-2 success: 1
36828 INSERT INTO t1 SELECT * FROM t0_template
36829 WHERE MOD(f_int1,3) = 0;
36831 # check multiple-3 success: 1
36832 UPDATE t1 SET f_int1 = f_int1 + @max_row
36833 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
36834 AND @max_row_div2 + @max_row_div4;
36836 # check multiple-4 success: 1
36838 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
36839 AND @max_row_div2 + @max_row_div4 + @max_row;
36841 # check multiple-5 success: 1
36842 SELECT COUNT(*) INTO @try_count FROM t0_template
36843 WHERE MOD(f_int1,3) = 0
36844 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
36845 SELECT COUNT(*) INTO @clash_count
36846 FROM t1 INNER JOIN t0_template USING(f_int1)
36847 WHERE MOD(f_int1,3) = 0
36848 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
36849 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
36851 SET f_int1 = @cur_value , f_int2 = @cur_value,
36852 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
36853 f_charbig = '#SINGLE#';
36855 # check single-1 success: 1
36856 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
36858 SET f_int1 = @cur_value , f_int2 = @cur_value,
36859 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
36860 f_charbig = '#SINGLE#';
36862 # check single-2 success: 1
36863 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
36864 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
36865 UPDATE t1 SET f_int1 = @cur_value2
36866 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
36868 # check single-3 success: 1
36869 SET @cur_value1= -1;
36870 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
36871 UPDATE t1 SET f_int1 = @cur_value1
36872 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
36874 # check single-4 success: 1
36875 SELECT MAX(f_int1) INTO @cur_value FROM t1;
36876 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
36878 # check single-5 success: 1
36879 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
36881 # check single-6 success: 1
36882 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
36884 Warning 1264 Out of range value for column 'f_int1' at row 1
36885 Warning 1264 Out of range value for column 'f_int2' at row 1
36887 # check single-7 success: 1
36888 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
36889 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
36890 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
36891 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
36892 f_charbig = '#NULL#';
36894 SET f_int1 = NULL , f_int2 = -@max_row,
36895 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
36896 f_charbig = '#NULL#';
36897 ERROR 23000: Column 'f_int1' cannot be null
36898 # check null success: 1
36900 WHERE f_int1 = 0 AND f_int2 = 0
36901 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
36902 AND f_charbig = '#NULL#';
36903 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36904 SELECT f_int1, f_int1, '', '', 'was inserted'
36905 FROM t0_template source_tab
36906 WHERE MOD(f_int1,3) = 0
36907 AND f_int1 BETWEEN @max_row_div2 AND @max_row
36909 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
36910 f_int2 = 2 * @max_row + source_tab.f_int1,
36911 f_charbig = 'was updated';
36913 # check unique-1-a success: 1
36915 # check unique-1-b success: 1
36916 DELETE FROM t1 WHERE f_charbig = 'was inserted';
36917 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36918 f_int2 = CAST(f_char1 AS SIGNED INT),
36919 f_charbig = CONCAT('===',f_char1,'===')
36920 WHERE f_charbig = 'was updated';
36921 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36922 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
36923 FROM t0_template source_tab
36924 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
36926 # check replace success: 1
36928 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
36930 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
36931 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
36932 UPDATE t1 SET f_int2 = f_int1,
36933 f_char1 = CAST(f_int1 AS CHAR),
36934 f_char2 = CAST(f_int1 AS CHAR),
36935 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
36936 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
36938 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36939 SELECT f_int1, f_int1, '', '', 'was inserted'
36940 FROM t0_template source_tab
36941 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36943 # check transactions-1 success: 1
36946 # check transactions-2 success: 1
36949 # check transactions-3 success: 1
36950 DELETE FROM t1 WHERE f_charbig = 'was inserted';
36954 # check transactions-4 success: 1
36955 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36956 SELECT f_int1, f_int1, '', '', 'was inserted'
36957 FROM t0_template source_tab
36958 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36960 # check transactions-5 success: 1
36963 # check transactions-6 success: 1
36964 # INFO: Storage engine used for t1 seems to be transactional.
36967 # check transactions-7 success: 1
36968 DELETE FROM t1 WHERE f_charbig = 'was inserted';
36970 SET @@session.sql_mode = 'traditional';
36971 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
36972 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36973 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
36974 '', '', 'was inserted' FROM t0_template
36975 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36976 ERROR 22012: Division by 0
36979 # check transactions-8 success: 1
36980 # INFO: Storage engine used for t1 seems to be able to revert
36981 # changes made by the failing statement.
36982 SET @@session.sql_mode = '';
36984 DELETE FROM t1 WHERE f_charbig = 'was inserted';
36986 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
36988 # check special-1 success: 1
36989 UPDATE t1 SET f_charbig = '';
36991 # check special-2 success: 1
36992 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
36993 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36994 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
36995 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36996 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36997 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36998 'just inserted' FROM t0_template
36999 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37000 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
37002 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37003 f_charbig = 'updated by trigger'
37004 WHERE f_int1 = new.f_int1;
37006 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37007 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
37008 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37010 # check trigger-1 success: 1
37011 DROP TRIGGER trg_1;
37012 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37013 f_int2 = CAST(f_char1 AS SIGNED INT),
37014 f_charbig = 'just inserted'
37015 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37017 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37018 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37019 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37020 'just inserted' FROM t0_template
37021 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37022 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
37024 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37025 f_charbig = 'updated by trigger'
37026 WHERE f_int1 = new.f_int1;
37028 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37029 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
37030 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37032 # check trigger-2 success: 1
37033 DROP TRIGGER trg_1;
37034 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37035 f_int2 = CAST(f_char1 AS SIGNED INT),
37036 f_charbig = 'just inserted'
37037 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37039 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37040 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37041 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37042 'just inserted' FROM t0_template
37043 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37044 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
37046 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37047 f_charbig = 'updated by trigger'
37048 WHERE f_int1 = new.f_int1;
37050 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
37051 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37053 # check trigger-3 success: 1
37054 DROP TRIGGER trg_1;
37055 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37056 f_int2 = CAST(f_char1 AS SIGNED INT),
37057 f_charbig = 'just inserted'
37058 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37060 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37061 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37062 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37063 'just inserted' FROM t0_template
37064 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37065 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
37067 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37068 f_charbig = 'updated by trigger'
37069 WHERE f_int1 = - old.f_int1;
37071 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
37072 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37074 # check trigger-4 success: 1
37075 DROP TRIGGER trg_1;
37076 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37077 f_int2 = CAST(f_char1 AS SIGNED INT),
37078 f_charbig = 'just inserted'
37079 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37081 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37082 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37083 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37084 'just inserted' FROM t0_template
37085 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37086 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
37088 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37089 f_charbig = 'updated by trigger'
37090 WHERE f_int1 = new.f_int1;
37092 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
37093 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37095 # check trigger-5 success: 1
37096 DROP TRIGGER trg_1;
37097 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37098 f_int2 = CAST(f_char1 AS SIGNED INT),
37099 f_charbig = 'just inserted'
37100 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37102 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37103 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37104 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37105 'just inserted' FROM t0_template
37106 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37107 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
37109 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37110 f_charbig = 'updated by trigger'
37111 WHERE f_int1 = - old.f_int1;
37113 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
37114 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37116 # check trigger-6 success: 1
37117 DROP TRIGGER trg_1;
37118 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37119 f_int2 = CAST(f_char1 AS SIGNED INT),
37120 f_charbig = 'just inserted'
37121 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37123 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37124 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37125 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37126 'just inserted' FROM t0_template
37127 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37128 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
37130 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37131 f_charbig = 'updated by trigger'
37132 WHERE f_int1 = - old.f_int1;
37135 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37137 # check trigger-7 success: 1
37138 DROP TRIGGER trg_1;
37139 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37140 f_int2 = CAST(f_char1 AS SIGNED INT),
37141 f_charbig = 'just inserted'
37142 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37144 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37145 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37146 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37147 'just inserted' FROM t0_template
37148 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37149 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
37151 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37152 f_charbig = 'updated by trigger'
37153 WHERE f_int1 = - old.f_int1;
37156 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37158 # check trigger-8 success: 1
37159 DROP TRIGGER trg_1;
37160 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37161 f_int2 = CAST(f_char1 AS SIGNED INT),
37162 f_charbig = 'just inserted'
37163 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37165 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37167 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37168 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
37170 SET new.f_int1 = old.f_int1 + @max_row,
37171 new.f_int2 = old.f_int2 - @max_row,
37172 new.f_charbig = '####updated per update trigger####';
37175 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
37176 f_charbig = '####updated per update statement itself####';
37178 # check trigger-9 success: 1
37179 DROP TRIGGER trg_2;
37180 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37181 f_int2 = CAST(f_char1 AS SIGNED INT),
37182 f_charbig = CONCAT('===',f_char1,'===');
37183 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
37185 SET new.f_int1 = new.f_int1 + @max_row,
37186 new.f_int2 = new.f_int2 - @max_row,
37187 new.f_charbig = '####updated per update trigger####';
37190 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
37191 f_charbig = '####updated per update statement itself####';
37193 # check trigger-10 success: 1
37194 DROP TRIGGER trg_2;
37195 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37196 f_int2 = CAST(f_char1 AS SIGNED INT),
37197 f_charbig = CONCAT('===',f_char1,'===');
37198 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
37200 SET new.f_int1 = @my_max1 + @counter,
37201 new.f_int2 = @my_min2 - @counter,
37202 new.f_charbig = '####updated per insert trigger####';
37203 SET @counter = @counter + 1;
37206 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
37207 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37208 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
37209 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
37210 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
37212 DROP TRIGGER trg_3;
37214 # check trigger-11 success: 1
37216 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
37217 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
37218 AND f_charbig = '####updated per insert trigger####';
37219 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
37221 SET new.f_int1 = @my_max1 + @counter,
37222 new.f_int2 = @my_min2 - @counter,
37223 new.f_charbig = '####updated per insert trigger####';
37224 SET @counter = @counter + 1;
37227 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
37228 INSERT INTO t1 (f_char1, f_char2, f_charbig)
37229 SELECT CAST(f_int1 AS CHAR),
37230 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
37231 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
37233 DROP TRIGGER trg_3;
37235 # check trigger-12 success: 1
37237 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
37238 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
37239 AND f_charbig = '####updated per insert trigger####';
37241 Table Op Msg_type Msg_text
37242 test.t1 analyze status OK
37243 CHECK TABLE t1 EXTENDED;
37244 Table Op Msg_type Msg_text
37245 test.t1 check status OK
37246 CHECKSUM TABLE t1 EXTENDED;
37248 test.t1 <some_value>
37250 Table Op Msg_type Msg_text
37251 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
37252 test.t1 optimize status OK
37253 # check layout success: 1
37254 REPAIR TABLE t1 EXTENDED;
37255 Table Op Msg_type Msg_text
37256 test.t1 repair note The storage engine for the table doesn't support repair
37257 # check layout success: 1
37260 # check TRUNCATE success: 1
37261 # check layout success: 1
37262 # End usability test (inc/partition_check.inc)
37269 f_charbig VARCHAR(1000)
37270 , PRIMARY KEY (f_int2,f_int1)
37272 PARTITION BY RANGE(f_int1)
37273 (PARTITION parta VALUES LESS THAN (0),
37274 PARTITION partb VALUES LESS THAN (5),
37275 PARTITION partc VALUES LESS THAN (10),
37276 PARTITION partd VALUES LESS THAN (10 + 5),
37277 PARTITION parte VALUES LESS THAN (20),
37278 PARTITION partf VALUES LESS THAN (2147483646));
37279 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
37280 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
37281 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
37282 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
37283 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
37284 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
37285 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
37286 # Start usability test (inc/partition_check.inc)
37288 SHOW CREATE TABLE t1;
37290 t1 CREATE TABLE `t1` (
37291 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
37292 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
37293 `f_char1` char(20) DEFAULT NULL,
37294 `f_char2` char(20) DEFAULT NULL,
37295 `f_charbig` varchar(1000) DEFAULT NULL,
37296 PRIMARY KEY (`f_int2`,`f_int1`)
37297 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
37298 /*!50100 PARTITION BY RANGE (f_int1)
37299 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
37300 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
37301 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
37302 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
37303 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
37304 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
37306 # check prerequisites-1 success: 1
37307 # check COUNT(*) success: 1
37308 # check MIN/MAX(f_int1) success: 1
37309 # check MIN/MAX(f_int2) success: 1
37310 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37311 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
37312 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
37313 WHERE f_int1 IN (2,3);
37314 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
37315 # check prerequisites-3 success: 1
37316 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
37317 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37318 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
37319 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
37320 WHERE f_int1 IN (2,3);
37321 DELETE FROM t1 WHERE f_charbig = 'delete me';
37322 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37323 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
37324 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
37325 WHERE f_int1 IN (2,3);
37326 DELETE FROM t1 WHERE f_charbig = 'delete me';
37327 # check read via f_int1 success: 1
37328 # check read via f_int2 success: 1
37330 # check multiple-1 success: 1
37331 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
37333 # check multiple-2 success: 1
37334 INSERT INTO t1 SELECT * FROM t0_template
37335 WHERE MOD(f_int1,3) = 0;
37337 # check multiple-3 success: 1
37338 UPDATE t1 SET f_int1 = f_int1 + @max_row
37339 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
37340 AND @max_row_div2 + @max_row_div4;
37342 # check multiple-4 success: 1
37344 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
37345 AND @max_row_div2 + @max_row_div4 + @max_row;
37347 # check multiple-5 success: 1
37348 SELECT COUNT(*) INTO @try_count FROM t0_template
37349 WHERE MOD(f_int1,3) = 0
37350 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
37351 SELECT COUNT(*) INTO @clash_count
37352 FROM t1 INNER JOIN t0_template USING(f_int1)
37353 WHERE MOD(f_int1,3) = 0
37354 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
37355 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
37357 SET f_int1 = @cur_value , f_int2 = @cur_value,
37358 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
37359 f_charbig = '#SINGLE#';
37361 # check single-1 success: 1
37362 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
37364 SET f_int1 = @cur_value , f_int2 = @cur_value,
37365 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
37366 f_charbig = '#SINGLE#';
37368 # check single-2 success: 1
37369 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
37370 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
37371 UPDATE t1 SET f_int1 = @cur_value2
37372 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
37374 # check single-3 success: 1
37375 SET @cur_value1= -1;
37376 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
37377 UPDATE t1 SET f_int1 = @cur_value1
37378 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
37380 # check single-4 success: 1
37381 SELECT MAX(f_int1) INTO @cur_value FROM t1;
37382 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
37384 # check single-5 success: 1
37385 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
37387 # check single-6 success: 1
37388 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
37390 Warning 1264 Out of range value for column 'f_int1' at row 1
37391 Warning 1264 Out of range value for column 'f_int2' at row 1
37393 # check single-7 success: 1
37394 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
37395 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
37396 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
37397 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
37398 f_charbig = '#NULL#';
37400 SET f_int1 = NULL , f_int2 = -@max_row,
37401 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
37402 f_charbig = '#NULL#';
37403 ERROR 23000: Column 'f_int1' cannot be null
37404 # check null success: 1
37406 WHERE f_int1 = 0 AND f_int2 = 0
37407 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
37408 AND f_charbig = '#NULL#';
37409 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37410 SELECT f_int1, f_int1, '', '', 'was inserted'
37411 FROM t0_template source_tab
37412 WHERE MOD(f_int1,3) = 0
37413 AND f_int1 BETWEEN @max_row_div2 AND @max_row
37415 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
37416 f_int2 = 2 * @max_row + source_tab.f_int1,
37417 f_charbig = 'was updated';
37419 # check unique-1-a success: 1
37421 # check unique-1-b success: 1
37422 DELETE FROM t1 WHERE f_charbig = 'was inserted';
37423 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37424 f_int2 = CAST(f_char1 AS SIGNED INT),
37425 f_charbig = CONCAT('===',f_char1,'===')
37426 WHERE f_charbig = 'was updated';
37427 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37428 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
37429 FROM t0_template source_tab
37430 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
37432 # check replace success: 1
37434 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
37436 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
37437 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
37438 UPDATE t1 SET f_int2 = f_int1,
37439 f_char1 = CAST(f_int1 AS CHAR),
37440 f_char2 = CAST(f_int1 AS CHAR),
37441 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
37442 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
37444 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37445 SELECT f_int1, f_int1, '', '', 'was inserted'
37446 FROM t0_template source_tab
37447 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37449 # check transactions-1 success: 1
37452 # check transactions-2 success: 1
37455 # check transactions-3 success: 1
37456 DELETE FROM t1 WHERE f_charbig = 'was inserted';
37460 # check transactions-4 success: 1
37461 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37462 SELECT f_int1, f_int1, '', '', 'was inserted'
37463 FROM t0_template source_tab
37464 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37466 # check transactions-5 success: 1
37469 # check transactions-6 success: 1
37470 # INFO: Storage engine used for t1 seems to be transactional.
37473 # check transactions-7 success: 1
37474 DELETE FROM t1 WHERE f_charbig = 'was inserted';
37476 SET @@session.sql_mode = 'traditional';
37477 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
37478 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37479 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
37480 '', '', 'was inserted' FROM t0_template
37481 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37482 ERROR 22012: Division by 0
37485 # check transactions-8 success: 1
37486 # INFO: Storage engine used for t1 seems to be able to revert
37487 # changes made by the failing statement.
37488 SET @@session.sql_mode = '';
37490 DELETE FROM t1 WHERE f_charbig = 'was inserted';
37492 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
37494 # check special-1 success: 1
37495 UPDATE t1 SET f_charbig = '';
37497 # check special-2 success: 1
37498 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
37499 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
37500 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
37501 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37502 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37503 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37504 'just inserted' FROM t0_template
37505 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37506 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
37508 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37509 f_charbig = 'updated by trigger'
37510 WHERE f_int1 = new.f_int1;
37512 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37513 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
37514 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37516 # check trigger-1 success: 1
37517 DROP TRIGGER trg_1;
37518 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37519 f_int2 = CAST(f_char1 AS SIGNED INT),
37520 f_charbig = 'just inserted'
37521 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37523 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37524 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37525 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37526 'just inserted' FROM t0_template
37527 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37528 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
37530 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37531 f_charbig = 'updated by trigger'
37532 WHERE f_int1 = new.f_int1;
37534 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37535 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
37536 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37538 # check trigger-2 success: 1
37539 DROP TRIGGER trg_1;
37540 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37541 f_int2 = CAST(f_char1 AS SIGNED INT),
37542 f_charbig = 'just inserted'
37543 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37545 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37546 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37547 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37548 'just inserted' FROM t0_template
37549 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37550 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
37552 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37553 f_charbig = 'updated by trigger'
37554 WHERE f_int1 = new.f_int1;
37556 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
37557 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37559 # check trigger-3 success: 1
37560 DROP TRIGGER trg_1;
37561 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37562 f_int2 = CAST(f_char1 AS SIGNED INT),
37563 f_charbig = 'just inserted'
37564 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37566 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37567 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37568 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37569 'just inserted' FROM t0_template
37570 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37571 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
37573 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37574 f_charbig = 'updated by trigger'
37575 WHERE f_int1 = - old.f_int1;
37577 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
37578 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37580 # check trigger-4 success: 1
37581 DROP TRIGGER trg_1;
37582 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37583 f_int2 = CAST(f_char1 AS SIGNED INT),
37584 f_charbig = 'just inserted'
37585 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37587 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37588 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37589 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37590 'just inserted' FROM t0_template
37591 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37592 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
37594 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37595 f_charbig = 'updated by trigger'
37596 WHERE f_int1 = new.f_int1;
37598 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
37599 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37601 # check trigger-5 success: 1
37602 DROP TRIGGER trg_1;
37603 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37604 f_int2 = CAST(f_char1 AS SIGNED INT),
37605 f_charbig = 'just inserted'
37606 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37608 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37609 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37610 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37611 'just inserted' FROM t0_template
37612 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37613 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
37615 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37616 f_charbig = 'updated by trigger'
37617 WHERE f_int1 = - old.f_int1;
37619 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
37620 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37622 # check trigger-6 success: 1
37623 DROP TRIGGER trg_1;
37624 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37625 f_int2 = CAST(f_char1 AS SIGNED INT),
37626 f_charbig = 'just inserted'
37627 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37629 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37630 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37631 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37632 'just inserted' FROM t0_template
37633 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37634 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
37636 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37637 f_charbig = 'updated by trigger'
37638 WHERE f_int1 = - old.f_int1;
37641 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37643 # check trigger-7 success: 1
37644 DROP TRIGGER trg_1;
37645 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37646 f_int2 = CAST(f_char1 AS SIGNED INT),
37647 f_charbig = 'just inserted'
37648 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37650 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37651 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
37652 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
37653 'just inserted' FROM t0_template
37654 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37655 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
37657 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
37658 f_charbig = 'updated by trigger'
37659 WHERE f_int1 = - old.f_int1;
37662 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
37664 # check trigger-8 success: 1
37665 DROP TRIGGER trg_1;
37666 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37667 f_int2 = CAST(f_char1 AS SIGNED INT),
37668 f_charbig = 'just inserted'
37669 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
37671 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37673 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
37674 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
37676 SET new.f_int1 = old.f_int1 + @max_row,
37677 new.f_int2 = old.f_int2 - @max_row,
37678 new.f_charbig = '####updated per update trigger####';
37681 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
37682 f_charbig = '####updated per update statement itself####';
37684 # check trigger-9 success: 1
37685 DROP TRIGGER trg_2;
37686 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37687 f_int2 = CAST(f_char1 AS SIGNED INT),
37688 f_charbig = CONCAT('===',f_char1,'===');
37689 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
37691 SET new.f_int1 = new.f_int1 + @max_row,
37692 new.f_int2 = new.f_int2 - @max_row,
37693 new.f_charbig = '####updated per update trigger####';
37696 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
37697 f_charbig = '####updated per update statement itself####';
37699 # check trigger-10 success: 1
37700 DROP TRIGGER trg_2;
37701 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37702 f_int2 = CAST(f_char1 AS SIGNED INT),
37703 f_charbig = CONCAT('===',f_char1,'===');
37704 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
37706 SET new.f_int1 = @my_max1 + @counter,
37707 new.f_int2 = @my_min2 - @counter,
37708 new.f_charbig = '####updated per insert trigger####';
37709 SET @counter = @counter + 1;
37712 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
37713 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37714 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
37715 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
37716 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
37718 DROP TRIGGER trg_3;
37720 # check trigger-11 success: 1
37722 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
37723 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
37724 AND f_charbig = '####updated per insert trigger####';
37725 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
37727 SET new.f_int1 = @my_max1 + @counter,
37728 new.f_int2 = @my_min2 - @counter,
37729 new.f_charbig = '####updated per insert trigger####';
37730 SET @counter = @counter + 1;
37733 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
37734 INSERT INTO t1 (f_char1, f_char2, f_charbig)
37735 SELECT CAST(f_int1 AS CHAR),
37736 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
37737 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
37739 DROP TRIGGER trg_3;
37741 # check trigger-12 success: 1
37743 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
37744 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
37745 AND f_charbig = '####updated per insert trigger####';
37747 Table Op Msg_type Msg_text
37748 test.t1 analyze status OK
37749 CHECK TABLE t1 EXTENDED;
37750 Table Op Msg_type Msg_text
37751 test.t1 check status OK
37752 CHECKSUM TABLE t1 EXTENDED;
37754 test.t1 <some_value>
37756 Table Op Msg_type Msg_text
37757 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
37758 test.t1 optimize status OK
37759 # check layout success: 1
37760 REPAIR TABLE t1 EXTENDED;
37761 Table Op Msg_type Msg_text
37762 test.t1 repair note The storage engine for the table doesn't support repair
37763 # check layout success: 1
37766 # check TRUNCATE success: 1
37767 # check layout success: 1
37768 # End usability test (inc/partition_check.inc)
37775 f_charbig VARCHAR(1000)
37776 , PRIMARY KEY (f_int2,f_int1)
37778 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
37779 (PARTITION parta VALUES LESS THAN (0),
37780 PARTITION partb VALUES LESS THAN (5),
37781 PARTITION partc VALUES LESS THAN (10),
37782 PARTITION partd VALUES LESS THAN (2147483646));
37783 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
37784 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
37785 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
37786 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
37787 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
37788 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
37789 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
37790 # Start usability test (inc/partition_check.inc)
37792 SHOW CREATE TABLE t1;
37794 t1 CREATE TABLE `t1` (
37795 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
37796 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
37797 `f_char1` char(20) DEFAULT NULL,
37798 `f_char2` char(20) DEFAULT NULL,
37799 `f_charbig` varchar(1000) DEFAULT NULL,
37800 PRIMARY KEY (`f_int2`,`f_int1`)
37801 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
37802 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
37803 SUBPARTITION BY HASH (f_int1)
37805 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
37806 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
37807 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
37808 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
37810 # check prerequisites-1 success: 1
37811 # check COUNT(*) success: 1
37812 # check MIN/MAX(f_int1) success: 1
37813 # check MIN/MAX(f_int2) success: 1
37814 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37815 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
37816 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
37817 WHERE f_int1 IN (2,3);
37818 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
37819 # check prerequisites-3 success: 1
37820 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
37821 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37822 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
37823 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
37824 WHERE f_int1 IN (2,3);
37825 DELETE FROM t1 WHERE f_charbig = 'delete me';
37826 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37827 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
37828 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
37829 WHERE f_int1 IN (2,3);
37830 DELETE FROM t1 WHERE f_charbig = 'delete me';
37831 # check read via f_int1 success: 1
37832 # check read via f_int2 success: 1
37834 # check multiple-1 success: 1
37835 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
37837 # check multiple-2 success: 1
37838 INSERT INTO t1 SELECT * FROM t0_template
37839 WHERE MOD(f_int1,3) = 0;
37841 # check multiple-3 success: 1
37842 UPDATE t1 SET f_int1 = f_int1 + @max_row
37843 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
37844 AND @max_row_div2 + @max_row_div4;
37846 # check multiple-4 success: 1
37848 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
37849 AND @max_row_div2 + @max_row_div4 + @max_row;
37851 # check multiple-5 success: 1
37852 SELECT COUNT(*) INTO @try_count FROM t0_template
37853 WHERE MOD(f_int1,3) = 0
37854 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
37855 SELECT COUNT(*) INTO @clash_count
37856 FROM t1 INNER JOIN t0_template USING(f_int1)
37857 WHERE MOD(f_int1,3) = 0
37858 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
37859 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
37861 SET f_int1 = @cur_value , f_int2 = @cur_value,
37862 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
37863 f_charbig = '#SINGLE#';
37865 # check single-1 success: 1
37866 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
37868 SET f_int1 = @cur_value , f_int2 = @cur_value,
37869 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
37870 f_charbig = '#SINGLE#';
37872 # check single-2 success: 1
37873 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
37874 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
37875 UPDATE t1 SET f_int1 = @cur_value2
37876 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
37878 # check single-3 success: 1
37879 SET @cur_value1= -1;
37880 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
37881 UPDATE t1 SET f_int1 = @cur_value1
37882 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
37884 # check single-4 success: 1
37885 SELECT MAX(f_int1) INTO @cur_value FROM t1;
37886 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
37888 # check single-5 success: 1
37889 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
37891 # check single-6 success: 1
37892 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
37894 Warning 1264 Out of range value for column 'f_int1' at row 1
37895 Warning 1264 Out of range value for column 'f_int2' at row 1
37897 # check single-7 success: 1
37898 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
37899 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
37900 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
37901 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
37902 f_charbig = '#NULL#';
37904 SET f_int1 = NULL , f_int2 = -@max_row,
37905 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
37906 f_charbig = '#NULL#';
37907 ERROR 23000: Column 'f_int1' cannot be null
37908 # check null success: 1
37910 WHERE f_int1 = 0 AND f_int2 = 0
37911 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
37912 AND f_charbig = '#NULL#';
37913 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37914 SELECT f_int1, f_int1, '', '', 'was inserted'
37915 FROM t0_template source_tab
37916 WHERE MOD(f_int1,3) = 0
37917 AND f_int1 BETWEEN @max_row_div2 AND @max_row
37919 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
37920 f_int2 = 2 * @max_row + source_tab.f_int1,
37921 f_charbig = 'was updated';
37923 # check unique-1-a success: 1
37925 # check unique-1-b success: 1
37926 DELETE FROM t1 WHERE f_charbig = 'was inserted';
37927 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
37928 f_int2 = CAST(f_char1 AS SIGNED INT),
37929 f_charbig = CONCAT('===',f_char1,'===')
37930 WHERE f_charbig = 'was updated';
37931 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37932 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
37933 FROM t0_template source_tab
37934 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
37936 # check replace success: 1
37938 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
37940 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
37941 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
37942 UPDATE t1 SET f_int2 = f_int1,
37943 f_char1 = CAST(f_int1 AS CHAR),
37944 f_char2 = CAST(f_int1 AS CHAR),
37945 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
37946 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
37948 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37949 SELECT f_int1, f_int1, '', '', 'was inserted'
37950 FROM t0_template source_tab
37951 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37953 # check transactions-1 success: 1
37956 # check transactions-2 success: 1
37959 # check transactions-3 success: 1
37960 DELETE FROM t1 WHERE f_charbig = 'was inserted';
37964 # check transactions-4 success: 1
37965 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37966 SELECT f_int1, f_int1, '', '', 'was inserted'
37967 FROM t0_template source_tab
37968 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37970 # check transactions-5 success: 1
37973 # check transactions-6 success: 1
37974 # INFO: Storage engine used for t1 seems to be transactional.
37977 # check transactions-7 success: 1
37978 DELETE FROM t1 WHERE f_charbig = 'was inserted';
37980 SET @@session.sql_mode = 'traditional';
37981 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
37982 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
37983 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
37984 '', '', 'was inserted' FROM t0_template
37985 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
37986 ERROR 22012: Division by 0
37989 # check transactions-8 success: 1
37990 # INFO: Storage engine used for t1 seems to be able to revert
37991 # changes made by the failing statement.
37992 SET @@session.sql_mode = '';
37994 DELETE FROM t1 WHERE f_charbig = 'was inserted';
37996 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
37998 # check special-1 success: 1
37999 UPDATE t1 SET f_charbig = '';
38001 # check special-2 success: 1
38002 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
38003 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
38004 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
38005 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38006 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38007 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38008 'just inserted' FROM t0_template
38009 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38010 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
38012 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38013 f_charbig = 'updated by trigger'
38014 WHERE f_int1 = new.f_int1;
38016 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38017 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
38018 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38020 # check trigger-1 success: 1
38021 DROP TRIGGER trg_1;
38022 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38023 f_int2 = CAST(f_char1 AS SIGNED INT),
38024 f_charbig = 'just inserted'
38025 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38027 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38028 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38029 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38030 'just inserted' FROM t0_template
38031 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38032 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
38034 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38035 f_charbig = 'updated by trigger'
38036 WHERE f_int1 = new.f_int1;
38038 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38039 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
38040 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38042 # check trigger-2 success: 1
38043 DROP TRIGGER trg_1;
38044 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38045 f_int2 = CAST(f_char1 AS SIGNED INT),
38046 f_charbig = 'just inserted'
38047 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38049 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38050 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38051 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38052 'just inserted' FROM t0_template
38053 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38054 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
38056 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38057 f_charbig = 'updated by trigger'
38058 WHERE f_int1 = new.f_int1;
38060 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
38061 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38063 # check trigger-3 success: 1
38064 DROP TRIGGER trg_1;
38065 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38066 f_int2 = CAST(f_char1 AS SIGNED INT),
38067 f_charbig = 'just inserted'
38068 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38070 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38071 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38072 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38073 'just inserted' FROM t0_template
38074 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38075 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
38077 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38078 f_charbig = 'updated by trigger'
38079 WHERE f_int1 = - old.f_int1;
38081 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
38082 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38084 # check trigger-4 success: 1
38085 DROP TRIGGER trg_1;
38086 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38087 f_int2 = CAST(f_char1 AS SIGNED INT),
38088 f_charbig = 'just inserted'
38089 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38091 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38092 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38093 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38094 'just inserted' FROM t0_template
38095 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38096 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
38098 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38099 f_charbig = 'updated by trigger'
38100 WHERE f_int1 = new.f_int1;
38102 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
38103 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38105 # check trigger-5 success: 1
38106 DROP TRIGGER trg_1;
38107 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38108 f_int2 = CAST(f_char1 AS SIGNED INT),
38109 f_charbig = 'just inserted'
38110 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38112 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38113 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38114 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38115 'just inserted' FROM t0_template
38116 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38117 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
38119 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38120 f_charbig = 'updated by trigger'
38121 WHERE f_int1 = - old.f_int1;
38123 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
38124 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38126 # check trigger-6 success: 1
38127 DROP TRIGGER trg_1;
38128 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38129 f_int2 = CAST(f_char1 AS SIGNED INT),
38130 f_charbig = 'just inserted'
38131 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38133 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38134 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38135 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38136 'just inserted' FROM t0_template
38137 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38138 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
38140 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38141 f_charbig = 'updated by trigger'
38142 WHERE f_int1 = - old.f_int1;
38145 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38147 # check trigger-7 success: 1
38148 DROP TRIGGER trg_1;
38149 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38150 f_int2 = CAST(f_char1 AS SIGNED INT),
38151 f_charbig = 'just inserted'
38152 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38154 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38155 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38156 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38157 'just inserted' FROM t0_template
38158 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38159 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
38161 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38162 f_charbig = 'updated by trigger'
38163 WHERE f_int1 = - old.f_int1;
38166 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38168 # check trigger-8 success: 1
38169 DROP TRIGGER trg_1;
38170 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38171 f_int2 = CAST(f_char1 AS SIGNED INT),
38172 f_charbig = 'just inserted'
38173 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38175 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38177 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38178 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
38180 SET new.f_int1 = old.f_int1 + @max_row,
38181 new.f_int2 = old.f_int2 - @max_row,
38182 new.f_charbig = '####updated per update trigger####';
38185 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
38186 f_charbig = '####updated per update statement itself####';
38188 # check trigger-9 success: 1
38189 DROP TRIGGER trg_2;
38190 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38191 f_int2 = CAST(f_char1 AS SIGNED INT),
38192 f_charbig = CONCAT('===',f_char1,'===');
38193 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
38195 SET new.f_int1 = new.f_int1 + @max_row,
38196 new.f_int2 = new.f_int2 - @max_row,
38197 new.f_charbig = '####updated per update trigger####';
38200 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
38201 f_charbig = '####updated per update statement itself####';
38203 # check trigger-10 success: 1
38204 DROP TRIGGER trg_2;
38205 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38206 f_int2 = CAST(f_char1 AS SIGNED INT),
38207 f_charbig = CONCAT('===',f_char1,'===');
38208 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
38210 SET new.f_int1 = @my_max1 + @counter,
38211 new.f_int2 = @my_min2 - @counter,
38212 new.f_charbig = '####updated per insert trigger####';
38213 SET @counter = @counter + 1;
38216 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
38217 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38218 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
38219 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
38220 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
38222 DROP TRIGGER trg_3;
38224 # check trigger-11 success: 1
38226 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
38227 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
38228 AND f_charbig = '####updated per insert trigger####';
38229 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
38231 SET new.f_int1 = @my_max1 + @counter,
38232 new.f_int2 = @my_min2 - @counter,
38233 new.f_charbig = '####updated per insert trigger####';
38234 SET @counter = @counter + 1;
38237 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
38238 INSERT INTO t1 (f_char1, f_char2, f_charbig)
38239 SELECT CAST(f_int1 AS CHAR),
38240 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
38241 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
38243 DROP TRIGGER trg_3;
38245 # check trigger-12 success: 1
38247 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
38248 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
38249 AND f_charbig = '####updated per insert trigger####';
38251 Table Op Msg_type Msg_text
38252 test.t1 analyze status OK
38253 CHECK TABLE t1 EXTENDED;
38254 Table Op Msg_type Msg_text
38255 test.t1 check status OK
38256 CHECKSUM TABLE t1 EXTENDED;
38258 test.t1 <some_value>
38260 Table Op Msg_type Msg_text
38261 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
38262 test.t1 optimize status OK
38263 # check layout success: 1
38264 REPAIR TABLE t1 EXTENDED;
38265 Table Op Msg_type Msg_text
38266 test.t1 repair note The storage engine for the table doesn't support repair
38267 # check layout success: 1
38270 # check TRUNCATE success: 1
38271 # check layout success: 1
38272 # End usability test (inc/partition_check.inc)
38279 f_charbig VARCHAR(1000)
38280 , PRIMARY KEY (f_int2,f_int1)
38282 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
38283 (PARTITION part1 VALUES LESS THAN (0)
38284 (SUBPARTITION subpart11, SUBPARTITION subpart12),
38285 PARTITION part2 VALUES LESS THAN (5)
38286 (SUBPARTITION subpart21, SUBPARTITION subpart22),
38287 PARTITION part3 VALUES LESS THAN (10)
38288 (SUBPARTITION subpart31, SUBPARTITION subpart32),
38289 PARTITION part4 VALUES LESS THAN (2147483646)
38290 (SUBPARTITION subpart41, SUBPARTITION subpart42));
38291 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
38292 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
38293 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
38294 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
38295 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
38296 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
38297 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
38298 # Start usability test (inc/partition_check.inc)
38300 SHOW CREATE TABLE t1;
38302 t1 CREATE TABLE `t1` (
38303 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
38304 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
38305 `f_char1` char(20) DEFAULT NULL,
38306 `f_char2` char(20) DEFAULT NULL,
38307 `f_charbig` varchar(1000) DEFAULT NULL,
38308 PRIMARY KEY (`f_int2`,`f_int1`)
38309 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
38310 /*!50100 PARTITION BY RANGE (f_int1)
38311 SUBPARTITION BY KEY (f_int1)
38312 (PARTITION part1 VALUES LESS THAN (0)
38313 (SUBPARTITION subpart11 ENGINE = InnoDB,
38314 SUBPARTITION subpart12 ENGINE = InnoDB),
38315 PARTITION part2 VALUES LESS THAN (5)
38316 (SUBPARTITION subpart21 ENGINE = InnoDB,
38317 SUBPARTITION subpart22 ENGINE = InnoDB),
38318 PARTITION part3 VALUES LESS THAN (10)
38319 (SUBPARTITION subpart31 ENGINE = InnoDB,
38320 SUBPARTITION subpart32 ENGINE = InnoDB),
38321 PARTITION part4 VALUES LESS THAN (2147483646)
38322 (SUBPARTITION subpart41 ENGINE = InnoDB,
38323 SUBPARTITION subpart42 ENGINE = InnoDB)) */
38325 # check prerequisites-1 success: 1
38326 # check COUNT(*) success: 1
38327 # check MIN/MAX(f_int1) success: 1
38328 # check MIN/MAX(f_int2) success: 1
38329 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38330 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
38331 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
38332 WHERE f_int1 IN (2,3);
38333 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
38334 # check prerequisites-3 success: 1
38335 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
38336 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38337 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
38338 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
38339 WHERE f_int1 IN (2,3);
38340 DELETE FROM t1 WHERE f_charbig = 'delete me';
38341 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38342 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
38343 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
38344 WHERE f_int1 IN (2,3);
38345 DELETE FROM t1 WHERE f_charbig = 'delete me';
38346 # check read via f_int1 success: 1
38347 # check read via f_int2 success: 1
38349 # check multiple-1 success: 1
38350 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
38352 # check multiple-2 success: 1
38353 INSERT INTO t1 SELECT * FROM t0_template
38354 WHERE MOD(f_int1,3) = 0;
38356 # check multiple-3 success: 1
38357 UPDATE t1 SET f_int1 = f_int1 + @max_row
38358 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
38359 AND @max_row_div2 + @max_row_div4;
38361 # check multiple-4 success: 1
38363 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
38364 AND @max_row_div2 + @max_row_div4 + @max_row;
38366 # check multiple-5 success: 1
38367 SELECT COUNT(*) INTO @try_count FROM t0_template
38368 WHERE MOD(f_int1,3) = 0
38369 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
38370 SELECT COUNT(*) INTO @clash_count
38371 FROM t1 INNER JOIN t0_template USING(f_int1)
38372 WHERE MOD(f_int1,3) = 0
38373 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
38374 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
38376 SET f_int1 = @cur_value , f_int2 = @cur_value,
38377 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
38378 f_charbig = '#SINGLE#';
38380 # check single-1 success: 1
38381 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
38383 SET f_int1 = @cur_value , f_int2 = @cur_value,
38384 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
38385 f_charbig = '#SINGLE#';
38387 # check single-2 success: 1
38388 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
38389 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
38390 UPDATE t1 SET f_int1 = @cur_value2
38391 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
38393 # check single-3 success: 1
38394 SET @cur_value1= -1;
38395 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
38396 UPDATE t1 SET f_int1 = @cur_value1
38397 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
38399 # check single-4 success: 1
38400 SELECT MAX(f_int1) INTO @cur_value FROM t1;
38401 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
38403 # check single-5 success: 1
38404 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
38406 # check single-6 success: 1
38407 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
38409 Warning 1264 Out of range value for column 'f_int1' at row 1
38410 Warning 1264 Out of range value for column 'f_int2' at row 1
38412 # check single-7 success: 1
38413 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
38414 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
38415 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
38416 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
38417 f_charbig = '#NULL#';
38419 SET f_int1 = NULL , f_int2 = -@max_row,
38420 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
38421 f_charbig = '#NULL#';
38422 ERROR 23000: Column 'f_int1' cannot be null
38423 # check null success: 1
38425 WHERE f_int1 = 0 AND f_int2 = 0
38426 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
38427 AND f_charbig = '#NULL#';
38428 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38429 SELECT f_int1, f_int1, '', '', 'was inserted'
38430 FROM t0_template source_tab
38431 WHERE MOD(f_int1,3) = 0
38432 AND f_int1 BETWEEN @max_row_div2 AND @max_row
38434 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
38435 f_int2 = 2 * @max_row + source_tab.f_int1,
38436 f_charbig = 'was updated';
38438 # check unique-1-a success: 1
38440 # check unique-1-b success: 1
38441 DELETE FROM t1 WHERE f_charbig = 'was inserted';
38442 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38443 f_int2 = CAST(f_char1 AS SIGNED INT),
38444 f_charbig = CONCAT('===',f_char1,'===')
38445 WHERE f_charbig = 'was updated';
38446 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38447 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
38448 FROM t0_template source_tab
38449 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
38451 # check replace success: 1
38453 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
38455 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
38456 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
38457 UPDATE t1 SET f_int2 = f_int1,
38458 f_char1 = CAST(f_int1 AS CHAR),
38459 f_char2 = CAST(f_int1 AS CHAR),
38460 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
38461 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
38463 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38464 SELECT f_int1, f_int1, '', '', 'was inserted'
38465 FROM t0_template source_tab
38466 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
38468 # check transactions-1 success: 1
38471 # check transactions-2 success: 1
38474 # check transactions-3 success: 1
38475 DELETE FROM t1 WHERE f_charbig = 'was inserted';
38479 # check transactions-4 success: 1
38480 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38481 SELECT f_int1, f_int1, '', '', 'was inserted'
38482 FROM t0_template source_tab
38483 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
38485 # check transactions-5 success: 1
38488 # check transactions-6 success: 1
38489 # INFO: Storage engine used for t1 seems to be transactional.
38492 # check transactions-7 success: 1
38493 DELETE FROM t1 WHERE f_charbig = 'was inserted';
38495 SET @@session.sql_mode = 'traditional';
38496 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
38497 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38498 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
38499 '', '', 'was inserted' FROM t0_template
38500 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
38501 ERROR 22012: Division by 0
38504 # check transactions-8 success: 1
38505 # INFO: Storage engine used for t1 seems to be able to revert
38506 # changes made by the failing statement.
38507 SET @@session.sql_mode = '';
38509 DELETE FROM t1 WHERE f_charbig = 'was inserted';
38511 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
38513 # check special-1 success: 1
38514 UPDATE t1 SET f_charbig = '';
38516 # check special-2 success: 1
38517 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
38518 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
38519 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
38520 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38521 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38522 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38523 'just inserted' FROM t0_template
38524 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38525 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
38527 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38528 f_charbig = 'updated by trigger'
38529 WHERE f_int1 = new.f_int1;
38531 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38532 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
38533 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38535 # check trigger-1 success: 1
38536 DROP TRIGGER trg_1;
38537 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38538 f_int2 = CAST(f_char1 AS SIGNED INT),
38539 f_charbig = 'just inserted'
38540 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38542 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38543 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38544 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38545 'just inserted' FROM t0_template
38546 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38547 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
38549 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38550 f_charbig = 'updated by trigger'
38551 WHERE f_int1 = new.f_int1;
38553 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38554 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
38555 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38557 # check trigger-2 success: 1
38558 DROP TRIGGER trg_1;
38559 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38560 f_int2 = CAST(f_char1 AS SIGNED INT),
38561 f_charbig = 'just inserted'
38562 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38564 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38565 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38566 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38567 'just inserted' FROM t0_template
38568 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38569 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
38571 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38572 f_charbig = 'updated by trigger'
38573 WHERE f_int1 = new.f_int1;
38575 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
38576 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38578 # check trigger-3 success: 1
38579 DROP TRIGGER trg_1;
38580 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38581 f_int2 = CAST(f_char1 AS SIGNED INT),
38582 f_charbig = 'just inserted'
38583 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38585 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38586 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38587 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38588 'just inserted' FROM t0_template
38589 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38590 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
38592 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38593 f_charbig = 'updated by trigger'
38594 WHERE f_int1 = - old.f_int1;
38596 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
38597 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38599 # check trigger-4 success: 1
38600 DROP TRIGGER trg_1;
38601 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38602 f_int2 = CAST(f_char1 AS SIGNED INT),
38603 f_charbig = 'just inserted'
38604 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38606 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38607 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38608 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38609 'just inserted' FROM t0_template
38610 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38611 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
38613 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38614 f_charbig = 'updated by trigger'
38615 WHERE f_int1 = new.f_int1;
38617 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
38618 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38620 # check trigger-5 success: 1
38621 DROP TRIGGER trg_1;
38622 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38623 f_int2 = CAST(f_char1 AS SIGNED INT),
38624 f_charbig = 'just inserted'
38625 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38627 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38628 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38629 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38630 'just inserted' FROM t0_template
38631 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38632 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
38634 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38635 f_charbig = 'updated by trigger'
38636 WHERE f_int1 = - old.f_int1;
38638 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
38639 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38641 # check trigger-6 success: 1
38642 DROP TRIGGER trg_1;
38643 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38644 f_int2 = CAST(f_char1 AS SIGNED INT),
38645 f_charbig = 'just inserted'
38646 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38648 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38649 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38650 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38651 'just inserted' FROM t0_template
38652 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38653 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
38655 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38656 f_charbig = 'updated by trigger'
38657 WHERE f_int1 = - old.f_int1;
38660 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38662 # check trigger-7 success: 1
38663 DROP TRIGGER trg_1;
38664 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38665 f_int2 = CAST(f_char1 AS SIGNED INT),
38666 f_charbig = 'just inserted'
38667 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38669 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38670 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
38671 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
38672 'just inserted' FROM t0_template
38673 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38674 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
38676 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
38677 f_charbig = 'updated by trigger'
38678 WHERE f_int1 = - old.f_int1;
38681 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
38683 # check trigger-8 success: 1
38684 DROP TRIGGER trg_1;
38685 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38686 f_int2 = CAST(f_char1 AS SIGNED INT),
38687 f_charbig = 'just inserted'
38688 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
38690 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38692 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
38693 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
38695 SET new.f_int1 = old.f_int1 + @max_row,
38696 new.f_int2 = old.f_int2 - @max_row,
38697 new.f_charbig = '####updated per update trigger####';
38700 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
38701 f_charbig = '####updated per update statement itself####';
38703 # check trigger-9 success: 1
38704 DROP TRIGGER trg_2;
38705 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38706 f_int2 = CAST(f_char1 AS SIGNED INT),
38707 f_charbig = CONCAT('===',f_char1,'===');
38708 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
38710 SET new.f_int1 = new.f_int1 + @max_row,
38711 new.f_int2 = new.f_int2 - @max_row,
38712 new.f_charbig = '####updated per update trigger####';
38715 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
38716 f_charbig = '####updated per update statement itself####';
38718 # check trigger-10 success: 1
38719 DROP TRIGGER trg_2;
38720 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38721 f_int2 = CAST(f_char1 AS SIGNED INT),
38722 f_charbig = CONCAT('===',f_char1,'===');
38723 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
38725 SET new.f_int1 = @my_max1 + @counter,
38726 new.f_int2 = @my_min2 - @counter,
38727 new.f_charbig = '####updated per insert trigger####';
38728 SET @counter = @counter + 1;
38731 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
38732 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38733 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
38734 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
38735 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
38737 DROP TRIGGER trg_3;
38739 # check trigger-11 success: 1
38741 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
38742 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
38743 AND f_charbig = '####updated per insert trigger####';
38744 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
38746 SET new.f_int1 = @my_max1 + @counter,
38747 new.f_int2 = @my_min2 - @counter,
38748 new.f_charbig = '####updated per insert trigger####';
38749 SET @counter = @counter + 1;
38752 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
38753 INSERT INTO t1 (f_char1, f_char2, f_charbig)
38754 SELECT CAST(f_int1 AS CHAR),
38755 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
38756 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
38758 DROP TRIGGER trg_3;
38760 # check trigger-12 success: 1
38762 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
38763 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
38764 AND f_charbig = '####updated per insert trigger####';
38766 Table Op Msg_type Msg_text
38767 test.t1 analyze status OK
38768 CHECK TABLE t1 EXTENDED;
38769 Table Op Msg_type Msg_text
38770 test.t1 check status OK
38771 CHECKSUM TABLE t1 EXTENDED;
38773 test.t1 <some_value>
38775 Table Op Msg_type Msg_text
38776 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
38777 test.t1 optimize status OK
38778 # check layout success: 1
38779 REPAIR TABLE t1 EXTENDED;
38780 Table Op Msg_type Msg_text
38781 test.t1 repair note The storage engine for the table doesn't support repair
38782 # check layout success: 1
38785 # check TRUNCATE success: 1
38786 # check layout success: 1
38787 # End usability test (inc/partition_check.inc)
38794 f_charbig VARCHAR(1000)
38795 , PRIMARY KEY (f_int2,f_int1)
38797 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
38798 (PARTITION part1 VALUES IN (0)
38799 (SUBPARTITION sp11, SUBPARTITION sp12),
38800 PARTITION part2 VALUES IN (1)
38801 (SUBPARTITION sp21, SUBPARTITION sp22),
38802 PARTITION part3 VALUES IN (2)
38803 (SUBPARTITION sp31, SUBPARTITION sp32),
38804 PARTITION part4 VALUES IN (NULL)
38805 (SUBPARTITION sp41, SUBPARTITION sp42));
38806 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
38807 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
38808 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
38809 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
38810 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
38811 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
38812 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
38813 # Start usability test (inc/partition_check.inc)
38815 SHOW CREATE TABLE t1;
38817 t1 CREATE TABLE `t1` (
38818 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
38819 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
38820 `f_char1` char(20) DEFAULT NULL,
38821 `f_char2` char(20) DEFAULT NULL,
38822 `f_charbig` varchar(1000) DEFAULT NULL,
38823 PRIMARY KEY (`f_int2`,`f_int1`)
38824 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
38825 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
38826 SUBPARTITION BY HASH (f_int1 + 1)
38827 (PARTITION part1 VALUES IN (0)
38828 (SUBPARTITION sp11 ENGINE = InnoDB,
38829 SUBPARTITION sp12 ENGINE = InnoDB),
38830 PARTITION part2 VALUES IN (1)
38831 (SUBPARTITION sp21 ENGINE = InnoDB,
38832 SUBPARTITION sp22 ENGINE = InnoDB),
38833 PARTITION part3 VALUES IN (2)
38834 (SUBPARTITION sp31 ENGINE = InnoDB,
38835 SUBPARTITION sp32 ENGINE = InnoDB),
38836 PARTITION part4 VALUES IN (NULL)
38837 (SUBPARTITION sp41 ENGINE = InnoDB,
38838 SUBPARTITION sp42 ENGINE = InnoDB)) */
38840 # check prerequisites-1 success: 1
38841 # check COUNT(*) success: 1
38842 # check MIN/MAX(f_int1) success: 1
38843 # check MIN/MAX(f_int2) success: 1
38844 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38845 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
38846 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
38847 WHERE f_int1 IN (2,3);
38848 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
38849 # check prerequisites-3 success: 1
38850 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
38851 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38852 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
38853 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
38854 WHERE f_int1 IN (2,3);
38855 DELETE FROM t1 WHERE f_charbig = 'delete me';
38856 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38857 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
38858 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
38859 WHERE f_int1 IN (2,3);
38860 DELETE FROM t1 WHERE f_charbig = 'delete me';
38861 # check read via f_int1 success: 1
38862 # check read via f_int2 success: 1
38864 # check multiple-1 success: 1
38865 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
38867 # check multiple-2 success: 1
38868 INSERT INTO t1 SELECT * FROM t0_template
38869 WHERE MOD(f_int1,3) = 0;
38871 # check multiple-3 success: 1
38872 UPDATE t1 SET f_int1 = f_int1 + @max_row
38873 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
38874 AND @max_row_div2 + @max_row_div4;
38876 # check multiple-4 success: 1
38878 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
38879 AND @max_row_div2 + @max_row_div4 + @max_row;
38881 # check multiple-5 success: 1
38882 SELECT COUNT(*) INTO @try_count FROM t0_template
38883 WHERE MOD(f_int1,3) = 0
38884 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
38885 SELECT COUNT(*) INTO @clash_count
38886 FROM t1 INNER JOIN t0_template USING(f_int1)
38887 WHERE MOD(f_int1,3) = 0
38888 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
38889 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
38891 SET f_int1 = @cur_value , f_int2 = @cur_value,
38892 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
38893 f_charbig = '#SINGLE#';
38895 # check single-1 success: 1
38896 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
38898 SET f_int1 = @cur_value , f_int2 = @cur_value,
38899 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
38900 f_charbig = '#SINGLE#';
38902 # check single-2 success: 1
38903 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
38904 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
38905 UPDATE t1 SET f_int1 = @cur_value2
38906 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
38908 # check single-3 success: 1
38909 SET @cur_value1= -1;
38910 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
38911 UPDATE t1 SET f_int1 = @cur_value1
38912 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
38914 # check single-4 success: 1
38915 SELECT MAX(f_int1) INTO @cur_value FROM t1;
38916 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
38918 # check single-5 success: 1
38919 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
38921 # check single-6 success: 1
38922 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
38924 Warning 1264 Out of range value for column 'f_int1' at row 1
38925 Warning 1264 Out of range value for column 'f_int2' at row 1
38927 # check single-7 success: 1
38928 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
38929 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
38930 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
38931 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
38932 f_charbig = '#NULL#';
38934 SET f_int1 = NULL , f_int2 = -@max_row,
38935 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
38936 f_charbig = '#NULL#';
38937 ERROR 23000: Column 'f_int1' cannot be null
38938 # check null success: 1
38940 WHERE f_int1 = 0 AND f_int2 = 0
38941 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
38942 AND f_charbig = '#NULL#';
38943 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38944 SELECT f_int1, f_int1, '', '', 'was inserted'
38945 FROM t0_template source_tab
38946 WHERE MOD(f_int1,3) = 0
38947 AND f_int1 BETWEEN @max_row_div2 AND @max_row
38949 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
38950 f_int2 = 2 * @max_row + source_tab.f_int1,
38951 f_charbig = 'was updated';
38953 # check unique-1-a success: 1
38955 # check unique-1-b success: 1
38956 DELETE FROM t1 WHERE f_charbig = 'was inserted';
38957 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
38958 f_int2 = CAST(f_char1 AS SIGNED INT),
38959 f_charbig = CONCAT('===',f_char1,'===')
38960 WHERE f_charbig = 'was updated';
38961 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38962 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
38963 FROM t0_template source_tab
38964 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
38966 # check replace success: 1
38968 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
38970 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
38971 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
38972 UPDATE t1 SET f_int2 = f_int1,
38973 f_char1 = CAST(f_int1 AS CHAR),
38974 f_char2 = CAST(f_int1 AS CHAR),
38975 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
38976 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
38978 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38979 SELECT f_int1, f_int1, '', '', 'was inserted'
38980 FROM t0_template source_tab
38981 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
38983 # check transactions-1 success: 1
38986 # check transactions-2 success: 1
38989 # check transactions-3 success: 1
38990 DELETE FROM t1 WHERE f_charbig = 'was inserted';
38994 # check transactions-4 success: 1
38995 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
38996 SELECT f_int1, f_int1, '', '', 'was inserted'
38997 FROM t0_template source_tab
38998 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
39000 # check transactions-5 success: 1
39003 # check transactions-6 success: 1
39004 # INFO: Storage engine used for t1 seems to be transactional.
39007 # check transactions-7 success: 1
39008 DELETE FROM t1 WHERE f_charbig = 'was inserted';
39010 SET @@session.sql_mode = 'traditional';
39011 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
39012 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39013 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
39014 '', '', 'was inserted' FROM t0_template
39015 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
39016 ERROR 22012: Division by 0
39019 # check transactions-8 success: 1
39020 # INFO: Storage engine used for t1 seems to be able to revert
39021 # changes made by the failing statement.
39022 SET @@session.sql_mode = '';
39024 DELETE FROM t1 WHERE f_charbig = 'was inserted';
39026 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
39028 # check special-1 success: 1
39029 UPDATE t1 SET f_charbig = '';
39031 # check special-2 success: 1
39032 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
39033 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
39034 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
39035 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39036 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39037 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39038 'just inserted' FROM t0_template
39039 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39040 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
39042 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39043 f_charbig = 'updated by trigger'
39044 WHERE f_int1 = new.f_int1;
39046 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39047 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
39048 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39050 # check trigger-1 success: 1
39051 DROP TRIGGER trg_1;
39052 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39053 f_int2 = CAST(f_char1 AS SIGNED INT),
39054 f_charbig = 'just inserted'
39055 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39057 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39058 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39059 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39060 'just inserted' FROM t0_template
39061 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39062 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
39064 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39065 f_charbig = 'updated by trigger'
39066 WHERE f_int1 = new.f_int1;
39068 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39069 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
39070 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39072 # check trigger-2 success: 1
39073 DROP TRIGGER trg_1;
39074 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39075 f_int2 = CAST(f_char1 AS SIGNED INT),
39076 f_charbig = 'just inserted'
39077 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39079 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39080 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39081 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39082 'just inserted' FROM t0_template
39083 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39084 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
39086 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39087 f_charbig = 'updated by trigger'
39088 WHERE f_int1 = new.f_int1;
39090 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
39091 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39093 # check trigger-3 success: 1
39094 DROP TRIGGER trg_1;
39095 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39096 f_int2 = CAST(f_char1 AS SIGNED INT),
39097 f_charbig = 'just inserted'
39098 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39100 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39101 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39102 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39103 'just inserted' FROM t0_template
39104 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39105 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
39107 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39108 f_charbig = 'updated by trigger'
39109 WHERE f_int1 = - old.f_int1;
39111 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
39112 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39114 # check trigger-4 success: 1
39115 DROP TRIGGER trg_1;
39116 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39117 f_int2 = CAST(f_char1 AS SIGNED INT),
39118 f_charbig = 'just inserted'
39119 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39121 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39122 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39123 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39124 'just inserted' FROM t0_template
39125 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39126 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
39128 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39129 f_charbig = 'updated by trigger'
39130 WHERE f_int1 = new.f_int1;
39132 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
39133 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39135 # check trigger-5 success: 1
39136 DROP TRIGGER trg_1;
39137 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39138 f_int2 = CAST(f_char1 AS SIGNED INT),
39139 f_charbig = 'just inserted'
39140 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39142 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39143 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39144 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39145 'just inserted' FROM t0_template
39146 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39147 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
39149 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39150 f_charbig = 'updated by trigger'
39151 WHERE f_int1 = - old.f_int1;
39153 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
39154 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39156 # check trigger-6 success: 1
39157 DROP TRIGGER trg_1;
39158 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39159 f_int2 = CAST(f_char1 AS SIGNED INT),
39160 f_charbig = 'just inserted'
39161 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39163 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39164 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39165 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39166 'just inserted' FROM t0_template
39167 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39168 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
39170 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39171 f_charbig = 'updated by trigger'
39172 WHERE f_int1 = - old.f_int1;
39175 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39177 # check trigger-7 success: 1
39178 DROP TRIGGER trg_1;
39179 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39180 f_int2 = CAST(f_char1 AS SIGNED INT),
39181 f_charbig = 'just inserted'
39182 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39184 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39185 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39186 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39187 'just inserted' FROM t0_template
39188 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39189 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
39191 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39192 f_charbig = 'updated by trigger'
39193 WHERE f_int1 = - old.f_int1;
39196 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39198 # check trigger-8 success: 1
39199 DROP TRIGGER trg_1;
39200 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39201 f_int2 = CAST(f_char1 AS SIGNED INT),
39202 f_charbig = 'just inserted'
39203 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39205 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39207 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39208 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
39210 SET new.f_int1 = old.f_int1 + @max_row,
39211 new.f_int2 = old.f_int2 - @max_row,
39212 new.f_charbig = '####updated per update trigger####';
39215 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
39216 f_charbig = '####updated per update statement itself####';
39218 # check trigger-9 success: 1
39219 DROP TRIGGER trg_2;
39220 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39221 f_int2 = CAST(f_char1 AS SIGNED INT),
39222 f_charbig = CONCAT('===',f_char1,'===');
39223 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
39225 SET new.f_int1 = new.f_int1 + @max_row,
39226 new.f_int2 = new.f_int2 - @max_row,
39227 new.f_charbig = '####updated per update trigger####';
39230 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
39231 f_charbig = '####updated per update statement itself####';
39233 # check trigger-10 success: 1
39234 DROP TRIGGER trg_2;
39235 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39236 f_int2 = CAST(f_char1 AS SIGNED INT),
39237 f_charbig = CONCAT('===',f_char1,'===');
39238 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
39240 SET new.f_int1 = @my_max1 + @counter,
39241 new.f_int2 = @my_min2 - @counter,
39242 new.f_charbig = '####updated per insert trigger####';
39243 SET @counter = @counter + 1;
39246 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
39247 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39248 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
39249 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
39250 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
39252 DROP TRIGGER trg_3;
39254 # check trigger-11 success: 1
39256 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
39257 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
39258 AND f_charbig = '####updated per insert trigger####';
39259 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
39261 SET new.f_int1 = @my_max1 + @counter,
39262 new.f_int2 = @my_min2 - @counter,
39263 new.f_charbig = '####updated per insert trigger####';
39264 SET @counter = @counter + 1;
39267 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
39268 INSERT INTO t1 (f_char1, f_char2, f_charbig)
39269 SELECT CAST(f_int1 AS CHAR),
39270 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
39271 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
39273 DROP TRIGGER trg_3;
39275 # check trigger-12 success: 1
39277 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
39278 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
39279 AND f_charbig = '####updated per insert trigger####';
39281 Table Op Msg_type Msg_text
39282 test.t1 analyze status OK
39283 CHECK TABLE t1 EXTENDED;
39284 Table Op Msg_type Msg_text
39285 test.t1 check status OK
39286 CHECKSUM TABLE t1 EXTENDED;
39288 test.t1 <some_value>
39290 Table Op Msg_type Msg_text
39291 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
39292 test.t1 optimize status OK
39293 # check layout success: 1
39294 REPAIR TABLE t1 EXTENDED;
39295 Table Op Msg_type Msg_text
39296 test.t1 repair note The storage engine for the table doesn't support repair
39297 # check layout success: 1
39300 # check TRUNCATE success: 1
39301 # check layout success: 1
39302 # End usability test (inc/partition_check.inc)
39309 f_charbig VARCHAR(1000)
39310 , PRIMARY KEY (f_int2,f_int1)
39312 PARTITION BY LIST(ABS(MOD(f_int1,2)))
39313 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
39314 (PARTITION part1 VALUES IN (0),
39315 PARTITION part2 VALUES IN (1),
39316 PARTITION part3 VALUES IN (NULL));
39317 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
39318 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
39319 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
39320 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
39321 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
39322 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
39323 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
39324 # Start usability test (inc/partition_check.inc)
39326 SHOW CREATE TABLE t1;
39328 t1 CREATE TABLE `t1` (
39329 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
39330 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
39331 `f_char1` char(20) DEFAULT NULL,
39332 `f_char2` char(20) DEFAULT NULL,
39333 `f_charbig` varchar(1000) DEFAULT NULL,
39334 PRIMARY KEY (`f_int2`,`f_int1`)
39335 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
39336 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
39337 SUBPARTITION BY KEY (f_int1)
39339 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
39340 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
39341 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
39343 # check prerequisites-1 success: 1
39344 # check COUNT(*) success: 1
39345 # check MIN/MAX(f_int1) success: 1
39346 # check MIN/MAX(f_int2) success: 1
39347 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39348 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
39349 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
39350 WHERE f_int1 IN (2,3);
39351 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
39352 # check prerequisites-3 success: 1
39353 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
39354 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39355 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
39356 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
39357 WHERE f_int1 IN (2,3);
39358 DELETE FROM t1 WHERE f_charbig = 'delete me';
39359 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39360 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
39361 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
39362 WHERE f_int1 IN (2,3);
39363 DELETE FROM t1 WHERE f_charbig = 'delete me';
39364 # check read via f_int1 success: 1
39365 # check read via f_int2 success: 1
39367 # check multiple-1 success: 1
39368 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
39370 # check multiple-2 success: 1
39371 INSERT INTO t1 SELECT * FROM t0_template
39372 WHERE MOD(f_int1,3) = 0;
39374 # check multiple-3 success: 1
39375 UPDATE t1 SET f_int1 = f_int1 + @max_row
39376 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
39377 AND @max_row_div2 + @max_row_div4;
39379 # check multiple-4 success: 1
39381 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
39382 AND @max_row_div2 + @max_row_div4 + @max_row;
39384 # check multiple-5 success: 1
39385 SELECT COUNT(*) INTO @try_count FROM t0_template
39386 WHERE MOD(f_int1,3) = 0
39387 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
39388 SELECT COUNT(*) INTO @clash_count
39389 FROM t1 INNER JOIN t0_template USING(f_int1)
39390 WHERE MOD(f_int1,3) = 0
39391 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
39392 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
39394 SET f_int1 = @cur_value , f_int2 = @cur_value,
39395 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
39396 f_charbig = '#SINGLE#';
39398 # check single-1 success: 1
39399 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
39401 SET f_int1 = @cur_value , f_int2 = @cur_value,
39402 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
39403 f_charbig = '#SINGLE#';
39405 # check single-2 success: 1
39406 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
39407 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
39408 UPDATE t1 SET f_int1 = @cur_value2
39409 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
39411 # check single-3 success: 1
39412 SET @cur_value1= -1;
39413 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
39414 UPDATE t1 SET f_int1 = @cur_value1
39415 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
39417 # check single-4 success: 1
39418 SELECT MAX(f_int1) INTO @cur_value FROM t1;
39419 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
39421 # check single-5 success: 1
39422 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
39424 # check single-6 success: 1
39425 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
39427 Warning 1264 Out of range value for column 'f_int1' at row 1
39428 Warning 1264 Out of range value for column 'f_int2' at row 1
39430 # check single-7 success: 1
39431 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
39432 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
39433 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
39434 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
39435 f_charbig = '#NULL#';
39437 SET f_int1 = NULL , f_int2 = -@max_row,
39438 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
39439 f_charbig = '#NULL#';
39440 ERROR 23000: Column 'f_int1' cannot be null
39441 # check null success: 1
39443 WHERE f_int1 = 0 AND f_int2 = 0
39444 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
39445 AND f_charbig = '#NULL#';
39446 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39447 SELECT f_int1, f_int1, '', '', 'was inserted'
39448 FROM t0_template source_tab
39449 WHERE MOD(f_int1,3) = 0
39450 AND f_int1 BETWEEN @max_row_div2 AND @max_row
39452 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
39453 f_int2 = 2 * @max_row + source_tab.f_int1,
39454 f_charbig = 'was updated';
39456 # check unique-1-a success: 1
39458 # check unique-1-b success: 1
39459 DELETE FROM t1 WHERE f_charbig = 'was inserted';
39460 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39461 f_int2 = CAST(f_char1 AS SIGNED INT),
39462 f_charbig = CONCAT('===',f_char1,'===')
39463 WHERE f_charbig = 'was updated';
39464 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39465 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
39466 FROM t0_template source_tab
39467 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
39469 # check replace success: 1
39471 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
39473 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
39474 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
39475 UPDATE t1 SET f_int2 = f_int1,
39476 f_char1 = CAST(f_int1 AS CHAR),
39477 f_char2 = CAST(f_int1 AS CHAR),
39478 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
39479 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
39481 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39482 SELECT f_int1, f_int1, '', '', 'was inserted'
39483 FROM t0_template source_tab
39484 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
39486 # check transactions-1 success: 1
39489 # check transactions-2 success: 1
39492 # check transactions-3 success: 1
39493 DELETE FROM t1 WHERE f_charbig = 'was inserted';
39497 # check transactions-4 success: 1
39498 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39499 SELECT f_int1, f_int1, '', '', 'was inserted'
39500 FROM t0_template source_tab
39501 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
39503 # check transactions-5 success: 1
39506 # check transactions-6 success: 1
39507 # INFO: Storage engine used for t1 seems to be transactional.
39510 # check transactions-7 success: 1
39511 DELETE FROM t1 WHERE f_charbig = 'was inserted';
39513 SET @@session.sql_mode = 'traditional';
39514 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
39515 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39516 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
39517 '', '', 'was inserted' FROM t0_template
39518 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
39519 ERROR 22012: Division by 0
39522 # check transactions-8 success: 1
39523 # INFO: Storage engine used for t1 seems to be able to revert
39524 # changes made by the failing statement.
39525 SET @@session.sql_mode = '';
39527 DELETE FROM t1 WHERE f_charbig = 'was inserted';
39529 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
39531 # check special-1 success: 1
39532 UPDATE t1 SET f_charbig = '';
39534 # check special-2 success: 1
39535 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
39536 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
39537 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
39538 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39539 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39540 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39541 'just inserted' FROM t0_template
39542 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39543 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
39545 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39546 f_charbig = 'updated by trigger'
39547 WHERE f_int1 = new.f_int1;
39549 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39550 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
39551 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39553 # check trigger-1 success: 1
39554 DROP TRIGGER trg_1;
39555 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39556 f_int2 = CAST(f_char1 AS SIGNED INT),
39557 f_charbig = 'just inserted'
39558 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39560 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39561 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39562 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39563 'just inserted' FROM t0_template
39564 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39565 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
39567 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39568 f_charbig = 'updated by trigger'
39569 WHERE f_int1 = new.f_int1;
39571 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39572 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
39573 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39575 # check trigger-2 success: 1
39576 DROP TRIGGER trg_1;
39577 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39578 f_int2 = CAST(f_char1 AS SIGNED INT),
39579 f_charbig = 'just inserted'
39580 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39582 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39583 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39584 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39585 'just inserted' FROM t0_template
39586 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39587 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
39589 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39590 f_charbig = 'updated by trigger'
39591 WHERE f_int1 = new.f_int1;
39593 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
39594 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39596 # check trigger-3 success: 1
39597 DROP TRIGGER trg_1;
39598 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39599 f_int2 = CAST(f_char1 AS SIGNED INT),
39600 f_charbig = 'just inserted'
39601 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39603 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39604 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39605 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39606 'just inserted' FROM t0_template
39607 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39608 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
39610 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39611 f_charbig = 'updated by trigger'
39612 WHERE f_int1 = - old.f_int1;
39614 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
39615 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39617 # check trigger-4 success: 1
39618 DROP TRIGGER trg_1;
39619 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39620 f_int2 = CAST(f_char1 AS SIGNED INT),
39621 f_charbig = 'just inserted'
39622 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39624 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39625 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39626 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39627 'just inserted' FROM t0_template
39628 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39629 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
39631 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39632 f_charbig = 'updated by trigger'
39633 WHERE f_int1 = new.f_int1;
39635 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
39636 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39638 # check trigger-5 success: 1
39639 DROP TRIGGER trg_1;
39640 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39641 f_int2 = CAST(f_char1 AS SIGNED INT),
39642 f_charbig = 'just inserted'
39643 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39645 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39646 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39647 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39648 'just inserted' FROM t0_template
39649 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39650 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
39652 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39653 f_charbig = 'updated by trigger'
39654 WHERE f_int1 = - old.f_int1;
39656 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
39657 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39659 # check trigger-6 success: 1
39660 DROP TRIGGER trg_1;
39661 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39662 f_int2 = CAST(f_char1 AS SIGNED INT),
39663 f_charbig = 'just inserted'
39664 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39666 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39667 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39668 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39669 'just inserted' FROM t0_template
39670 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39671 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
39673 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39674 f_charbig = 'updated by trigger'
39675 WHERE f_int1 = - old.f_int1;
39678 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39680 # check trigger-7 success: 1
39681 DROP TRIGGER trg_1;
39682 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39683 f_int2 = CAST(f_char1 AS SIGNED INT),
39684 f_charbig = 'just inserted'
39685 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39687 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39688 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
39689 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
39690 'just inserted' FROM t0_template
39691 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39692 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
39694 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
39695 f_charbig = 'updated by trigger'
39696 WHERE f_int1 = - old.f_int1;
39699 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
39701 # check trigger-8 success: 1
39702 DROP TRIGGER trg_1;
39703 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39704 f_int2 = CAST(f_char1 AS SIGNED INT),
39705 f_charbig = 'just inserted'
39706 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
39708 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39710 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
39711 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
39713 SET new.f_int1 = old.f_int1 + @max_row,
39714 new.f_int2 = old.f_int2 - @max_row,
39715 new.f_charbig = '####updated per update trigger####';
39718 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
39719 f_charbig = '####updated per update statement itself####';
39721 # check trigger-9 success: 1
39722 DROP TRIGGER trg_2;
39723 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39724 f_int2 = CAST(f_char1 AS SIGNED INT),
39725 f_charbig = CONCAT('===',f_char1,'===');
39726 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
39728 SET new.f_int1 = new.f_int1 + @max_row,
39729 new.f_int2 = new.f_int2 - @max_row,
39730 new.f_charbig = '####updated per update trigger####';
39733 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
39734 f_charbig = '####updated per update statement itself####';
39736 # check trigger-10 success: 1
39737 DROP TRIGGER trg_2;
39738 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39739 f_int2 = CAST(f_char1 AS SIGNED INT),
39740 f_charbig = CONCAT('===',f_char1,'===');
39741 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
39743 SET new.f_int1 = @my_max1 + @counter,
39744 new.f_int2 = @my_min2 - @counter,
39745 new.f_charbig = '####updated per insert trigger####';
39746 SET @counter = @counter + 1;
39749 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
39750 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39751 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
39752 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
39753 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
39755 DROP TRIGGER trg_3;
39757 # check trigger-11 success: 1
39759 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
39760 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
39761 AND f_charbig = '####updated per insert trigger####';
39762 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
39764 SET new.f_int1 = @my_max1 + @counter,
39765 new.f_int2 = @my_min2 - @counter,
39766 new.f_charbig = '####updated per insert trigger####';
39767 SET @counter = @counter + 1;
39770 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
39771 INSERT INTO t1 (f_char1, f_char2, f_charbig)
39772 SELECT CAST(f_int1 AS CHAR),
39773 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
39774 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
39776 DROP TRIGGER trg_3;
39778 # check trigger-12 success: 1
39780 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
39781 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
39782 AND f_charbig = '####updated per insert trigger####';
39784 Table Op Msg_type Msg_text
39785 test.t1 analyze status OK
39786 CHECK TABLE t1 EXTENDED;
39787 Table Op Msg_type Msg_text
39788 test.t1 check status OK
39789 CHECKSUM TABLE t1 EXTENDED;
39791 test.t1 <some_value>
39793 Table Op Msg_type Msg_text
39794 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
39795 test.t1 optimize status OK
39796 # check layout success: 1
39797 REPAIR TABLE t1 EXTENDED;
39798 Table Op Msg_type Msg_text
39799 test.t1 repair note The storage engine for the table doesn't support repair
39800 # check layout success: 1
39803 # check TRUNCATE success: 1
39804 # check layout success: 1
39805 # End usability test (inc/partition_check.inc)
39807 DROP TABLE IF EXISTS t1;
39813 f_charbig VARCHAR(1000)
39814 , PRIMARY KEY (f_int2,f_int1)
39816 PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
39817 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
39818 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
39819 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
39820 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
39821 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
39822 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
39823 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
39824 # Start usability test (inc/partition_check.inc)
39826 SHOW CREATE TABLE t1;
39828 t1 CREATE TABLE `t1` (
39829 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
39830 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
39831 `f_char1` char(20) DEFAULT NULL,
39832 `f_char2` char(20) DEFAULT NULL,
39833 `f_charbig` varchar(1000) DEFAULT NULL,
39834 PRIMARY KEY (`f_int2`,`f_int1`)
39835 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
39836 /*!50100 PARTITION BY HASH (f_int1 + f_int2)
39839 # check prerequisites-1 success: 1
39840 # check COUNT(*) success: 1
39841 # check MIN/MAX(f_int1) success: 1
39842 # check MIN/MAX(f_int2) success: 1
39843 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39844 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
39845 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
39846 WHERE f_int1 IN (2,3);
39847 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
39848 # check prerequisites-3 success: 1
39849 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
39850 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39851 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
39852 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
39853 WHERE f_int1 IN (2,3);
39854 DELETE FROM t1 WHERE f_charbig = 'delete me';
39855 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39856 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
39857 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
39858 WHERE f_int1 IN (2,3);
39859 DELETE FROM t1 WHERE f_charbig = 'delete me';
39860 # check read via f_int1 success: 1
39861 # check read via f_int2 success: 1
39863 # check multiple-1 success: 1
39864 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
39866 # check multiple-2 success: 1
39867 INSERT INTO t1 SELECT * FROM t0_template
39868 WHERE MOD(f_int1,3) = 0;
39870 # check multiple-3 success: 1
39871 UPDATE t1 SET f_int1 = f_int1 + @max_row
39872 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
39873 AND @max_row_div2 + @max_row_div4;
39875 # check multiple-4 success: 1
39877 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
39878 AND @max_row_div2 + @max_row_div4 + @max_row;
39880 # check multiple-5 success: 1
39881 SELECT COUNT(*) INTO @try_count FROM t0_template
39882 WHERE MOD(f_int1,3) = 0
39883 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
39884 SELECT COUNT(*) INTO @clash_count
39885 FROM t1 INNER JOIN t0_template USING(f_int1)
39886 WHERE MOD(f_int1,3) = 0
39887 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
39888 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
39890 SET f_int1 = @cur_value , f_int2 = @cur_value,
39891 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
39892 f_charbig = '#SINGLE#';
39894 # check single-1 success: 1
39895 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
39897 SET f_int1 = @cur_value , f_int2 = @cur_value,
39898 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
39899 f_charbig = '#SINGLE#';
39901 # check single-2 success: 1
39902 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
39903 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
39904 UPDATE t1 SET f_int1 = @cur_value2
39905 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
39907 # check single-3 success: 1
39908 SET @cur_value1= -1;
39909 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
39910 UPDATE t1 SET f_int1 = @cur_value1
39911 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
39913 # check single-4 success: 1
39914 SELECT MAX(f_int1) INTO @cur_value FROM t1;
39915 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
39917 # check single-5 success: 1
39918 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
39920 # check single-6 success: 1
39921 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
39923 Warning 1264 Out of range value for column 'f_int1' at row 1
39924 Warning 1264 Out of range value for column 'f_int2' at row 1
39926 # check single-7 success: 1
39927 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
39928 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
39929 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
39930 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
39931 f_charbig = '#NULL#';
39933 SET f_int1 = NULL , f_int2 = -@max_row,
39934 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
39935 f_charbig = '#NULL#';
39936 ERROR 23000: Column 'f_int1' cannot be null
39937 # check null success: 1
39939 WHERE f_int1 = 0 AND f_int2 = 0
39940 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
39941 AND f_charbig = '#NULL#';
39942 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39943 SELECT f_int1, f_int1, '', '', 'was inserted'
39944 FROM t0_template source_tab
39945 WHERE MOD(f_int1,3) = 0
39946 AND f_int1 BETWEEN @max_row_div2 AND @max_row
39948 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
39949 f_int2 = 2 * @max_row + source_tab.f_int1,
39950 f_charbig = 'was updated';
39952 # check unique-1-a success: 1
39954 # check unique-1-b success: 1
39955 DELETE FROM t1 WHERE f_charbig = 'was inserted';
39956 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
39957 f_int2 = CAST(f_char1 AS SIGNED INT),
39958 f_charbig = CONCAT('===',f_char1,'===')
39959 WHERE f_charbig = 'was updated';
39960 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39961 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
39962 FROM t0_template source_tab
39963 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
39965 # check replace success: 1
39967 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
39969 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
39970 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
39971 UPDATE t1 SET f_int2 = f_int1,
39972 f_char1 = CAST(f_int1 AS CHAR),
39973 f_char2 = CAST(f_int1 AS CHAR),
39974 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
39975 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
39977 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39978 SELECT f_int1, f_int1, '', '', 'was inserted'
39979 FROM t0_template source_tab
39980 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
39982 # check transactions-1 success: 1
39985 # check transactions-2 success: 1
39988 # check transactions-3 success: 1
39989 DELETE FROM t1 WHERE f_charbig = 'was inserted';
39993 # check transactions-4 success: 1
39994 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
39995 SELECT f_int1, f_int1, '', '', 'was inserted'
39996 FROM t0_template source_tab
39997 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
39999 # check transactions-5 success: 1
40002 # check transactions-6 success: 1
40003 # INFO: Storage engine used for t1 seems to be transactional.
40006 # check transactions-7 success: 1
40007 DELETE FROM t1 WHERE f_charbig = 'was inserted';
40009 SET @@session.sql_mode = 'traditional';
40010 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
40011 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40012 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
40013 '', '', 'was inserted' FROM t0_template
40014 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
40015 ERROR 22012: Division by 0
40018 # check transactions-8 success: 1
40019 # INFO: Storage engine used for t1 seems to be able to revert
40020 # changes made by the failing statement.
40021 SET @@session.sql_mode = '';
40023 DELETE FROM t1 WHERE f_charbig = 'was inserted';
40025 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
40027 # check special-1 success: 1
40028 UPDATE t1 SET f_charbig = '';
40030 # check special-2 success: 1
40031 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
40032 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
40033 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
40034 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40035 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40036 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40037 'just inserted' FROM t0_template
40038 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40039 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
40041 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40042 f_charbig = 'updated by trigger'
40043 WHERE f_int1 = new.f_int1;
40045 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40046 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
40047 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40049 # check trigger-1 success: 1
40050 DROP TRIGGER trg_1;
40051 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40052 f_int2 = CAST(f_char1 AS SIGNED INT),
40053 f_charbig = 'just inserted'
40054 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40056 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40057 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40058 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40059 'just inserted' FROM t0_template
40060 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40061 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
40063 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40064 f_charbig = 'updated by trigger'
40065 WHERE f_int1 = new.f_int1;
40067 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40068 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
40069 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40071 # check trigger-2 success: 1
40072 DROP TRIGGER trg_1;
40073 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40074 f_int2 = CAST(f_char1 AS SIGNED INT),
40075 f_charbig = 'just inserted'
40076 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40078 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40079 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40080 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40081 'just inserted' FROM t0_template
40082 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40083 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
40085 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40086 f_charbig = 'updated by trigger'
40087 WHERE f_int1 = new.f_int1;
40089 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
40090 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40092 # check trigger-3 success: 1
40093 DROP TRIGGER trg_1;
40094 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40095 f_int2 = CAST(f_char1 AS SIGNED INT),
40096 f_charbig = 'just inserted'
40097 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40099 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40100 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40101 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40102 'just inserted' FROM t0_template
40103 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40104 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
40106 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40107 f_charbig = 'updated by trigger'
40108 WHERE f_int1 = - old.f_int1;
40110 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
40111 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40113 # check trigger-4 success: 1
40114 DROP TRIGGER trg_1;
40115 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40116 f_int2 = CAST(f_char1 AS SIGNED INT),
40117 f_charbig = 'just inserted'
40118 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40120 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40121 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40122 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40123 'just inserted' FROM t0_template
40124 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40125 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
40127 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40128 f_charbig = 'updated by trigger'
40129 WHERE f_int1 = new.f_int1;
40131 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
40132 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40134 # check trigger-5 success: 1
40135 DROP TRIGGER trg_1;
40136 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40137 f_int2 = CAST(f_char1 AS SIGNED INT),
40138 f_charbig = 'just inserted'
40139 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40141 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40142 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40143 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40144 'just inserted' FROM t0_template
40145 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40146 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
40148 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40149 f_charbig = 'updated by trigger'
40150 WHERE f_int1 = - old.f_int1;
40152 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
40153 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40155 # check trigger-6 success: 1
40156 DROP TRIGGER trg_1;
40157 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40158 f_int2 = CAST(f_char1 AS SIGNED INT),
40159 f_charbig = 'just inserted'
40160 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40162 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40163 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40164 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40165 'just inserted' FROM t0_template
40166 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40167 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
40169 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40170 f_charbig = 'updated by trigger'
40171 WHERE f_int1 = - old.f_int1;
40174 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40176 # check trigger-7 success: 1
40177 DROP TRIGGER trg_1;
40178 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40179 f_int2 = CAST(f_char1 AS SIGNED INT),
40180 f_charbig = 'just inserted'
40181 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40183 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40184 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40185 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40186 'just inserted' FROM t0_template
40187 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40188 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
40190 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40191 f_charbig = 'updated by trigger'
40192 WHERE f_int1 = - old.f_int1;
40195 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40197 # check trigger-8 success: 1
40198 DROP TRIGGER trg_1;
40199 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40200 f_int2 = CAST(f_char1 AS SIGNED INT),
40201 f_charbig = 'just inserted'
40202 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40204 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40206 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40207 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
40209 SET new.f_int1 = old.f_int1 + @max_row,
40210 new.f_int2 = old.f_int2 - @max_row,
40211 new.f_charbig = '####updated per update trigger####';
40214 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
40215 f_charbig = '####updated per update statement itself####';
40217 # check trigger-9 success: 1
40218 DROP TRIGGER trg_2;
40219 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40220 f_int2 = CAST(f_char1 AS SIGNED INT),
40221 f_charbig = CONCAT('===',f_char1,'===');
40222 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
40224 SET new.f_int1 = new.f_int1 + @max_row,
40225 new.f_int2 = new.f_int2 - @max_row,
40226 new.f_charbig = '####updated per update trigger####';
40229 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
40230 f_charbig = '####updated per update statement itself####';
40232 # check trigger-10 success: 1
40233 DROP TRIGGER trg_2;
40234 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40235 f_int2 = CAST(f_char1 AS SIGNED INT),
40236 f_charbig = CONCAT('===',f_char1,'===');
40237 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
40239 SET new.f_int1 = @my_max1 + @counter,
40240 new.f_int2 = @my_min2 - @counter,
40241 new.f_charbig = '####updated per insert trigger####';
40242 SET @counter = @counter + 1;
40245 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
40246 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40247 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
40248 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
40249 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
40251 DROP TRIGGER trg_3;
40253 # check trigger-11 success: 1
40255 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
40256 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
40257 AND f_charbig = '####updated per insert trigger####';
40258 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
40260 SET new.f_int1 = @my_max1 + @counter,
40261 new.f_int2 = @my_min2 - @counter,
40262 new.f_charbig = '####updated per insert trigger####';
40263 SET @counter = @counter + 1;
40266 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
40267 INSERT INTO t1 (f_char1, f_char2, f_charbig)
40268 SELECT CAST(f_int1 AS CHAR),
40269 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
40270 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
40272 DROP TRIGGER trg_3;
40274 # check trigger-12 success: 1
40276 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
40277 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
40278 AND f_charbig = '####updated per insert trigger####';
40280 Table Op Msg_type Msg_text
40281 test.t1 analyze status OK
40282 CHECK TABLE t1 EXTENDED;
40283 Table Op Msg_type Msg_text
40284 test.t1 check status OK
40285 CHECKSUM TABLE t1 EXTENDED;
40287 test.t1 <some_value>
40289 Table Op Msg_type Msg_text
40290 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
40291 test.t1 optimize status OK
40292 # check layout success: 1
40293 REPAIR TABLE t1 EXTENDED;
40294 Table Op Msg_type Msg_text
40295 test.t1 repair note The storage engine for the table doesn't support repair
40296 # check layout success: 1
40299 # check TRUNCATE success: 1
40300 # check layout success: 1
40301 # End usability test (inc/partition_check.inc)
40308 f_charbig VARCHAR(1000)
40309 , PRIMARY KEY (f_int2,f_int1)
40311 PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
40312 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
40313 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
40314 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
40315 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
40316 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
40317 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
40318 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
40319 # Start usability test (inc/partition_check.inc)
40321 SHOW CREATE TABLE t1;
40323 t1 CREATE TABLE `t1` (
40324 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
40325 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
40326 `f_char1` char(20) DEFAULT NULL,
40327 `f_char2` char(20) DEFAULT NULL,
40328 `f_charbig` varchar(1000) DEFAULT NULL,
40329 PRIMARY KEY (`f_int2`,`f_int1`)
40330 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
40331 /*!50100 PARTITION BY KEY (f_int1,f_int2)
40334 # check prerequisites-1 success: 1
40335 # check COUNT(*) success: 1
40336 # check MIN/MAX(f_int1) success: 1
40337 # check MIN/MAX(f_int2) success: 1
40338 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40339 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
40340 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
40341 WHERE f_int1 IN (2,3);
40342 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
40343 # check prerequisites-3 success: 1
40344 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
40345 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40346 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
40347 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
40348 WHERE f_int1 IN (2,3);
40349 DELETE FROM t1 WHERE f_charbig = 'delete me';
40350 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40351 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
40352 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
40353 WHERE f_int1 IN (2,3);
40354 DELETE FROM t1 WHERE f_charbig = 'delete me';
40355 # check read via f_int1 success: 1
40356 # check read via f_int2 success: 1
40358 # check multiple-1 success: 1
40359 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
40361 # check multiple-2 success: 1
40362 INSERT INTO t1 SELECT * FROM t0_template
40363 WHERE MOD(f_int1,3) = 0;
40365 # check multiple-3 success: 1
40366 UPDATE t1 SET f_int1 = f_int1 + @max_row
40367 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
40368 AND @max_row_div2 + @max_row_div4;
40370 # check multiple-4 success: 1
40372 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
40373 AND @max_row_div2 + @max_row_div4 + @max_row;
40375 # check multiple-5 success: 1
40376 SELECT COUNT(*) INTO @try_count FROM t0_template
40377 WHERE MOD(f_int1,3) = 0
40378 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
40379 SELECT COUNT(*) INTO @clash_count
40380 FROM t1 INNER JOIN t0_template USING(f_int1)
40381 WHERE MOD(f_int1,3) = 0
40382 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
40383 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
40385 SET f_int1 = @cur_value , f_int2 = @cur_value,
40386 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
40387 f_charbig = '#SINGLE#';
40389 # check single-1 success: 1
40390 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
40392 SET f_int1 = @cur_value , f_int2 = @cur_value,
40393 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
40394 f_charbig = '#SINGLE#';
40396 # check single-2 success: 1
40397 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
40398 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
40399 UPDATE t1 SET f_int1 = @cur_value2
40400 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
40402 # check single-3 success: 1
40403 SET @cur_value1= -1;
40404 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
40405 UPDATE t1 SET f_int1 = @cur_value1
40406 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
40408 # check single-4 success: 1
40409 SELECT MAX(f_int1) INTO @cur_value FROM t1;
40410 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
40412 # check single-5 success: 1
40413 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
40415 # check single-6 success: 1
40416 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
40418 Warning 1264 Out of range value for column 'f_int1' at row 1
40419 Warning 1264 Out of range value for column 'f_int2' at row 1
40421 # check single-7 success: 1
40422 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
40423 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
40424 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
40425 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
40426 f_charbig = '#NULL#';
40428 SET f_int1 = NULL , f_int2 = -@max_row,
40429 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
40430 f_charbig = '#NULL#';
40431 ERROR 23000: Column 'f_int1' cannot be null
40432 # check null success: 1
40434 WHERE f_int1 = 0 AND f_int2 = 0
40435 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
40436 AND f_charbig = '#NULL#';
40437 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40438 SELECT f_int1, f_int1, '', '', 'was inserted'
40439 FROM t0_template source_tab
40440 WHERE MOD(f_int1,3) = 0
40441 AND f_int1 BETWEEN @max_row_div2 AND @max_row
40443 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
40444 f_int2 = 2 * @max_row + source_tab.f_int1,
40445 f_charbig = 'was updated';
40447 # check unique-1-a success: 1
40449 # check unique-1-b success: 1
40450 DELETE FROM t1 WHERE f_charbig = 'was inserted';
40451 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40452 f_int2 = CAST(f_char1 AS SIGNED INT),
40453 f_charbig = CONCAT('===',f_char1,'===')
40454 WHERE f_charbig = 'was updated';
40455 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40456 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
40457 FROM t0_template source_tab
40458 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
40460 # check replace success: 1
40462 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
40464 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
40465 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
40466 UPDATE t1 SET f_int2 = f_int1,
40467 f_char1 = CAST(f_int1 AS CHAR),
40468 f_char2 = CAST(f_int1 AS CHAR),
40469 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
40470 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
40472 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40473 SELECT f_int1, f_int1, '', '', 'was inserted'
40474 FROM t0_template source_tab
40475 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
40477 # check transactions-1 success: 1
40480 # check transactions-2 success: 1
40483 # check transactions-3 success: 1
40484 DELETE FROM t1 WHERE f_charbig = 'was inserted';
40488 # check transactions-4 success: 1
40489 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40490 SELECT f_int1, f_int1, '', '', 'was inserted'
40491 FROM t0_template source_tab
40492 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
40494 # check transactions-5 success: 1
40497 # check transactions-6 success: 1
40498 # INFO: Storage engine used for t1 seems to be transactional.
40501 # check transactions-7 success: 1
40502 DELETE FROM t1 WHERE f_charbig = 'was inserted';
40504 SET @@session.sql_mode = 'traditional';
40505 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
40506 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40507 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
40508 '', '', 'was inserted' FROM t0_template
40509 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
40510 ERROR 22012: Division by 0
40513 # check transactions-8 success: 1
40514 # INFO: Storage engine used for t1 seems to be able to revert
40515 # changes made by the failing statement.
40516 SET @@session.sql_mode = '';
40518 DELETE FROM t1 WHERE f_charbig = 'was inserted';
40520 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
40522 # check special-1 success: 1
40523 UPDATE t1 SET f_charbig = '';
40525 # check special-2 success: 1
40526 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
40527 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
40528 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
40529 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40530 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40531 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40532 'just inserted' FROM t0_template
40533 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40534 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
40536 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40537 f_charbig = 'updated by trigger'
40538 WHERE f_int1 = new.f_int1;
40540 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40541 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
40542 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40544 # check trigger-1 success: 1
40545 DROP TRIGGER trg_1;
40546 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40547 f_int2 = CAST(f_char1 AS SIGNED INT),
40548 f_charbig = 'just inserted'
40549 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40551 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40552 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40553 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40554 'just inserted' FROM t0_template
40555 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40556 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
40558 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40559 f_charbig = 'updated by trigger'
40560 WHERE f_int1 = new.f_int1;
40562 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40563 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
40564 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40566 # check trigger-2 success: 1
40567 DROP TRIGGER trg_1;
40568 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40569 f_int2 = CAST(f_char1 AS SIGNED INT),
40570 f_charbig = 'just inserted'
40571 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40573 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40574 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40575 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40576 'just inserted' FROM t0_template
40577 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40578 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
40580 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40581 f_charbig = 'updated by trigger'
40582 WHERE f_int1 = new.f_int1;
40584 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
40585 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40587 # check trigger-3 success: 1
40588 DROP TRIGGER trg_1;
40589 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40590 f_int2 = CAST(f_char1 AS SIGNED INT),
40591 f_charbig = 'just inserted'
40592 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40594 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40595 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40596 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40597 'just inserted' FROM t0_template
40598 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40599 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
40601 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40602 f_charbig = 'updated by trigger'
40603 WHERE f_int1 = - old.f_int1;
40605 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
40606 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40608 # check trigger-4 success: 1
40609 DROP TRIGGER trg_1;
40610 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40611 f_int2 = CAST(f_char1 AS SIGNED INT),
40612 f_charbig = 'just inserted'
40613 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40615 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40616 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40617 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40618 'just inserted' FROM t0_template
40619 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40620 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
40622 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40623 f_charbig = 'updated by trigger'
40624 WHERE f_int1 = new.f_int1;
40626 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
40627 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40629 # check trigger-5 success: 1
40630 DROP TRIGGER trg_1;
40631 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40632 f_int2 = CAST(f_char1 AS SIGNED INT),
40633 f_charbig = 'just inserted'
40634 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40636 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40637 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40638 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40639 'just inserted' FROM t0_template
40640 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40641 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
40643 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40644 f_charbig = 'updated by trigger'
40645 WHERE f_int1 = - old.f_int1;
40647 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
40648 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40650 # check trigger-6 success: 1
40651 DROP TRIGGER trg_1;
40652 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40653 f_int2 = CAST(f_char1 AS SIGNED INT),
40654 f_charbig = 'just inserted'
40655 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40657 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40658 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40659 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40660 'just inserted' FROM t0_template
40661 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40662 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
40664 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40665 f_charbig = 'updated by trigger'
40666 WHERE f_int1 = - old.f_int1;
40669 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40671 # check trigger-7 success: 1
40672 DROP TRIGGER trg_1;
40673 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40674 f_int2 = CAST(f_char1 AS SIGNED INT),
40675 f_charbig = 'just inserted'
40676 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40678 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40679 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
40680 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
40681 'just inserted' FROM t0_template
40682 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40683 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
40685 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
40686 f_charbig = 'updated by trigger'
40687 WHERE f_int1 = - old.f_int1;
40690 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
40692 # check trigger-8 success: 1
40693 DROP TRIGGER trg_1;
40694 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40695 f_int2 = CAST(f_char1 AS SIGNED INT),
40696 f_charbig = 'just inserted'
40697 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
40699 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40701 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
40702 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
40704 SET new.f_int1 = old.f_int1 + @max_row,
40705 new.f_int2 = old.f_int2 - @max_row,
40706 new.f_charbig = '####updated per update trigger####';
40709 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
40710 f_charbig = '####updated per update statement itself####';
40712 # check trigger-9 success: 1
40713 DROP TRIGGER trg_2;
40714 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40715 f_int2 = CAST(f_char1 AS SIGNED INT),
40716 f_charbig = CONCAT('===',f_char1,'===');
40717 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
40719 SET new.f_int1 = new.f_int1 + @max_row,
40720 new.f_int2 = new.f_int2 - @max_row,
40721 new.f_charbig = '####updated per update trigger####';
40724 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
40725 f_charbig = '####updated per update statement itself####';
40727 # check trigger-10 success: 1
40728 DROP TRIGGER trg_2;
40729 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40730 f_int2 = CAST(f_char1 AS SIGNED INT),
40731 f_charbig = CONCAT('===',f_char1,'===');
40732 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
40734 SET new.f_int1 = @my_max1 + @counter,
40735 new.f_int2 = @my_min2 - @counter,
40736 new.f_charbig = '####updated per insert trigger####';
40737 SET @counter = @counter + 1;
40740 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
40741 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40742 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
40743 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
40744 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
40746 DROP TRIGGER trg_3;
40748 # check trigger-11 success: 1
40750 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
40751 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
40752 AND f_charbig = '####updated per insert trigger####';
40753 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
40755 SET new.f_int1 = @my_max1 + @counter,
40756 new.f_int2 = @my_min2 - @counter,
40757 new.f_charbig = '####updated per insert trigger####';
40758 SET @counter = @counter + 1;
40761 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
40762 INSERT INTO t1 (f_char1, f_char2, f_charbig)
40763 SELECT CAST(f_int1 AS CHAR),
40764 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
40765 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
40767 DROP TRIGGER trg_3;
40769 # check trigger-12 success: 1
40771 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
40772 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
40773 AND f_charbig = '####updated per insert trigger####';
40775 Table Op Msg_type Msg_text
40776 test.t1 analyze status OK
40777 CHECK TABLE t1 EXTENDED;
40778 Table Op Msg_type Msg_text
40779 test.t1 check status OK
40780 CHECKSUM TABLE t1 EXTENDED;
40782 test.t1 <some_value>
40784 Table Op Msg_type Msg_text
40785 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
40786 test.t1 optimize status OK
40787 # check layout success: 1
40788 REPAIR TABLE t1 EXTENDED;
40789 Table Op Msg_type Msg_text
40790 test.t1 repair note The storage engine for the table doesn't support repair
40791 # check layout success: 1
40794 # check TRUNCATE success: 1
40795 # check layout success: 1
40796 # End usability test (inc/partition_check.inc)
40803 f_charbig VARCHAR(1000)
40804 , PRIMARY KEY (f_int2,f_int1)
40806 PARTITION BY LIST(MOD(f_int1 + f_int2,4))
40807 (PARTITION part_3 VALUES IN (-3),
40808 PARTITION part_2 VALUES IN (-2),
40809 PARTITION part_1 VALUES IN (-1),
40810 PARTITION part_N VALUES IN (NULL),
40811 PARTITION part0 VALUES IN (0),
40812 PARTITION part1 VALUES IN (1),
40813 PARTITION part2 VALUES IN (2),
40814 PARTITION part3 VALUES IN (3));
40815 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
40816 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
40817 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
40818 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
40819 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
40820 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
40821 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
40822 # Start usability test (inc/partition_check.inc)
40824 SHOW CREATE TABLE t1;
40826 t1 CREATE TABLE `t1` (
40827 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
40828 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
40829 `f_char1` char(20) DEFAULT NULL,
40830 `f_char2` char(20) DEFAULT NULL,
40831 `f_charbig` varchar(1000) DEFAULT NULL,
40832 PRIMARY KEY (`f_int2`,`f_int1`)
40833 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
40834 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
40835 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
40836 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
40837 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
40838 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
40839 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
40840 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
40841 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
40842 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
40844 # check prerequisites-1 success: 1
40845 # check COUNT(*) success: 1
40846 # check MIN/MAX(f_int1) success: 1
40847 # check MIN/MAX(f_int2) success: 1
40848 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40849 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
40850 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
40851 WHERE f_int1 IN (2,3);
40852 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
40853 # check prerequisites-3 success: 1
40854 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
40855 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40856 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
40857 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
40858 WHERE f_int1 IN (2,3);
40859 DELETE FROM t1 WHERE f_charbig = 'delete me';
40860 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40861 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
40862 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
40863 WHERE f_int1 IN (2,3);
40864 DELETE FROM t1 WHERE f_charbig = 'delete me';
40865 # check read via f_int1 success: 1
40866 # check read via f_int2 success: 1
40868 # check multiple-1 success: 1
40869 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
40871 # check multiple-2 success: 1
40872 INSERT INTO t1 SELECT * FROM t0_template
40873 WHERE MOD(f_int1,3) = 0;
40875 # check multiple-3 success: 1
40876 UPDATE t1 SET f_int1 = f_int1 + @max_row
40877 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
40878 AND @max_row_div2 + @max_row_div4;
40880 # check multiple-4 success: 1
40882 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
40883 AND @max_row_div2 + @max_row_div4 + @max_row;
40885 # check multiple-5 success: 1
40886 SELECT COUNT(*) INTO @try_count FROM t0_template
40887 WHERE MOD(f_int1,3) = 0
40888 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
40889 SELECT COUNT(*) INTO @clash_count
40890 FROM t1 INNER JOIN t0_template USING(f_int1)
40891 WHERE MOD(f_int1,3) = 0
40892 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
40893 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
40895 SET f_int1 = @cur_value , f_int2 = @cur_value,
40896 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
40897 f_charbig = '#SINGLE#';
40899 # check single-1 success: 1
40900 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
40902 SET f_int1 = @cur_value , f_int2 = @cur_value,
40903 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
40904 f_charbig = '#SINGLE#';
40906 # check single-2 success: 1
40907 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
40908 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
40909 UPDATE t1 SET f_int1 = @cur_value2
40910 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
40912 # check single-3 success: 1
40913 SET @cur_value1= -1;
40914 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
40915 UPDATE t1 SET f_int1 = @cur_value1
40916 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
40918 # check single-4 success: 1
40919 SELECT MAX(f_int1) INTO @cur_value FROM t1;
40920 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
40922 # check single-5 success: 1
40923 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
40925 # check single-6 success: 1
40926 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
40928 Warning 1264 Out of range value for column 'f_int1' at row 1
40929 Warning 1264 Out of range value for column 'f_int2' at row 1
40931 # check single-7 success: 1
40932 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
40933 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
40934 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
40935 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
40936 f_charbig = '#NULL#';
40938 SET f_int1 = NULL , f_int2 = -@max_row,
40939 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
40940 f_charbig = '#NULL#';
40941 ERROR 23000: Column 'f_int1' cannot be null
40942 # check null success: 1
40944 WHERE f_int1 = 0 AND f_int2 = 0
40945 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
40946 AND f_charbig = '#NULL#';
40947 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40948 SELECT f_int1, f_int1, '', '', 'was inserted'
40949 FROM t0_template source_tab
40950 WHERE MOD(f_int1,3) = 0
40951 AND f_int1 BETWEEN @max_row_div2 AND @max_row
40953 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
40954 f_int2 = 2 * @max_row + source_tab.f_int1,
40955 f_charbig = 'was updated';
40957 # check unique-1-a success: 1
40959 # check unique-1-b success: 1
40960 DELETE FROM t1 WHERE f_charbig = 'was inserted';
40961 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
40962 f_int2 = CAST(f_char1 AS SIGNED INT),
40963 f_charbig = CONCAT('===',f_char1,'===')
40964 WHERE f_charbig = 'was updated';
40965 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40966 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
40967 FROM t0_template source_tab
40968 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
40970 # check replace success: 1
40972 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
40974 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
40975 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
40976 UPDATE t1 SET f_int2 = f_int1,
40977 f_char1 = CAST(f_int1 AS CHAR),
40978 f_char2 = CAST(f_int1 AS CHAR),
40979 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
40980 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
40982 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
40983 SELECT f_int1, f_int1, '', '', 'was inserted'
40984 FROM t0_template source_tab
40985 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
40987 # check transactions-1 success: 1
40990 # check transactions-2 success: 1
40993 # check transactions-3 success: 1
40994 DELETE FROM t1 WHERE f_charbig = 'was inserted';
40998 # check transactions-4 success: 1
40999 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41000 SELECT f_int1, f_int1, '', '', 'was inserted'
41001 FROM t0_template source_tab
41002 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
41004 # check transactions-5 success: 1
41007 # check transactions-6 success: 1
41008 # INFO: Storage engine used for t1 seems to be transactional.
41011 # check transactions-7 success: 1
41012 DELETE FROM t1 WHERE f_charbig = 'was inserted';
41014 SET @@session.sql_mode = 'traditional';
41015 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
41016 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41017 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
41018 '', '', 'was inserted' FROM t0_template
41019 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
41020 ERROR 22012: Division by 0
41023 # check transactions-8 success: 1
41024 # INFO: Storage engine used for t1 seems to be able to revert
41025 # changes made by the failing statement.
41026 SET @@session.sql_mode = '';
41028 DELETE FROM t1 WHERE f_charbig = 'was inserted';
41030 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
41032 # check special-1 success: 1
41033 UPDATE t1 SET f_charbig = '';
41035 # check special-2 success: 1
41036 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
41037 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
41038 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
41039 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41040 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41041 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41042 'just inserted' FROM t0_template
41043 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41044 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
41046 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41047 f_charbig = 'updated by trigger'
41048 WHERE f_int1 = new.f_int1;
41050 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41051 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
41052 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41054 # check trigger-1 success: 1
41055 DROP TRIGGER trg_1;
41056 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41057 f_int2 = CAST(f_char1 AS SIGNED INT),
41058 f_charbig = 'just inserted'
41059 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41061 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41062 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41063 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41064 'just inserted' FROM t0_template
41065 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41066 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
41068 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41069 f_charbig = 'updated by trigger'
41070 WHERE f_int1 = new.f_int1;
41072 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41073 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
41074 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41076 # check trigger-2 success: 1
41077 DROP TRIGGER trg_1;
41078 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41079 f_int2 = CAST(f_char1 AS SIGNED INT),
41080 f_charbig = 'just inserted'
41081 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41083 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41084 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41085 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41086 'just inserted' FROM t0_template
41087 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41088 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
41090 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41091 f_charbig = 'updated by trigger'
41092 WHERE f_int1 = new.f_int1;
41094 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
41095 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41097 # check trigger-3 success: 1
41098 DROP TRIGGER trg_1;
41099 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41100 f_int2 = CAST(f_char1 AS SIGNED INT),
41101 f_charbig = 'just inserted'
41102 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41104 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41105 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41106 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41107 'just inserted' FROM t0_template
41108 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41109 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
41111 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41112 f_charbig = 'updated by trigger'
41113 WHERE f_int1 = - old.f_int1;
41115 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
41116 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41118 # check trigger-4 success: 1
41119 DROP TRIGGER trg_1;
41120 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41121 f_int2 = CAST(f_char1 AS SIGNED INT),
41122 f_charbig = 'just inserted'
41123 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41125 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41126 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41127 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41128 'just inserted' FROM t0_template
41129 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41130 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
41132 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41133 f_charbig = 'updated by trigger'
41134 WHERE f_int1 = new.f_int1;
41136 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
41137 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41139 # check trigger-5 success: 1
41140 DROP TRIGGER trg_1;
41141 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41142 f_int2 = CAST(f_char1 AS SIGNED INT),
41143 f_charbig = 'just inserted'
41144 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41146 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41147 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41148 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41149 'just inserted' FROM t0_template
41150 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41151 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
41153 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41154 f_charbig = 'updated by trigger'
41155 WHERE f_int1 = - old.f_int1;
41157 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
41158 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41160 # check trigger-6 success: 1
41161 DROP TRIGGER trg_1;
41162 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41163 f_int2 = CAST(f_char1 AS SIGNED INT),
41164 f_charbig = 'just inserted'
41165 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41167 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41168 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41169 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41170 'just inserted' FROM t0_template
41171 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41172 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
41174 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41175 f_charbig = 'updated by trigger'
41176 WHERE f_int1 = - old.f_int1;
41179 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41181 # check trigger-7 success: 1
41182 DROP TRIGGER trg_1;
41183 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41184 f_int2 = CAST(f_char1 AS SIGNED INT),
41185 f_charbig = 'just inserted'
41186 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41188 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41189 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41190 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41191 'just inserted' FROM t0_template
41192 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41193 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
41195 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41196 f_charbig = 'updated by trigger'
41197 WHERE f_int1 = - old.f_int1;
41200 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41202 # check trigger-8 success: 1
41203 DROP TRIGGER trg_1;
41204 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41205 f_int2 = CAST(f_char1 AS SIGNED INT),
41206 f_charbig = 'just inserted'
41207 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41209 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41211 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41212 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
41214 SET new.f_int1 = old.f_int1 + @max_row,
41215 new.f_int2 = old.f_int2 - @max_row,
41216 new.f_charbig = '####updated per update trigger####';
41219 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
41220 f_charbig = '####updated per update statement itself####';
41222 # check trigger-9 success: 1
41223 DROP TRIGGER trg_2;
41224 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41225 f_int2 = CAST(f_char1 AS SIGNED INT),
41226 f_charbig = CONCAT('===',f_char1,'===');
41227 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
41229 SET new.f_int1 = new.f_int1 + @max_row,
41230 new.f_int2 = new.f_int2 - @max_row,
41231 new.f_charbig = '####updated per update trigger####';
41234 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
41235 f_charbig = '####updated per update statement itself####';
41237 # check trigger-10 success: 1
41238 DROP TRIGGER trg_2;
41239 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41240 f_int2 = CAST(f_char1 AS SIGNED INT),
41241 f_charbig = CONCAT('===',f_char1,'===');
41242 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
41244 SET new.f_int1 = @my_max1 + @counter,
41245 new.f_int2 = @my_min2 - @counter,
41246 new.f_charbig = '####updated per insert trigger####';
41247 SET @counter = @counter + 1;
41250 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
41251 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41252 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
41253 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
41254 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
41256 DROP TRIGGER trg_3;
41258 # check trigger-11 success: 1
41260 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
41261 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
41262 AND f_charbig = '####updated per insert trigger####';
41263 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
41265 SET new.f_int1 = @my_max1 + @counter,
41266 new.f_int2 = @my_min2 - @counter,
41267 new.f_charbig = '####updated per insert trigger####';
41268 SET @counter = @counter + 1;
41271 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
41272 INSERT INTO t1 (f_char1, f_char2, f_charbig)
41273 SELECT CAST(f_int1 AS CHAR),
41274 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
41275 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
41277 DROP TRIGGER trg_3;
41279 # check trigger-12 success: 1
41281 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
41282 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
41283 AND f_charbig = '####updated per insert trigger####';
41285 Table Op Msg_type Msg_text
41286 test.t1 analyze status OK
41287 CHECK TABLE t1 EXTENDED;
41288 Table Op Msg_type Msg_text
41289 test.t1 check status OK
41290 CHECKSUM TABLE t1 EXTENDED;
41292 test.t1 <some_value>
41294 Table Op Msg_type Msg_text
41295 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
41296 test.t1 optimize status OK
41297 # check layout success: 1
41298 REPAIR TABLE t1 EXTENDED;
41299 Table Op Msg_type Msg_text
41300 test.t1 repair note The storage engine for the table doesn't support repair
41301 # check layout success: 1
41304 # check TRUNCATE success: 1
41305 # check layout success: 1
41306 # End usability test (inc/partition_check.inc)
41313 f_charbig VARCHAR(1000)
41314 , PRIMARY KEY (f_int2,f_int1)
41316 PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
41317 (PARTITION parta VALUES LESS THAN (0),
41318 PARTITION partb VALUES LESS THAN (5),
41319 PARTITION partc VALUES LESS THAN (10),
41320 PARTITION partd VALUES LESS THAN (10 + 5),
41321 PARTITION parte VALUES LESS THAN (20),
41322 PARTITION partf VALUES LESS THAN (2147483646));
41323 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
41324 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
41325 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
41326 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
41327 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
41328 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
41329 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
41330 # Start usability test (inc/partition_check.inc)
41332 SHOW CREATE TABLE t1;
41334 t1 CREATE TABLE `t1` (
41335 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
41336 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
41337 `f_char1` char(20) DEFAULT NULL,
41338 `f_char2` char(20) DEFAULT NULL,
41339 `f_charbig` varchar(1000) DEFAULT NULL,
41340 PRIMARY KEY (`f_int2`,`f_int1`)
41341 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
41342 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
41343 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
41344 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
41345 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
41346 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
41347 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
41348 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
41350 # check prerequisites-1 success: 1
41351 # check COUNT(*) success: 1
41352 # check MIN/MAX(f_int1) success: 1
41353 # check MIN/MAX(f_int2) success: 1
41354 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41355 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
41356 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
41357 WHERE f_int1 IN (2,3);
41358 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
41359 # check prerequisites-3 success: 1
41360 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
41361 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41362 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
41363 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
41364 WHERE f_int1 IN (2,3);
41365 DELETE FROM t1 WHERE f_charbig = 'delete me';
41366 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41367 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
41368 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
41369 WHERE f_int1 IN (2,3);
41370 DELETE FROM t1 WHERE f_charbig = 'delete me';
41371 # check read via f_int1 success: 1
41372 # check read via f_int2 success: 1
41374 # check multiple-1 success: 1
41375 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
41377 # check multiple-2 success: 1
41378 INSERT INTO t1 SELECT * FROM t0_template
41379 WHERE MOD(f_int1,3) = 0;
41381 # check multiple-3 success: 1
41382 UPDATE t1 SET f_int1 = f_int1 + @max_row
41383 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
41384 AND @max_row_div2 + @max_row_div4;
41386 # check multiple-4 success: 1
41388 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
41389 AND @max_row_div2 + @max_row_div4 + @max_row;
41391 # check multiple-5 success: 1
41392 SELECT COUNT(*) INTO @try_count FROM t0_template
41393 WHERE MOD(f_int1,3) = 0
41394 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
41395 SELECT COUNT(*) INTO @clash_count
41396 FROM t1 INNER JOIN t0_template USING(f_int1)
41397 WHERE MOD(f_int1,3) = 0
41398 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
41399 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
41401 SET f_int1 = @cur_value , f_int2 = @cur_value,
41402 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
41403 f_charbig = '#SINGLE#';
41405 # check single-1 success: 1
41406 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
41408 SET f_int1 = @cur_value , f_int2 = @cur_value,
41409 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
41410 f_charbig = '#SINGLE#';
41412 # check single-2 success: 1
41413 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
41414 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
41415 UPDATE t1 SET f_int1 = @cur_value2
41416 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
41418 # check single-3 success: 1
41419 SET @cur_value1= -1;
41420 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
41421 UPDATE t1 SET f_int1 = @cur_value1
41422 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
41424 # check single-4 success: 1
41425 SELECT MAX(f_int1) INTO @cur_value FROM t1;
41426 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
41428 # check single-5 success: 1
41429 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
41431 # check single-6 success: 1
41432 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
41434 Warning 1264 Out of range value for column 'f_int1' at row 1
41435 Warning 1264 Out of range value for column 'f_int2' at row 1
41437 # check single-7 success: 1
41438 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
41439 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
41440 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
41441 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
41442 f_charbig = '#NULL#';
41444 SET f_int1 = NULL , f_int2 = -@max_row,
41445 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
41446 f_charbig = '#NULL#';
41447 ERROR 23000: Column 'f_int1' cannot be null
41448 # check null success: 1
41450 WHERE f_int1 = 0 AND f_int2 = 0
41451 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
41452 AND f_charbig = '#NULL#';
41453 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41454 SELECT f_int1, f_int1, '', '', 'was inserted'
41455 FROM t0_template source_tab
41456 WHERE MOD(f_int1,3) = 0
41457 AND f_int1 BETWEEN @max_row_div2 AND @max_row
41459 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
41460 f_int2 = 2 * @max_row + source_tab.f_int1,
41461 f_charbig = 'was updated';
41463 # check unique-1-a success: 1
41465 # check unique-1-b success: 1
41466 DELETE FROM t1 WHERE f_charbig = 'was inserted';
41467 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41468 f_int2 = CAST(f_char1 AS SIGNED INT),
41469 f_charbig = CONCAT('===',f_char1,'===')
41470 WHERE f_charbig = 'was updated';
41471 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41472 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
41473 FROM t0_template source_tab
41474 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
41476 # check replace success: 1
41478 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
41480 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
41481 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
41482 UPDATE t1 SET f_int2 = f_int1,
41483 f_char1 = CAST(f_int1 AS CHAR),
41484 f_char2 = CAST(f_int1 AS CHAR),
41485 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
41486 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
41488 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41489 SELECT f_int1, f_int1, '', '', 'was inserted'
41490 FROM t0_template source_tab
41491 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
41493 # check transactions-1 success: 1
41496 # check transactions-2 success: 1
41499 # check transactions-3 success: 1
41500 DELETE FROM t1 WHERE f_charbig = 'was inserted';
41504 # check transactions-4 success: 1
41505 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41506 SELECT f_int1, f_int1, '', '', 'was inserted'
41507 FROM t0_template source_tab
41508 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
41510 # check transactions-5 success: 1
41513 # check transactions-6 success: 1
41514 # INFO: Storage engine used for t1 seems to be transactional.
41517 # check transactions-7 success: 1
41518 DELETE FROM t1 WHERE f_charbig = 'was inserted';
41520 SET @@session.sql_mode = 'traditional';
41521 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
41522 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41523 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
41524 '', '', 'was inserted' FROM t0_template
41525 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
41526 ERROR 22012: Division by 0
41529 # check transactions-8 success: 1
41530 # INFO: Storage engine used for t1 seems to be able to revert
41531 # changes made by the failing statement.
41532 SET @@session.sql_mode = '';
41534 DELETE FROM t1 WHERE f_charbig = 'was inserted';
41536 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
41538 # check special-1 success: 1
41539 UPDATE t1 SET f_charbig = '';
41541 # check special-2 success: 1
41542 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
41543 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
41544 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
41545 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41546 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41547 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41548 'just inserted' FROM t0_template
41549 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41550 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
41552 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41553 f_charbig = 'updated by trigger'
41554 WHERE f_int1 = new.f_int1;
41556 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41557 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
41558 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41560 # check trigger-1 success: 1
41561 DROP TRIGGER trg_1;
41562 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41563 f_int2 = CAST(f_char1 AS SIGNED INT),
41564 f_charbig = 'just inserted'
41565 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41567 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41568 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41569 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41570 'just inserted' FROM t0_template
41571 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41572 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
41574 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41575 f_charbig = 'updated by trigger'
41576 WHERE f_int1 = new.f_int1;
41578 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41579 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
41580 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41582 # check trigger-2 success: 1
41583 DROP TRIGGER trg_1;
41584 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41585 f_int2 = CAST(f_char1 AS SIGNED INT),
41586 f_charbig = 'just inserted'
41587 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41589 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41590 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41591 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41592 'just inserted' FROM t0_template
41593 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41594 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
41596 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41597 f_charbig = 'updated by trigger'
41598 WHERE f_int1 = new.f_int1;
41600 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
41601 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41603 # check trigger-3 success: 1
41604 DROP TRIGGER trg_1;
41605 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41606 f_int2 = CAST(f_char1 AS SIGNED INT),
41607 f_charbig = 'just inserted'
41608 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41610 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41611 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41612 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41613 'just inserted' FROM t0_template
41614 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41615 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
41617 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41618 f_charbig = 'updated by trigger'
41619 WHERE f_int1 = - old.f_int1;
41621 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
41622 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41624 # check trigger-4 success: 1
41625 DROP TRIGGER trg_1;
41626 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41627 f_int2 = CAST(f_char1 AS SIGNED INT),
41628 f_charbig = 'just inserted'
41629 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41631 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41632 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41633 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41634 'just inserted' FROM t0_template
41635 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41636 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
41638 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41639 f_charbig = 'updated by trigger'
41640 WHERE f_int1 = new.f_int1;
41642 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
41643 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41645 # check trigger-5 success: 1
41646 DROP TRIGGER trg_1;
41647 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41648 f_int2 = CAST(f_char1 AS SIGNED INT),
41649 f_charbig = 'just inserted'
41650 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41652 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41653 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41654 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41655 'just inserted' FROM t0_template
41656 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41657 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
41659 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41660 f_charbig = 'updated by trigger'
41661 WHERE f_int1 = - old.f_int1;
41663 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
41664 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41666 # check trigger-6 success: 1
41667 DROP TRIGGER trg_1;
41668 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41669 f_int2 = CAST(f_char1 AS SIGNED INT),
41670 f_charbig = 'just inserted'
41671 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41673 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41674 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41675 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41676 'just inserted' FROM t0_template
41677 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41678 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
41680 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41681 f_charbig = 'updated by trigger'
41682 WHERE f_int1 = - old.f_int1;
41685 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41687 # check trigger-7 success: 1
41688 DROP TRIGGER trg_1;
41689 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41690 f_int2 = CAST(f_char1 AS SIGNED INT),
41691 f_charbig = 'just inserted'
41692 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41694 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41695 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
41696 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
41697 'just inserted' FROM t0_template
41698 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41699 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
41701 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
41702 f_charbig = 'updated by trigger'
41703 WHERE f_int1 = - old.f_int1;
41706 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
41708 # check trigger-8 success: 1
41709 DROP TRIGGER trg_1;
41710 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41711 f_int2 = CAST(f_char1 AS SIGNED INT),
41712 f_charbig = 'just inserted'
41713 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
41715 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41717 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
41718 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
41720 SET new.f_int1 = old.f_int1 + @max_row,
41721 new.f_int2 = old.f_int2 - @max_row,
41722 new.f_charbig = '####updated per update trigger####';
41725 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
41726 f_charbig = '####updated per update statement itself####';
41728 # check trigger-9 success: 1
41729 DROP TRIGGER trg_2;
41730 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41731 f_int2 = CAST(f_char1 AS SIGNED INT),
41732 f_charbig = CONCAT('===',f_char1,'===');
41733 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
41735 SET new.f_int1 = new.f_int1 + @max_row,
41736 new.f_int2 = new.f_int2 - @max_row,
41737 new.f_charbig = '####updated per update trigger####';
41740 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
41741 f_charbig = '####updated per update statement itself####';
41743 # check trigger-10 success: 1
41744 DROP TRIGGER trg_2;
41745 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41746 f_int2 = CAST(f_char1 AS SIGNED INT),
41747 f_charbig = CONCAT('===',f_char1,'===');
41748 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
41750 SET new.f_int1 = @my_max1 + @counter,
41751 new.f_int2 = @my_min2 - @counter,
41752 new.f_charbig = '####updated per insert trigger####';
41753 SET @counter = @counter + 1;
41756 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
41757 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41758 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
41759 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
41760 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
41762 DROP TRIGGER trg_3;
41764 # check trigger-11 success: 1
41766 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
41767 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
41768 AND f_charbig = '####updated per insert trigger####';
41769 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
41771 SET new.f_int1 = @my_max1 + @counter,
41772 new.f_int2 = @my_min2 - @counter,
41773 new.f_charbig = '####updated per insert trigger####';
41774 SET @counter = @counter + 1;
41777 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
41778 INSERT INTO t1 (f_char1, f_char2, f_charbig)
41779 SELECT CAST(f_int1 AS CHAR),
41780 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
41781 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
41783 DROP TRIGGER trg_3;
41785 # check trigger-12 success: 1
41787 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
41788 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
41789 AND f_charbig = '####updated per insert trigger####';
41791 Table Op Msg_type Msg_text
41792 test.t1 analyze status OK
41793 CHECK TABLE t1 EXTENDED;
41794 Table Op Msg_type Msg_text
41795 test.t1 check status OK
41796 CHECKSUM TABLE t1 EXTENDED;
41798 test.t1 <some_value>
41800 Table Op Msg_type Msg_text
41801 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
41802 test.t1 optimize status OK
41803 # check layout success: 1
41804 REPAIR TABLE t1 EXTENDED;
41805 Table Op Msg_type Msg_text
41806 test.t1 repair note The storage engine for the table doesn't support repair
41807 # check layout success: 1
41810 # check TRUNCATE success: 1
41811 # check layout success: 1
41812 # End usability test (inc/partition_check.inc)
41819 f_charbig VARCHAR(1000)
41820 , PRIMARY KEY (f_int2,f_int1)
41822 PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
41823 (PARTITION parta VALUES LESS THAN (0),
41824 PARTITION partb VALUES LESS THAN (5),
41825 PARTITION partc VALUES LESS THAN (10),
41826 PARTITION partd VALUES LESS THAN (2147483646));
41827 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
41828 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
41829 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
41830 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
41831 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
41832 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
41833 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
41834 # Start usability test (inc/partition_check.inc)
41836 SHOW CREATE TABLE t1;
41838 t1 CREATE TABLE `t1` (
41839 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
41840 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
41841 `f_char1` char(20) DEFAULT NULL,
41842 `f_char2` char(20) DEFAULT NULL,
41843 `f_charbig` varchar(1000) DEFAULT NULL,
41844 PRIMARY KEY (`f_int2`,`f_int1`)
41845 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
41846 /*!50100 PARTITION BY RANGE (f_int1)
41847 SUBPARTITION BY HASH (f_int2)
41849 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
41850 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
41851 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
41852 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
41854 # check prerequisites-1 success: 1
41855 # check COUNT(*) success: 1
41856 # check MIN/MAX(f_int1) success: 1
41857 # check MIN/MAX(f_int2) success: 1
41858 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41859 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
41860 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
41861 WHERE f_int1 IN (2,3);
41862 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
41863 # check prerequisites-3 success: 1
41864 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
41865 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41866 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
41867 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
41868 WHERE f_int1 IN (2,3);
41869 DELETE FROM t1 WHERE f_charbig = 'delete me';
41870 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41871 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
41872 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
41873 WHERE f_int1 IN (2,3);
41874 DELETE FROM t1 WHERE f_charbig = 'delete me';
41875 # check read via f_int1 success: 1
41876 # check read via f_int2 success: 1
41878 # check multiple-1 success: 1
41879 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
41881 # check multiple-2 success: 1
41882 INSERT INTO t1 SELECT * FROM t0_template
41883 WHERE MOD(f_int1,3) = 0;
41885 # check multiple-3 success: 1
41886 UPDATE t1 SET f_int1 = f_int1 + @max_row
41887 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
41888 AND @max_row_div2 + @max_row_div4;
41890 # check multiple-4 success: 1
41892 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
41893 AND @max_row_div2 + @max_row_div4 + @max_row;
41895 # check multiple-5 success: 1
41896 SELECT COUNT(*) INTO @try_count FROM t0_template
41897 WHERE MOD(f_int1,3) = 0
41898 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
41899 SELECT COUNT(*) INTO @clash_count
41900 FROM t1 INNER JOIN t0_template USING(f_int1)
41901 WHERE MOD(f_int1,3) = 0
41902 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
41903 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
41905 SET f_int1 = @cur_value , f_int2 = @cur_value,
41906 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
41907 f_charbig = '#SINGLE#';
41909 # check single-1 success: 1
41910 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
41912 SET f_int1 = @cur_value , f_int2 = @cur_value,
41913 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
41914 f_charbig = '#SINGLE#';
41916 # check single-2 success: 1
41917 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
41918 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
41919 UPDATE t1 SET f_int1 = @cur_value2
41920 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
41922 # check single-3 success: 1
41923 SET @cur_value1= -1;
41924 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
41925 UPDATE t1 SET f_int1 = @cur_value1
41926 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
41928 # check single-4 success: 1
41929 SELECT MAX(f_int1) INTO @cur_value FROM t1;
41930 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
41932 # check single-5 success: 1
41933 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
41935 # check single-6 success: 1
41936 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
41938 Warning 1264 Out of range value for column 'f_int1' at row 1
41939 Warning 1264 Out of range value for column 'f_int2' at row 1
41941 # check single-7 success: 1
41942 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
41943 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
41944 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
41945 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
41946 f_charbig = '#NULL#';
41948 SET f_int1 = NULL , f_int2 = -@max_row,
41949 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
41950 f_charbig = '#NULL#';
41951 ERROR 23000: Column 'f_int1' cannot be null
41952 # check null success: 1
41954 WHERE f_int1 = 0 AND f_int2 = 0
41955 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
41956 AND f_charbig = '#NULL#';
41957 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41958 SELECT f_int1, f_int1, '', '', 'was inserted'
41959 FROM t0_template source_tab
41960 WHERE MOD(f_int1,3) = 0
41961 AND f_int1 BETWEEN @max_row_div2 AND @max_row
41963 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
41964 f_int2 = 2 * @max_row + source_tab.f_int1,
41965 f_charbig = 'was updated';
41967 # check unique-1-a success: 1
41969 # check unique-1-b success: 1
41970 DELETE FROM t1 WHERE f_charbig = 'was inserted';
41971 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
41972 f_int2 = CAST(f_char1 AS SIGNED INT),
41973 f_charbig = CONCAT('===',f_char1,'===')
41974 WHERE f_charbig = 'was updated';
41975 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41976 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
41977 FROM t0_template source_tab
41978 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
41980 # check replace success: 1
41982 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
41984 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
41985 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
41986 UPDATE t1 SET f_int2 = f_int1,
41987 f_char1 = CAST(f_int1 AS CHAR),
41988 f_char2 = CAST(f_int1 AS CHAR),
41989 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
41990 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
41992 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
41993 SELECT f_int1, f_int1, '', '', 'was inserted'
41994 FROM t0_template source_tab
41995 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
41997 # check transactions-1 success: 1
42000 # check transactions-2 success: 1
42003 # check transactions-3 success: 1
42004 DELETE FROM t1 WHERE f_charbig = 'was inserted';
42008 # check transactions-4 success: 1
42009 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42010 SELECT f_int1, f_int1, '', '', 'was inserted'
42011 FROM t0_template source_tab
42012 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
42014 # check transactions-5 success: 1
42017 # check transactions-6 success: 1
42018 # INFO: Storage engine used for t1 seems to be transactional.
42021 # check transactions-7 success: 1
42022 DELETE FROM t1 WHERE f_charbig = 'was inserted';
42024 SET @@session.sql_mode = 'traditional';
42025 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
42026 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42027 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
42028 '', '', 'was inserted' FROM t0_template
42029 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
42030 ERROR 22012: Division by 0
42033 # check transactions-8 success: 1
42034 # INFO: Storage engine used for t1 seems to be able to revert
42035 # changes made by the failing statement.
42036 SET @@session.sql_mode = '';
42038 DELETE FROM t1 WHERE f_charbig = 'was inserted';
42040 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
42042 # check special-1 success: 1
42043 UPDATE t1 SET f_charbig = '';
42045 # check special-2 success: 1
42046 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
42047 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
42048 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
42049 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42050 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42051 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42052 'just inserted' FROM t0_template
42053 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42054 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
42056 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42057 f_charbig = 'updated by trigger'
42058 WHERE f_int1 = new.f_int1;
42060 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42061 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
42062 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42064 # check trigger-1 success: 1
42065 DROP TRIGGER trg_1;
42066 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42067 f_int2 = CAST(f_char1 AS SIGNED INT),
42068 f_charbig = 'just inserted'
42069 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42071 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42072 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42073 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42074 'just inserted' FROM t0_template
42075 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42076 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
42078 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42079 f_charbig = 'updated by trigger'
42080 WHERE f_int1 = new.f_int1;
42082 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42083 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
42084 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42086 # check trigger-2 success: 1
42087 DROP TRIGGER trg_1;
42088 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42089 f_int2 = CAST(f_char1 AS SIGNED INT),
42090 f_charbig = 'just inserted'
42091 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42093 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42094 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42095 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42096 'just inserted' FROM t0_template
42097 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42098 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
42100 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42101 f_charbig = 'updated by trigger'
42102 WHERE f_int1 = new.f_int1;
42104 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
42105 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42107 # check trigger-3 success: 1
42108 DROP TRIGGER trg_1;
42109 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42110 f_int2 = CAST(f_char1 AS SIGNED INT),
42111 f_charbig = 'just inserted'
42112 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42114 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42115 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42116 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42117 'just inserted' FROM t0_template
42118 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42119 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
42121 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42122 f_charbig = 'updated by trigger'
42123 WHERE f_int1 = - old.f_int1;
42125 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
42126 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42128 # check trigger-4 success: 1
42129 DROP TRIGGER trg_1;
42130 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42131 f_int2 = CAST(f_char1 AS SIGNED INT),
42132 f_charbig = 'just inserted'
42133 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42135 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42136 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42137 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42138 'just inserted' FROM t0_template
42139 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42140 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
42142 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42143 f_charbig = 'updated by trigger'
42144 WHERE f_int1 = new.f_int1;
42146 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
42147 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42149 # check trigger-5 success: 1
42150 DROP TRIGGER trg_1;
42151 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42152 f_int2 = CAST(f_char1 AS SIGNED INT),
42153 f_charbig = 'just inserted'
42154 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42156 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42157 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42158 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42159 'just inserted' FROM t0_template
42160 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42161 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
42163 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42164 f_charbig = 'updated by trigger'
42165 WHERE f_int1 = - old.f_int1;
42167 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
42168 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42170 # check trigger-6 success: 1
42171 DROP TRIGGER trg_1;
42172 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42173 f_int2 = CAST(f_char1 AS SIGNED INT),
42174 f_charbig = 'just inserted'
42175 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42177 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42178 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42179 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42180 'just inserted' FROM t0_template
42181 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42182 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
42184 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42185 f_charbig = 'updated by trigger'
42186 WHERE f_int1 = - old.f_int1;
42189 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42191 # check trigger-7 success: 1
42192 DROP TRIGGER trg_1;
42193 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42194 f_int2 = CAST(f_char1 AS SIGNED INT),
42195 f_charbig = 'just inserted'
42196 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42198 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42199 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42200 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42201 'just inserted' FROM t0_template
42202 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42203 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
42205 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42206 f_charbig = 'updated by trigger'
42207 WHERE f_int1 = - old.f_int1;
42210 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42212 # check trigger-8 success: 1
42213 DROP TRIGGER trg_1;
42214 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42215 f_int2 = CAST(f_char1 AS SIGNED INT),
42216 f_charbig = 'just inserted'
42217 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42219 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42221 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42222 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
42224 SET new.f_int1 = old.f_int1 + @max_row,
42225 new.f_int2 = old.f_int2 - @max_row,
42226 new.f_charbig = '####updated per update trigger####';
42229 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
42230 f_charbig = '####updated per update statement itself####';
42232 # check trigger-9 success: 1
42233 DROP TRIGGER trg_2;
42234 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42235 f_int2 = CAST(f_char1 AS SIGNED INT),
42236 f_charbig = CONCAT('===',f_char1,'===');
42237 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
42239 SET new.f_int1 = new.f_int1 + @max_row,
42240 new.f_int2 = new.f_int2 - @max_row,
42241 new.f_charbig = '####updated per update trigger####';
42244 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
42245 f_charbig = '####updated per update statement itself####';
42247 # check trigger-10 success: 1
42248 DROP TRIGGER trg_2;
42249 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42250 f_int2 = CAST(f_char1 AS SIGNED INT),
42251 f_charbig = CONCAT('===',f_char1,'===');
42252 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
42254 SET new.f_int1 = @my_max1 + @counter,
42255 new.f_int2 = @my_min2 - @counter,
42256 new.f_charbig = '####updated per insert trigger####';
42257 SET @counter = @counter + 1;
42260 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
42261 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42262 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
42263 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
42264 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
42266 DROP TRIGGER trg_3;
42268 # check trigger-11 success: 1
42270 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
42271 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
42272 AND f_charbig = '####updated per insert trigger####';
42273 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
42275 SET new.f_int1 = @my_max1 + @counter,
42276 new.f_int2 = @my_min2 - @counter,
42277 new.f_charbig = '####updated per insert trigger####';
42278 SET @counter = @counter + 1;
42281 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
42282 INSERT INTO t1 (f_char1, f_char2, f_charbig)
42283 SELECT CAST(f_int1 AS CHAR),
42284 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
42285 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
42287 DROP TRIGGER trg_3;
42289 # check trigger-12 success: 1
42291 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
42292 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
42293 AND f_charbig = '####updated per insert trigger####';
42295 Table Op Msg_type Msg_text
42296 test.t1 analyze status OK
42297 CHECK TABLE t1 EXTENDED;
42298 Table Op Msg_type Msg_text
42299 test.t1 check status OK
42300 CHECKSUM TABLE t1 EXTENDED;
42302 test.t1 <some_value>
42304 Table Op Msg_type Msg_text
42305 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
42306 test.t1 optimize status OK
42307 # check layout success: 1
42308 REPAIR TABLE t1 EXTENDED;
42309 Table Op Msg_type Msg_text
42310 test.t1 repair note The storage engine for the table doesn't support repair
42311 # check layout success: 1
42314 # check TRUNCATE success: 1
42315 # check layout success: 1
42316 # End usability test (inc/partition_check.inc)
42323 f_charbig VARCHAR(1000)
42324 , PRIMARY KEY (f_int2,f_int1)
42326 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
42327 (PARTITION part1 VALUES LESS THAN (0)
42328 (SUBPARTITION subpart11, SUBPARTITION subpart12),
42329 PARTITION part2 VALUES LESS THAN (5)
42330 (SUBPARTITION subpart21, SUBPARTITION subpart22),
42331 PARTITION part3 VALUES LESS THAN (10)
42332 (SUBPARTITION subpart31, SUBPARTITION subpart32),
42333 PARTITION part4 VALUES LESS THAN (2147483646)
42334 (SUBPARTITION subpart41, SUBPARTITION subpart42));
42335 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
42336 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
42337 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
42338 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
42339 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
42340 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
42341 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
42342 # Start usability test (inc/partition_check.inc)
42344 SHOW CREATE TABLE t1;
42346 t1 CREATE TABLE `t1` (
42347 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
42348 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
42349 `f_char1` char(20) DEFAULT NULL,
42350 `f_char2` char(20) DEFAULT NULL,
42351 `f_charbig` varchar(1000) DEFAULT NULL,
42352 PRIMARY KEY (`f_int2`,`f_int1`)
42353 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
42354 /*!50100 PARTITION BY RANGE (f_int1)
42355 SUBPARTITION BY KEY (f_int2)
42356 (PARTITION part1 VALUES LESS THAN (0)
42357 (SUBPARTITION subpart11 ENGINE = InnoDB,
42358 SUBPARTITION subpart12 ENGINE = InnoDB),
42359 PARTITION part2 VALUES LESS THAN (5)
42360 (SUBPARTITION subpart21 ENGINE = InnoDB,
42361 SUBPARTITION subpart22 ENGINE = InnoDB),
42362 PARTITION part3 VALUES LESS THAN (10)
42363 (SUBPARTITION subpart31 ENGINE = InnoDB,
42364 SUBPARTITION subpart32 ENGINE = InnoDB),
42365 PARTITION part4 VALUES LESS THAN (2147483646)
42366 (SUBPARTITION subpart41 ENGINE = InnoDB,
42367 SUBPARTITION subpart42 ENGINE = InnoDB)) */
42369 # check prerequisites-1 success: 1
42370 # check COUNT(*) success: 1
42371 # check MIN/MAX(f_int1) success: 1
42372 # check MIN/MAX(f_int2) success: 1
42373 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42374 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
42375 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
42376 WHERE f_int1 IN (2,3);
42377 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
42378 # check prerequisites-3 success: 1
42379 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
42380 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42381 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
42382 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
42383 WHERE f_int1 IN (2,3);
42384 DELETE FROM t1 WHERE f_charbig = 'delete me';
42385 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42386 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
42387 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
42388 WHERE f_int1 IN (2,3);
42389 DELETE FROM t1 WHERE f_charbig = 'delete me';
42390 # check read via f_int1 success: 1
42391 # check read via f_int2 success: 1
42393 # check multiple-1 success: 1
42394 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
42396 # check multiple-2 success: 1
42397 INSERT INTO t1 SELECT * FROM t0_template
42398 WHERE MOD(f_int1,3) = 0;
42400 # check multiple-3 success: 1
42401 UPDATE t1 SET f_int1 = f_int1 + @max_row
42402 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
42403 AND @max_row_div2 + @max_row_div4;
42405 # check multiple-4 success: 1
42407 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
42408 AND @max_row_div2 + @max_row_div4 + @max_row;
42410 # check multiple-5 success: 1
42411 SELECT COUNT(*) INTO @try_count FROM t0_template
42412 WHERE MOD(f_int1,3) = 0
42413 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
42414 SELECT COUNT(*) INTO @clash_count
42415 FROM t1 INNER JOIN t0_template USING(f_int1)
42416 WHERE MOD(f_int1,3) = 0
42417 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
42418 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
42420 SET f_int1 = @cur_value , f_int2 = @cur_value,
42421 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
42422 f_charbig = '#SINGLE#';
42424 # check single-1 success: 1
42425 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
42427 SET f_int1 = @cur_value , f_int2 = @cur_value,
42428 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
42429 f_charbig = '#SINGLE#';
42431 # check single-2 success: 1
42432 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
42433 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
42434 UPDATE t1 SET f_int1 = @cur_value2
42435 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
42437 # check single-3 success: 1
42438 SET @cur_value1= -1;
42439 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
42440 UPDATE t1 SET f_int1 = @cur_value1
42441 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
42443 # check single-4 success: 1
42444 SELECT MAX(f_int1) INTO @cur_value FROM t1;
42445 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
42447 # check single-5 success: 1
42448 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
42450 # check single-6 success: 1
42451 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
42453 Warning 1264 Out of range value for column 'f_int1' at row 1
42454 Warning 1264 Out of range value for column 'f_int2' at row 1
42456 # check single-7 success: 1
42457 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
42458 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
42459 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
42460 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
42461 f_charbig = '#NULL#';
42463 SET f_int1 = NULL , f_int2 = -@max_row,
42464 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
42465 f_charbig = '#NULL#';
42466 ERROR 23000: Column 'f_int1' cannot be null
42467 # check null success: 1
42469 WHERE f_int1 = 0 AND f_int2 = 0
42470 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
42471 AND f_charbig = '#NULL#';
42472 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42473 SELECT f_int1, f_int1, '', '', 'was inserted'
42474 FROM t0_template source_tab
42475 WHERE MOD(f_int1,3) = 0
42476 AND f_int1 BETWEEN @max_row_div2 AND @max_row
42478 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
42479 f_int2 = 2 * @max_row + source_tab.f_int1,
42480 f_charbig = 'was updated';
42482 # check unique-1-a success: 1
42484 # check unique-1-b success: 1
42485 DELETE FROM t1 WHERE f_charbig = 'was inserted';
42486 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42487 f_int2 = CAST(f_char1 AS SIGNED INT),
42488 f_charbig = CONCAT('===',f_char1,'===')
42489 WHERE f_charbig = 'was updated';
42490 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42491 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
42492 FROM t0_template source_tab
42493 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
42495 # check replace success: 1
42497 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
42499 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
42500 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
42501 UPDATE t1 SET f_int2 = f_int1,
42502 f_char1 = CAST(f_int1 AS CHAR),
42503 f_char2 = CAST(f_int1 AS CHAR),
42504 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
42505 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
42507 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42508 SELECT f_int1, f_int1, '', '', 'was inserted'
42509 FROM t0_template source_tab
42510 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
42512 # check transactions-1 success: 1
42515 # check transactions-2 success: 1
42518 # check transactions-3 success: 1
42519 DELETE FROM t1 WHERE f_charbig = 'was inserted';
42523 # check transactions-4 success: 1
42524 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42525 SELECT f_int1, f_int1, '', '', 'was inserted'
42526 FROM t0_template source_tab
42527 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
42529 # check transactions-5 success: 1
42532 # check transactions-6 success: 1
42533 # INFO: Storage engine used for t1 seems to be transactional.
42536 # check transactions-7 success: 1
42537 DELETE FROM t1 WHERE f_charbig = 'was inserted';
42539 SET @@session.sql_mode = 'traditional';
42540 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
42541 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42542 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
42543 '', '', 'was inserted' FROM t0_template
42544 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
42545 ERROR 22012: Division by 0
42548 # check transactions-8 success: 1
42549 # INFO: Storage engine used for t1 seems to be able to revert
42550 # changes made by the failing statement.
42551 SET @@session.sql_mode = '';
42553 DELETE FROM t1 WHERE f_charbig = 'was inserted';
42555 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
42557 # check special-1 success: 1
42558 UPDATE t1 SET f_charbig = '';
42560 # check special-2 success: 1
42561 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
42562 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
42563 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
42564 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42565 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42566 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42567 'just inserted' FROM t0_template
42568 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42569 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
42571 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42572 f_charbig = 'updated by trigger'
42573 WHERE f_int1 = new.f_int1;
42575 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42576 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
42577 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42579 # check trigger-1 success: 1
42580 DROP TRIGGER trg_1;
42581 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42582 f_int2 = CAST(f_char1 AS SIGNED INT),
42583 f_charbig = 'just inserted'
42584 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42586 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42587 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42588 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42589 'just inserted' FROM t0_template
42590 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42591 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
42593 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42594 f_charbig = 'updated by trigger'
42595 WHERE f_int1 = new.f_int1;
42597 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42598 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
42599 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42601 # check trigger-2 success: 1
42602 DROP TRIGGER trg_1;
42603 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42604 f_int2 = CAST(f_char1 AS SIGNED INT),
42605 f_charbig = 'just inserted'
42606 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42608 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42609 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42610 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42611 'just inserted' FROM t0_template
42612 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42613 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
42615 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42616 f_charbig = 'updated by trigger'
42617 WHERE f_int1 = new.f_int1;
42619 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
42620 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42622 # check trigger-3 success: 1
42623 DROP TRIGGER trg_1;
42624 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42625 f_int2 = CAST(f_char1 AS SIGNED INT),
42626 f_charbig = 'just inserted'
42627 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42629 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42630 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42631 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42632 'just inserted' FROM t0_template
42633 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42634 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
42636 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42637 f_charbig = 'updated by trigger'
42638 WHERE f_int1 = - old.f_int1;
42640 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
42641 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42643 # check trigger-4 success: 1
42644 DROP TRIGGER trg_1;
42645 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42646 f_int2 = CAST(f_char1 AS SIGNED INT),
42647 f_charbig = 'just inserted'
42648 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42650 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42651 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42652 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42653 'just inserted' FROM t0_template
42654 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42655 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
42657 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42658 f_charbig = 'updated by trigger'
42659 WHERE f_int1 = new.f_int1;
42661 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
42662 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42664 # check trigger-5 success: 1
42665 DROP TRIGGER trg_1;
42666 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42667 f_int2 = CAST(f_char1 AS SIGNED INT),
42668 f_charbig = 'just inserted'
42669 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42671 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42672 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42673 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42674 'just inserted' FROM t0_template
42675 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42676 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
42678 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42679 f_charbig = 'updated by trigger'
42680 WHERE f_int1 = - old.f_int1;
42682 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
42683 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42685 # check trigger-6 success: 1
42686 DROP TRIGGER trg_1;
42687 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42688 f_int2 = CAST(f_char1 AS SIGNED INT),
42689 f_charbig = 'just inserted'
42690 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42692 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42693 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42694 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42695 'just inserted' FROM t0_template
42696 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42697 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
42699 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42700 f_charbig = 'updated by trigger'
42701 WHERE f_int1 = - old.f_int1;
42704 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42706 # check trigger-7 success: 1
42707 DROP TRIGGER trg_1;
42708 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42709 f_int2 = CAST(f_char1 AS SIGNED INT),
42710 f_charbig = 'just inserted'
42711 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42713 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42714 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
42715 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
42716 'just inserted' FROM t0_template
42717 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42718 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
42720 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
42721 f_charbig = 'updated by trigger'
42722 WHERE f_int1 = - old.f_int1;
42725 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
42727 # check trigger-8 success: 1
42728 DROP TRIGGER trg_1;
42729 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42730 f_int2 = CAST(f_char1 AS SIGNED INT),
42731 f_charbig = 'just inserted'
42732 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
42734 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42736 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
42737 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
42739 SET new.f_int1 = old.f_int1 + @max_row,
42740 new.f_int2 = old.f_int2 - @max_row,
42741 new.f_charbig = '####updated per update trigger####';
42744 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
42745 f_charbig = '####updated per update statement itself####';
42747 # check trigger-9 success: 1
42748 DROP TRIGGER trg_2;
42749 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42750 f_int2 = CAST(f_char1 AS SIGNED INT),
42751 f_charbig = CONCAT('===',f_char1,'===');
42752 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
42754 SET new.f_int1 = new.f_int1 + @max_row,
42755 new.f_int2 = new.f_int2 - @max_row,
42756 new.f_charbig = '####updated per update trigger####';
42759 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
42760 f_charbig = '####updated per update statement itself####';
42762 # check trigger-10 success: 1
42763 DROP TRIGGER trg_2;
42764 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
42765 f_int2 = CAST(f_char1 AS SIGNED INT),
42766 f_charbig = CONCAT('===',f_char1,'===');
42767 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
42769 SET new.f_int1 = @my_max1 + @counter,
42770 new.f_int2 = @my_min2 - @counter,
42771 new.f_charbig = '####updated per insert trigger####';
42772 SET @counter = @counter + 1;
42775 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
42776 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42777 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
42778 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
42779 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
42781 DROP TRIGGER trg_3;
42783 # check trigger-11 success: 1
42785 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
42786 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
42787 AND f_charbig = '####updated per insert trigger####';
42788 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
42790 SET new.f_int1 = @my_max1 + @counter,
42791 new.f_int2 = @my_min2 - @counter,
42792 new.f_charbig = '####updated per insert trigger####';
42793 SET @counter = @counter + 1;
42796 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
42797 INSERT INTO t1 (f_char1, f_char2, f_charbig)
42798 SELECT CAST(f_int1 AS CHAR),
42799 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
42800 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
42802 DROP TRIGGER trg_3;
42804 # check trigger-12 success: 1
42806 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
42807 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
42808 AND f_charbig = '####updated per insert trigger####';
42810 Table Op Msg_type Msg_text
42811 test.t1 analyze status OK
42812 CHECK TABLE t1 EXTENDED;
42813 Table Op Msg_type Msg_text
42814 test.t1 check status OK
42815 CHECKSUM TABLE t1 EXTENDED;
42817 test.t1 <some_value>
42819 Table Op Msg_type Msg_text
42820 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
42821 test.t1 optimize status OK
42822 # check layout success: 1
42823 REPAIR TABLE t1 EXTENDED;
42824 Table Op Msg_type Msg_text
42825 test.t1 repair note The storage engine for the table doesn't support repair
42826 # check layout success: 1
42829 # check TRUNCATE success: 1
42830 # check layout success: 1
42831 # End usability test (inc/partition_check.inc)
42838 f_charbig VARCHAR(1000)
42839 , PRIMARY KEY (f_int2,f_int1)
42841 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
42842 (PARTITION part1 VALUES IN (0)
42843 (SUBPARTITION sp11, SUBPARTITION sp12),
42844 PARTITION part2 VALUES IN (1)
42845 (SUBPARTITION sp21, SUBPARTITION sp22),
42846 PARTITION part3 VALUES IN (2)
42847 (SUBPARTITION sp31, SUBPARTITION sp32),
42848 PARTITION part4 VALUES IN (NULL)
42849 (SUBPARTITION sp41, SUBPARTITION sp42));
42850 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
42851 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
42852 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
42853 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
42854 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
42855 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
42856 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
42857 # Start usability test (inc/partition_check.inc)
42859 SHOW CREATE TABLE t1;
42861 t1 CREATE TABLE `t1` (
42862 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
42863 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
42864 `f_char1` char(20) DEFAULT NULL,
42865 `f_char2` char(20) DEFAULT NULL,
42866 `f_charbig` varchar(1000) DEFAULT NULL,
42867 PRIMARY KEY (`f_int2`,`f_int1`)
42868 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
42869 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
42870 SUBPARTITION BY HASH (f_int2 + 1)
42871 (PARTITION part1 VALUES IN (0)
42872 (SUBPARTITION sp11 ENGINE = InnoDB,
42873 SUBPARTITION sp12 ENGINE = InnoDB),
42874 PARTITION part2 VALUES IN (1)
42875 (SUBPARTITION sp21 ENGINE = InnoDB,
42876 SUBPARTITION sp22 ENGINE = InnoDB),
42877 PARTITION part3 VALUES IN (2)
42878 (SUBPARTITION sp31 ENGINE = InnoDB,
42879 SUBPARTITION sp32 ENGINE = InnoDB),
42880 PARTITION part4 VALUES IN (NULL)
42881 (SUBPARTITION sp41 ENGINE = InnoDB,
42882 SUBPARTITION sp42 ENGINE = InnoDB)) */
42884 # check prerequisites-1 success: 1
42885 # check COUNT(*) success: 1
42886 # check MIN/MAX(f_int1) success: 1
42887 # check MIN/MAX(f_int2) success: 1
42888 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42889 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
42890 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
42891 WHERE f_int1 IN (2,3);
42892 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
42893 # check prerequisites-3 success: 1
42894 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
42895 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42896 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
42897 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
42898 WHERE f_int1 IN (2,3);
42899 DELETE FROM t1 WHERE f_charbig = 'delete me';
42900 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42901 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
42902 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
42903 WHERE f_int1 IN (2,3);
42904 DELETE FROM t1 WHERE f_charbig = 'delete me';
42905 # check read via f_int1 success: 1
42906 # check read via f_int2 success: 1
42908 # check multiple-1 success: 1
42909 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
42911 # check multiple-2 success: 1
42912 INSERT INTO t1 SELECT * FROM t0_template
42913 WHERE MOD(f_int1,3) = 0;
42915 # check multiple-3 success: 1
42916 UPDATE t1 SET f_int1 = f_int1 + @max_row
42917 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
42918 AND @max_row_div2 + @max_row_div4;
42920 # check multiple-4 success: 1
42922 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
42923 AND @max_row_div2 + @max_row_div4 + @max_row;
42925 # check multiple-5 success: 1
42926 SELECT COUNT(*) INTO @try_count FROM t0_template
42927 WHERE MOD(f_int1,3) = 0
42928 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
42929 SELECT COUNT(*) INTO @clash_count
42930 FROM t1 INNER JOIN t0_template USING(f_int1)
42931 WHERE MOD(f_int1,3) = 0
42932 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
42933 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
42935 SET f_int1 = @cur_value , f_int2 = @cur_value,
42936 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
42937 f_charbig = '#SINGLE#';
42939 # check single-1 success: 1
42940 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
42942 SET f_int1 = @cur_value , f_int2 = @cur_value,
42943 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
42944 f_charbig = '#SINGLE#';
42946 # check single-2 success: 1
42947 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
42948 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
42949 UPDATE t1 SET f_int1 = @cur_value2
42950 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
42952 # check single-3 success: 1
42953 SET @cur_value1= -1;
42954 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
42955 UPDATE t1 SET f_int1 = @cur_value1
42956 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
42958 # check single-4 success: 1
42959 SELECT MAX(f_int1) INTO @cur_value FROM t1;
42960 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
42962 # check single-5 success: 1
42963 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
42965 # check single-6 success: 1
42966 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
42968 Warning 1264 Out of range value for column 'f_int1' at row 1
42969 Warning 1264 Out of range value for column 'f_int2' at row 1
42971 # check single-7 success: 1
42972 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
42973 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
42974 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
42975 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
42976 f_charbig = '#NULL#';
42978 SET f_int1 = NULL , f_int2 = -@max_row,
42979 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
42980 f_charbig = '#NULL#';
42981 ERROR 23000: Column 'f_int1' cannot be null
42982 # check null success: 1
42984 WHERE f_int1 = 0 AND f_int2 = 0
42985 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
42986 AND f_charbig = '#NULL#';
42987 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
42988 SELECT f_int1, f_int1, '', '', 'was inserted'
42989 FROM t0_template source_tab
42990 WHERE MOD(f_int1,3) = 0
42991 AND f_int1 BETWEEN @max_row_div2 AND @max_row
42993 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
42994 f_int2 = 2 * @max_row + source_tab.f_int1,
42995 f_charbig = 'was updated';
42997 # check unique-1-a success: 1
42999 # check unique-1-b success: 1
43000 DELETE FROM t1 WHERE f_charbig = 'was inserted';
43001 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43002 f_int2 = CAST(f_char1 AS SIGNED INT),
43003 f_charbig = CONCAT('===',f_char1,'===')
43004 WHERE f_charbig = 'was updated';
43005 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43006 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
43007 FROM t0_template source_tab
43008 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
43010 # check replace success: 1
43012 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
43014 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
43015 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
43016 UPDATE t1 SET f_int2 = f_int1,
43017 f_char1 = CAST(f_int1 AS CHAR),
43018 f_char2 = CAST(f_int1 AS CHAR),
43019 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
43020 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
43022 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43023 SELECT f_int1, f_int1, '', '', 'was inserted'
43024 FROM t0_template source_tab
43025 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
43027 # check transactions-1 success: 1
43030 # check transactions-2 success: 1
43033 # check transactions-3 success: 1
43034 DELETE FROM t1 WHERE f_charbig = 'was inserted';
43038 # check transactions-4 success: 1
43039 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43040 SELECT f_int1, f_int1, '', '', 'was inserted'
43041 FROM t0_template source_tab
43042 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
43044 # check transactions-5 success: 1
43047 # check transactions-6 success: 1
43048 # INFO: Storage engine used for t1 seems to be transactional.
43051 # check transactions-7 success: 1
43052 DELETE FROM t1 WHERE f_charbig = 'was inserted';
43054 SET @@session.sql_mode = 'traditional';
43055 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
43056 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43057 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
43058 '', '', 'was inserted' FROM t0_template
43059 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
43060 ERROR 22012: Division by 0
43063 # check transactions-8 success: 1
43064 # INFO: Storage engine used for t1 seems to be able to revert
43065 # changes made by the failing statement.
43066 SET @@session.sql_mode = '';
43068 DELETE FROM t1 WHERE f_charbig = 'was inserted';
43070 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
43072 # check special-1 success: 1
43073 UPDATE t1 SET f_charbig = '';
43075 # check special-2 success: 1
43076 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
43077 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
43078 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
43079 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43080 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43081 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43082 'just inserted' FROM t0_template
43083 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43084 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
43086 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43087 f_charbig = 'updated by trigger'
43088 WHERE f_int1 = new.f_int1;
43090 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43091 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
43092 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43094 # check trigger-1 success: 1
43095 DROP TRIGGER trg_1;
43096 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43097 f_int2 = CAST(f_char1 AS SIGNED INT),
43098 f_charbig = 'just inserted'
43099 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43101 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43102 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43103 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43104 'just inserted' FROM t0_template
43105 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43106 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
43108 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43109 f_charbig = 'updated by trigger'
43110 WHERE f_int1 = new.f_int1;
43112 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43113 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
43114 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43116 # check trigger-2 success: 1
43117 DROP TRIGGER trg_1;
43118 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43119 f_int2 = CAST(f_char1 AS SIGNED INT),
43120 f_charbig = 'just inserted'
43121 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43123 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43124 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43125 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43126 'just inserted' FROM t0_template
43127 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43128 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
43130 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43131 f_charbig = 'updated by trigger'
43132 WHERE f_int1 = new.f_int1;
43134 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
43135 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43137 # check trigger-3 success: 1
43138 DROP TRIGGER trg_1;
43139 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43140 f_int2 = CAST(f_char1 AS SIGNED INT),
43141 f_charbig = 'just inserted'
43142 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43144 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43145 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43146 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43147 'just inserted' FROM t0_template
43148 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43149 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
43151 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43152 f_charbig = 'updated by trigger'
43153 WHERE f_int1 = - old.f_int1;
43155 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
43156 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43158 # check trigger-4 success: 1
43159 DROP TRIGGER trg_1;
43160 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43161 f_int2 = CAST(f_char1 AS SIGNED INT),
43162 f_charbig = 'just inserted'
43163 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43165 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43166 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43167 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43168 'just inserted' FROM t0_template
43169 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43170 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
43172 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43173 f_charbig = 'updated by trigger'
43174 WHERE f_int1 = new.f_int1;
43176 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
43177 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43179 # check trigger-5 success: 1
43180 DROP TRIGGER trg_1;
43181 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43182 f_int2 = CAST(f_char1 AS SIGNED INT),
43183 f_charbig = 'just inserted'
43184 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43186 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43187 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43188 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43189 'just inserted' FROM t0_template
43190 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43191 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
43193 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43194 f_charbig = 'updated by trigger'
43195 WHERE f_int1 = - old.f_int1;
43197 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
43198 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43200 # check trigger-6 success: 1
43201 DROP TRIGGER trg_1;
43202 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43203 f_int2 = CAST(f_char1 AS SIGNED INT),
43204 f_charbig = 'just inserted'
43205 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43207 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43208 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43209 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43210 'just inserted' FROM t0_template
43211 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43212 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
43214 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43215 f_charbig = 'updated by trigger'
43216 WHERE f_int1 = - old.f_int1;
43219 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43221 # check trigger-7 success: 1
43222 DROP TRIGGER trg_1;
43223 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43224 f_int2 = CAST(f_char1 AS SIGNED INT),
43225 f_charbig = 'just inserted'
43226 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43228 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43229 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43230 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43231 'just inserted' FROM t0_template
43232 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43233 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
43235 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43236 f_charbig = 'updated by trigger'
43237 WHERE f_int1 = - old.f_int1;
43240 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43242 # check trigger-8 success: 1
43243 DROP TRIGGER trg_1;
43244 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43245 f_int2 = CAST(f_char1 AS SIGNED INT),
43246 f_charbig = 'just inserted'
43247 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43249 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43251 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43252 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
43254 SET new.f_int1 = old.f_int1 + @max_row,
43255 new.f_int2 = old.f_int2 - @max_row,
43256 new.f_charbig = '####updated per update trigger####';
43259 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
43260 f_charbig = '####updated per update statement itself####';
43262 # check trigger-9 success: 1
43263 DROP TRIGGER trg_2;
43264 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43265 f_int2 = CAST(f_char1 AS SIGNED INT),
43266 f_charbig = CONCAT('===',f_char1,'===');
43267 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
43269 SET new.f_int1 = new.f_int1 + @max_row,
43270 new.f_int2 = new.f_int2 - @max_row,
43271 new.f_charbig = '####updated per update trigger####';
43274 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
43275 f_charbig = '####updated per update statement itself####';
43277 # check trigger-10 success: 1
43278 DROP TRIGGER trg_2;
43279 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43280 f_int2 = CAST(f_char1 AS SIGNED INT),
43281 f_charbig = CONCAT('===',f_char1,'===');
43282 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
43284 SET new.f_int1 = @my_max1 + @counter,
43285 new.f_int2 = @my_min2 - @counter,
43286 new.f_charbig = '####updated per insert trigger####';
43287 SET @counter = @counter + 1;
43290 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
43291 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43292 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
43293 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
43294 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
43296 DROP TRIGGER trg_3;
43298 # check trigger-11 success: 1
43300 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
43301 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
43302 AND f_charbig = '####updated per insert trigger####';
43303 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
43305 SET new.f_int1 = @my_max1 + @counter,
43306 new.f_int2 = @my_min2 - @counter,
43307 new.f_charbig = '####updated per insert trigger####';
43308 SET @counter = @counter + 1;
43311 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
43312 INSERT INTO t1 (f_char1, f_char2, f_charbig)
43313 SELECT CAST(f_int1 AS CHAR),
43314 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
43315 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
43317 DROP TRIGGER trg_3;
43319 # check trigger-12 success: 1
43321 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
43322 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
43323 AND f_charbig = '####updated per insert trigger####';
43325 Table Op Msg_type Msg_text
43326 test.t1 analyze status OK
43327 CHECK TABLE t1 EXTENDED;
43328 Table Op Msg_type Msg_text
43329 test.t1 check status OK
43330 CHECKSUM TABLE t1 EXTENDED;
43332 test.t1 <some_value>
43334 Table Op Msg_type Msg_text
43335 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
43336 test.t1 optimize status OK
43337 # check layout success: 1
43338 REPAIR TABLE t1 EXTENDED;
43339 Table Op Msg_type Msg_text
43340 test.t1 repair note The storage engine for the table doesn't support repair
43341 # check layout success: 1
43344 # check TRUNCATE success: 1
43345 # check layout success: 1
43346 # End usability test (inc/partition_check.inc)
43353 f_charbig VARCHAR(1000)
43354 , PRIMARY KEY (f_int2,f_int1)
43356 PARTITION BY LIST(ABS(MOD(f_int1,2)))
43357 SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
43358 (PARTITION part1 VALUES IN (0),
43359 PARTITION part2 VALUES IN (1),
43360 PARTITION part3 VALUES IN (NULL));
43361 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
43362 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
43363 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
43364 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
43365 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
43366 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
43367 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
43368 # Start usability test (inc/partition_check.inc)
43370 SHOW CREATE TABLE t1;
43372 t1 CREATE TABLE `t1` (
43373 `f_int1` mediumint(9) NOT NULL DEFAULT '0',
43374 `f_int2` mediumint(9) NOT NULL DEFAULT '0',
43375 `f_char1` char(20) DEFAULT NULL,
43376 `f_char2` char(20) DEFAULT NULL,
43377 `f_charbig` varchar(1000) DEFAULT NULL,
43378 PRIMARY KEY (`f_int2`,`f_int1`)
43379 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
43380 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
43381 SUBPARTITION BY KEY (f_int2)
43383 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
43384 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
43385 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
43387 # check prerequisites-1 success: 1
43388 # check COUNT(*) success: 1
43389 # check MIN/MAX(f_int1) success: 1
43390 # check MIN/MAX(f_int2) success: 1
43391 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43392 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
43393 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
43394 WHERE f_int1 IN (2,3);
43395 ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY'
43396 # check prerequisites-3 success: 1
43397 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
43398 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43399 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
43400 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
43401 WHERE f_int1 IN (2,3);
43402 DELETE FROM t1 WHERE f_charbig = 'delete me';
43403 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43404 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
43405 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
43406 WHERE f_int1 IN (2,3);
43407 DELETE FROM t1 WHERE f_charbig = 'delete me';
43408 # check read via f_int1 success: 1
43409 # check read via f_int2 success: 1
43411 # check multiple-1 success: 1
43412 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
43414 # check multiple-2 success: 1
43415 INSERT INTO t1 SELECT * FROM t0_template
43416 WHERE MOD(f_int1,3) = 0;
43418 # check multiple-3 success: 1
43419 UPDATE t1 SET f_int1 = f_int1 + @max_row
43420 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
43421 AND @max_row_div2 + @max_row_div4;
43423 # check multiple-4 success: 1
43425 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
43426 AND @max_row_div2 + @max_row_div4 + @max_row;
43428 # check multiple-5 success: 1
43429 SELECT COUNT(*) INTO @try_count FROM t0_template
43430 WHERE MOD(f_int1,3) = 0
43431 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
43432 SELECT COUNT(*) INTO @clash_count
43433 FROM t1 INNER JOIN t0_template USING(f_int1)
43434 WHERE MOD(f_int1,3) = 0
43435 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
43436 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
43438 SET f_int1 = @cur_value , f_int2 = @cur_value,
43439 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
43440 f_charbig = '#SINGLE#';
43442 # check single-1 success: 1
43443 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
43445 SET f_int1 = @cur_value , f_int2 = @cur_value,
43446 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
43447 f_charbig = '#SINGLE#';
43449 # check single-2 success: 1
43450 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
43451 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
43452 UPDATE t1 SET f_int1 = @cur_value2
43453 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
43455 # check single-3 success: 1
43456 SET @cur_value1= -1;
43457 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
43458 UPDATE t1 SET f_int1 = @cur_value1
43459 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
43461 # check single-4 success: 1
43462 SELECT MAX(f_int1) INTO @cur_value FROM t1;
43463 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
43465 # check single-5 success: 1
43466 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
43468 # check single-6 success: 1
43469 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
43471 Warning 1264 Out of range value for column 'f_int1' at row 1
43472 Warning 1264 Out of range value for column 'f_int2' at row 1
43474 # check single-7 success: 1
43475 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
43476 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
43477 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
43478 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
43479 f_charbig = '#NULL#';
43481 SET f_int1 = NULL , f_int2 = -@max_row,
43482 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
43483 f_charbig = '#NULL#';
43484 ERROR 23000: Column 'f_int1' cannot be null
43485 # check null success: 1
43487 WHERE f_int1 = 0 AND f_int2 = 0
43488 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
43489 AND f_charbig = '#NULL#';
43490 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43491 SELECT f_int1, f_int1, '', '', 'was inserted'
43492 FROM t0_template source_tab
43493 WHERE MOD(f_int1,3) = 0
43494 AND f_int1 BETWEEN @max_row_div2 AND @max_row
43496 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
43497 f_int2 = 2 * @max_row + source_tab.f_int1,
43498 f_charbig = 'was updated';
43500 # check unique-1-a success: 1
43502 # check unique-1-b success: 1
43503 DELETE FROM t1 WHERE f_charbig = 'was inserted';
43504 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43505 f_int2 = CAST(f_char1 AS SIGNED INT),
43506 f_charbig = CONCAT('===',f_char1,'===')
43507 WHERE f_charbig = 'was updated';
43508 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43509 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
43510 FROM t0_template source_tab
43511 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
43513 # check replace success: 1
43515 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
43517 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
43518 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
43519 UPDATE t1 SET f_int2 = f_int1,
43520 f_char1 = CAST(f_int1 AS CHAR),
43521 f_char2 = CAST(f_int1 AS CHAR),
43522 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
43523 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
43525 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43526 SELECT f_int1, f_int1, '', '', 'was inserted'
43527 FROM t0_template source_tab
43528 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
43530 # check transactions-1 success: 1
43533 # check transactions-2 success: 1
43536 # check transactions-3 success: 1
43537 DELETE FROM t1 WHERE f_charbig = 'was inserted';
43541 # check transactions-4 success: 1
43542 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43543 SELECT f_int1, f_int1, '', '', 'was inserted'
43544 FROM t0_template source_tab
43545 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
43547 # check transactions-5 success: 1
43550 # check transactions-6 success: 1
43551 # INFO: Storage engine used for t1 seems to be transactional.
43554 # check transactions-7 success: 1
43555 DELETE FROM t1 WHERE f_charbig = 'was inserted';
43557 SET @@session.sql_mode = 'traditional';
43558 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
43559 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43560 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
43561 '', '', 'was inserted' FROM t0_template
43562 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
43563 ERROR 22012: Division by 0
43566 # check transactions-8 success: 1
43567 # INFO: Storage engine used for t1 seems to be able to revert
43568 # changes made by the failing statement.
43569 SET @@session.sql_mode = '';
43571 DELETE FROM t1 WHERE f_charbig = 'was inserted';
43573 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
43575 # check special-1 success: 1
43576 UPDATE t1 SET f_charbig = '';
43578 # check special-2 success: 1
43579 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
43580 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
43581 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
43582 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43583 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43584 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43585 'just inserted' FROM t0_template
43586 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43587 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
43589 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43590 f_charbig = 'updated by trigger'
43591 WHERE f_int1 = new.f_int1;
43593 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43594 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
43595 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43597 # check trigger-1 success: 1
43598 DROP TRIGGER trg_1;
43599 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43600 f_int2 = CAST(f_char1 AS SIGNED INT),
43601 f_charbig = 'just inserted'
43602 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43604 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43605 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43606 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43607 'just inserted' FROM t0_template
43608 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43609 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
43611 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43612 f_charbig = 'updated by trigger'
43613 WHERE f_int1 = new.f_int1;
43615 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43616 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
43617 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43619 # check trigger-2 success: 1
43620 DROP TRIGGER trg_1;
43621 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43622 f_int2 = CAST(f_char1 AS SIGNED INT),
43623 f_charbig = 'just inserted'
43624 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43626 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43627 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43628 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43629 'just inserted' FROM t0_template
43630 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43631 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
43633 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43634 f_charbig = 'updated by trigger'
43635 WHERE f_int1 = new.f_int1;
43637 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
43638 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43640 # check trigger-3 success: 1
43641 DROP TRIGGER trg_1;
43642 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43643 f_int2 = CAST(f_char1 AS SIGNED INT),
43644 f_charbig = 'just inserted'
43645 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43647 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43648 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43649 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43650 'just inserted' FROM t0_template
43651 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43652 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
43654 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43655 f_charbig = 'updated by trigger'
43656 WHERE f_int1 = - old.f_int1;
43658 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
43659 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43661 # check trigger-4 success: 1
43662 DROP TRIGGER trg_1;
43663 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43664 f_int2 = CAST(f_char1 AS SIGNED INT),
43665 f_charbig = 'just inserted'
43666 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43668 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43669 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43670 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43671 'just inserted' FROM t0_template
43672 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43673 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
43675 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43676 f_charbig = 'updated by trigger'
43677 WHERE f_int1 = new.f_int1;
43679 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
43680 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43682 # check trigger-5 success: 1
43683 DROP TRIGGER trg_1;
43684 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43685 f_int2 = CAST(f_char1 AS SIGNED INT),
43686 f_charbig = 'just inserted'
43687 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43689 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43690 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43691 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43692 'just inserted' FROM t0_template
43693 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43694 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
43696 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43697 f_charbig = 'updated by trigger'
43698 WHERE f_int1 = - old.f_int1;
43700 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
43701 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43703 # check trigger-6 success: 1
43704 DROP TRIGGER trg_1;
43705 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43706 f_int2 = CAST(f_char1 AS SIGNED INT),
43707 f_charbig = 'just inserted'
43708 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43710 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43711 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43712 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43713 'just inserted' FROM t0_template
43714 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43715 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
43717 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43718 f_charbig = 'updated by trigger'
43719 WHERE f_int1 = - old.f_int1;
43722 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43724 # check trigger-7 success: 1
43725 DROP TRIGGER trg_1;
43726 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43727 f_int2 = CAST(f_char1 AS SIGNED INT),
43728 f_charbig = 'just inserted'
43729 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43731 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43732 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
43733 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
43734 'just inserted' FROM t0_template
43735 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43736 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
43738 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
43739 f_charbig = 'updated by trigger'
43740 WHERE f_int1 = - old.f_int1;
43743 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
43745 # check trigger-8 success: 1
43746 DROP TRIGGER trg_1;
43747 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43748 f_int2 = CAST(f_char1 AS SIGNED INT),
43749 f_charbig = 'just inserted'
43750 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
43752 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43754 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
43755 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
43757 SET new.f_int1 = old.f_int1 + @max_row,
43758 new.f_int2 = old.f_int2 - @max_row,
43759 new.f_charbig = '####updated per update trigger####';
43762 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
43763 f_charbig = '####updated per update statement itself####';
43765 # check trigger-9 success: 1
43766 DROP TRIGGER trg_2;
43767 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43768 f_int2 = CAST(f_char1 AS SIGNED INT),
43769 f_charbig = CONCAT('===',f_char1,'===');
43770 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
43772 SET new.f_int1 = new.f_int1 + @max_row,
43773 new.f_int2 = new.f_int2 - @max_row,
43774 new.f_charbig = '####updated per update trigger####';
43777 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
43778 f_charbig = '####updated per update statement itself####';
43780 # check trigger-10 success: 1
43781 DROP TRIGGER trg_2;
43782 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
43783 f_int2 = CAST(f_char1 AS SIGNED INT),
43784 f_charbig = CONCAT('===',f_char1,'===');
43785 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
43787 SET new.f_int1 = @my_max1 + @counter,
43788 new.f_int2 = @my_min2 - @counter,
43789 new.f_charbig = '####updated per insert trigger####';
43790 SET @counter = @counter + 1;
43793 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
43794 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43795 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
43796 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
43797 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
43799 DROP TRIGGER trg_3;
43801 # check trigger-11 success: 1
43803 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
43804 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
43805 AND f_charbig = '####updated per insert trigger####';
43806 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
43808 SET new.f_int1 = @my_max1 + @counter,
43809 new.f_int2 = @my_min2 - @counter,
43810 new.f_charbig = '####updated per insert trigger####';
43811 SET @counter = @counter + 1;
43814 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
43815 INSERT INTO t1 (f_char1, f_char2, f_charbig)
43816 SELECT CAST(f_int1 AS CHAR),
43817 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
43818 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
43820 DROP TRIGGER trg_3;
43822 # check trigger-12 success: 1
43824 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
43825 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
43826 AND f_charbig = '####updated per insert trigger####';
43828 Table Op Msg_type Msg_text
43829 test.t1 analyze status OK
43830 CHECK TABLE t1 EXTENDED;
43831 Table Op Msg_type Msg_text
43832 test.t1 check status OK
43833 CHECKSUM TABLE t1 EXTENDED;
43835 test.t1 <some_value>
43837 Table Op Msg_type Msg_text
43838 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
43839 test.t1 optimize status OK
43840 # check layout success: 1
43841 REPAIR TABLE t1 EXTENDED;
43842 Table Op Msg_type Msg_text
43843 test.t1 repair note The storage engine for the table doesn't support repair
43844 # check layout success: 1
43847 # check TRUNCATE success: 1
43848 # check layout success: 1
43849 # End usability test (inc/partition_check.inc)
43851 # 2.3.3 UNIQUE INDEX exists
43852 DROP TABLE IF EXISTS t1;
43858 f_charbig VARCHAR(1000)
43859 , UNIQUE INDEX uidx (f_int1,f_int2)
43861 PARTITION BY HASH(f_int1) PARTITIONS 2;
43862 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
43863 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
43864 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
43865 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
43866 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
43867 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
43868 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
43869 # Start usability test (inc/partition_check.inc)
43871 SHOW CREATE TABLE t1;
43873 t1 CREATE TABLE `t1` (
43874 `f_int1` mediumint(9) DEFAULT NULL,
43875 `f_int2` mediumint(9) DEFAULT NULL,
43876 `f_char1` char(20) DEFAULT NULL,
43877 `f_char2` char(20) DEFAULT NULL,
43878 `f_charbig` varchar(1000) DEFAULT NULL,
43879 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
43880 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
43881 /*!50100 PARTITION BY HASH (f_int1)
43884 # check prerequisites-1 success: 1
43885 # check COUNT(*) success: 1
43886 # check MIN/MAX(f_int1) success: 1
43887 # check MIN/MAX(f_int2) success: 1
43888 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43889 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
43890 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
43891 WHERE f_int1 IN (2,3);
43892 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
43893 # check prerequisites-3 success: 1
43894 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
43895 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43896 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
43897 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
43898 WHERE f_int1 IN (2,3);
43899 DELETE FROM t1 WHERE f_charbig = 'delete me';
43900 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
43901 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
43902 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
43903 WHERE f_int1 IN (2,3);
43904 DELETE FROM t1 WHERE f_charbig = 'delete me';
43905 # check read via f_int1 success: 1
43906 # check read via f_int2 success: 1
43908 # check multiple-1 success: 1
43909 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
43911 # check multiple-2 success: 1
43912 INSERT INTO t1 SELECT * FROM t0_template
43913 WHERE MOD(f_int1,3) = 0;
43915 # check multiple-3 success: 1
43916 UPDATE t1 SET f_int1 = f_int1 + @max_row
43917 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
43918 AND @max_row_div2 + @max_row_div4;
43920 # check multiple-4 success: 1
43922 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
43923 AND @max_row_div2 + @max_row_div4 + @max_row;
43925 # check multiple-5 success: 1
43926 SELECT COUNT(*) INTO @try_count FROM t0_template
43927 WHERE MOD(f_int1,3) = 0
43928 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
43929 SELECT COUNT(*) INTO @clash_count
43930 FROM t1 INNER JOIN t0_template USING(f_int1)
43931 WHERE MOD(f_int1,3) = 0
43932 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
43933 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
43935 SET f_int1 = @cur_value , f_int2 = @cur_value,
43936 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
43937 f_charbig = '#SINGLE#';
43939 # check single-1 success: 1
43940 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
43942 SET f_int1 = @cur_value , f_int2 = @cur_value,
43943 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
43944 f_charbig = '#SINGLE#';
43946 # check single-2 success: 1
43947 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
43948 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
43949 UPDATE t1 SET f_int1 = @cur_value2
43950 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
43952 # check single-3 success: 1
43953 SET @cur_value1= -1;
43954 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
43955 UPDATE t1 SET f_int1 = @cur_value1
43956 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
43958 # check single-4 success: 1
43959 SELECT MAX(f_int1) INTO @cur_value FROM t1;
43960 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
43962 # check single-5 success: 1
43963 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
43965 # check single-6 success: 1
43966 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
43968 Warning 1264 Out of range value for column 'f_int1' at row 1
43969 Warning 1264 Out of range value for column 'f_int2' at row 1
43971 # check single-7 success: 1
43972 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
43973 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
43974 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
43975 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
43976 f_charbig = '#NULL#';
43978 SET f_int1 = NULL , f_int2 = -@max_row,
43979 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
43980 f_charbig = '#NULL#';
43981 # check null success: 1
43983 # check null-1 success: 1
43984 UPDATE t1 SET f_int1 = -@max_row
43985 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
43986 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
43988 # check null-2 success: 1
43989 UPDATE t1 SET f_int1 = NULL
43990 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
43991 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
43993 # check null-3 success: 1
43995 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
43996 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
43998 # check null-4 success: 1
44000 WHERE f_int1 = 0 AND f_int2 = 0
44001 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
44002 AND f_charbig = '#NULL#';
44003 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44004 SELECT f_int1, f_int1, '', '', 'was inserted'
44005 FROM t0_template source_tab
44006 WHERE MOD(f_int1,3) = 0
44007 AND f_int1 BETWEEN @max_row_div2 AND @max_row
44009 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
44010 f_int2 = 2 * @max_row + source_tab.f_int1,
44011 f_charbig = 'was updated';
44013 # check unique-1-a success: 1
44015 # check unique-1-b success: 1
44016 DELETE FROM t1 WHERE f_charbig = 'was inserted';
44017 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44018 f_int2 = CAST(f_char1 AS SIGNED INT),
44019 f_charbig = CONCAT('===',f_char1,'===')
44020 WHERE f_charbig = 'was updated';
44021 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44022 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
44023 FROM t0_template source_tab
44024 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
44026 # check replace success: 1
44028 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
44030 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
44031 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
44032 UPDATE t1 SET f_int2 = f_int1,
44033 f_char1 = CAST(f_int1 AS CHAR),
44034 f_char2 = CAST(f_int1 AS CHAR),
44035 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
44036 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
44038 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44039 SELECT f_int1, f_int1, '', '', 'was inserted'
44040 FROM t0_template source_tab
44041 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
44043 # check transactions-1 success: 1
44046 # check transactions-2 success: 1
44049 # check transactions-3 success: 1
44050 DELETE FROM t1 WHERE f_charbig = 'was inserted';
44054 # check transactions-4 success: 1
44055 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44056 SELECT f_int1, f_int1, '', '', 'was inserted'
44057 FROM t0_template source_tab
44058 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
44060 # check transactions-5 success: 1
44063 # check transactions-6 success: 1
44064 # INFO: Storage engine used for t1 seems to be transactional.
44067 # check transactions-7 success: 1
44068 DELETE FROM t1 WHERE f_charbig = 'was inserted';
44070 SET @@session.sql_mode = 'traditional';
44071 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
44072 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44073 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
44074 '', '', 'was inserted' FROM t0_template
44075 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
44076 ERROR 22012: Division by 0
44079 # check transactions-8 success: 1
44080 # INFO: Storage engine used for t1 seems to be able to revert
44081 # changes made by the failing statement.
44082 SET @@session.sql_mode = '';
44084 DELETE FROM t1 WHERE f_charbig = 'was inserted';
44086 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
44088 # check special-1 success: 1
44089 UPDATE t1 SET f_charbig = '';
44091 # check special-2 success: 1
44092 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
44093 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
44094 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
44095 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44096 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44097 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44098 'just inserted' FROM t0_template
44099 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44100 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
44102 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44103 f_charbig = 'updated by trigger'
44104 WHERE f_int1 = new.f_int1;
44106 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44107 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
44108 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44110 # check trigger-1 success: 1
44111 DROP TRIGGER trg_1;
44112 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44113 f_int2 = CAST(f_char1 AS SIGNED INT),
44114 f_charbig = 'just inserted'
44115 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44117 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44118 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44119 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44120 'just inserted' FROM t0_template
44121 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44122 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
44124 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44125 f_charbig = 'updated by trigger'
44126 WHERE f_int1 = new.f_int1;
44128 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44129 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
44130 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44132 # check trigger-2 success: 1
44133 DROP TRIGGER trg_1;
44134 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44135 f_int2 = CAST(f_char1 AS SIGNED INT),
44136 f_charbig = 'just inserted'
44137 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44139 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44140 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44141 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44142 'just inserted' FROM t0_template
44143 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44144 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
44146 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44147 f_charbig = 'updated by trigger'
44148 WHERE f_int1 = new.f_int1;
44150 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
44151 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44153 # check trigger-3 success: 1
44154 DROP TRIGGER trg_1;
44155 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44156 f_int2 = CAST(f_char1 AS SIGNED INT),
44157 f_charbig = 'just inserted'
44158 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44160 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44161 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44162 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44163 'just inserted' FROM t0_template
44164 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44165 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
44167 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44168 f_charbig = 'updated by trigger'
44169 WHERE f_int1 = - old.f_int1;
44171 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
44172 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44174 # check trigger-4 success: 1
44175 DROP TRIGGER trg_1;
44176 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44177 f_int2 = CAST(f_char1 AS SIGNED INT),
44178 f_charbig = 'just inserted'
44179 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44181 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44182 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44183 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44184 'just inserted' FROM t0_template
44185 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44186 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
44188 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44189 f_charbig = 'updated by trigger'
44190 WHERE f_int1 = new.f_int1;
44192 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
44193 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44195 # check trigger-5 success: 1
44196 DROP TRIGGER trg_1;
44197 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44198 f_int2 = CAST(f_char1 AS SIGNED INT),
44199 f_charbig = 'just inserted'
44200 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44202 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44203 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44204 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44205 'just inserted' FROM t0_template
44206 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44207 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
44209 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44210 f_charbig = 'updated by trigger'
44211 WHERE f_int1 = - old.f_int1;
44213 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
44214 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44216 # check trigger-6 success: 1
44217 DROP TRIGGER trg_1;
44218 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44219 f_int2 = CAST(f_char1 AS SIGNED INT),
44220 f_charbig = 'just inserted'
44221 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44223 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44224 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44225 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44226 'just inserted' FROM t0_template
44227 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44228 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
44230 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44231 f_charbig = 'updated by trigger'
44232 WHERE f_int1 = - old.f_int1;
44235 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44237 # check trigger-7 success: 1
44238 DROP TRIGGER trg_1;
44239 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44240 f_int2 = CAST(f_char1 AS SIGNED INT),
44241 f_charbig = 'just inserted'
44242 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44244 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44245 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44246 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44247 'just inserted' FROM t0_template
44248 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44249 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
44251 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44252 f_charbig = 'updated by trigger'
44253 WHERE f_int1 = - old.f_int1;
44256 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44258 # check trigger-8 success: 1
44259 DROP TRIGGER trg_1;
44260 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44261 f_int2 = CAST(f_char1 AS SIGNED INT),
44262 f_charbig = 'just inserted'
44263 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44265 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44267 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44268 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
44270 SET new.f_int1 = old.f_int1 + @max_row,
44271 new.f_int2 = old.f_int2 - @max_row,
44272 new.f_charbig = '####updated per update trigger####';
44275 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
44276 f_charbig = '####updated per update statement itself####';
44278 # check trigger-9 success: 1
44279 DROP TRIGGER trg_2;
44280 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44281 f_int2 = CAST(f_char1 AS SIGNED INT),
44282 f_charbig = CONCAT('===',f_char1,'===');
44283 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
44285 SET new.f_int1 = new.f_int1 + @max_row,
44286 new.f_int2 = new.f_int2 - @max_row,
44287 new.f_charbig = '####updated per update trigger####';
44290 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
44291 f_charbig = '####updated per update statement itself####';
44293 # check trigger-10 success: 1
44294 DROP TRIGGER trg_2;
44295 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44296 f_int2 = CAST(f_char1 AS SIGNED INT),
44297 f_charbig = CONCAT('===',f_char1,'===');
44298 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
44300 SET new.f_int1 = @my_max1 + @counter,
44301 new.f_int2 = @my_min2 - @counter,
44302 new.f_charbig = '####updated per insert trigger####';
44303 SET @counter = @counter + 1;
44306 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
44307 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44308 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
44309 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
44310 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
44312 DROP TRIGGER trg_3;
44314 # check trigger-11 success: 1
44316 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
44317 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
44318 AND f_charbig = '####updated per insert trigger####';
44319 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
44321 SET new.f_int1 = @my_max1 + @counter,
44322 new.f_int2 = @my_min2 - @counter,
44323 new.f_charbig = '####updated per insert trigger####';
44324 SET @counter = @counter + 1;
44327 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
44328 INSERT INTO t1 (f_char1, f_char2, f_charbig)
44329 SELECT CAST(f_int1 AS CHAR),
44330 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
44331 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
44333 DROP TRIGGER trg_3;
44335 # check trigger-12 success: 1
44337 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
44338 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
44339 AND f_charbig = '####updated per insert trigger####';
44341 Table Op Msg_type Msg_text
44342 test.t1 analyze status OK
44343 CHECK TABLE t1 EXTENDED;
44344 Table Op Msg_type Msg_text
44345 test.t1 check status OK
44346 CHECKSUM TABLE t1 EXTENDED;
44348 test.t1 <some_value>
44350 Table Op Msg_type Msg_text
44351 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
44352 test.t1 optimize status OK
44353 # check layout success: 1
44354 REPAIR TABLE t1 EXTENDED;
44355 Table Op Msg_type Msg_text
44356 test.t1 repair note The storage engine for the table doesn't support repair
44357 # check layout success: 1
44360 # check TRUNCATE success: 1
44361 # check layout success: 1
44362 # End usability test (inc/partition_check.inc)
44369 f_charbig VARCHAR(1000)
44370 , UNIQUE INDEX uidx (f_int1,f_int2)
44372 PARTITION BY KEY(f_int1) PARTITIONS 5;
44373 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
44374 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
44375 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
44376 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
44377 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
44378 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
44379 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
44380 # Start usability test (inc/partition_check.inc)
44382 SHOW CREATE TABLE t1;
44384 t1 CREATE TABLE `t1` (
44385 `f_int1` mediumint(9) DEFAULT NULL,
44386 `f_int2` mediumint(9) DEFAULT NULL,
44387 `f_char1` char(20) DEFAULT NULL,
44388 `f_char2` char(20) DEFAULT NULL,
44389 `f_charbig` varchar(1000) DEFAULT NULL,
44390 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
44391 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
44392 /*!50100 PARTITION BY KEY (f_int1)
44395 # check prerequisites-1 success: 1
44396 # check COUNT(*) success: 1
44397 # check MIN/MAX(f_int1) success: 1
44398 # check MIN/MAX(f_int2) success: 1
44399 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44400 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
44401 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
44402 WHERE f_int1 IN (2,3);
44403 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
44404 # check prerequisites-3 success: 1
44405 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
44406 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44407 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
44408 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
44409 WHERE f_int1 IN (2,3);
44410 DELETE FROM t1 WHERE f_charbig = 'delete me';
44411 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44412 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
44413 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
44414 WHERE f_int1 IN (2,3);
44415 DELETE FROM t1 WHERE f_charbig = 'delete me';
44416 # check read via f_int1 success: 1
44417 # check read via f_int2 success: 1
44419 # check multiple-1 success: 1
44420 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
44422 # check multiple-2 success: 1
44423 INSERT INTO t1 SELECT * FROM t0_template
44424 WHERE MOD(f_int1,3) = 0;
44426 # check multiple-3 success: 1
44427 UPDATE t1 SET f_int1 = f_int1 + @max_row
44428 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
44429 AND @max_row_div2 + @max_row_div4;
44431 # check multiple-4 success: 1
44433 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
44434 AND @max_row_div2 + @max_row_div4 + @max_row;
44436 # check multiple-5 success: 1
44437 SELECT COUNT(*) INTO @try_count FROM t0_template
44438 WHERE MOD(f_int1,3) = 0
44439 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
44440 SELECT COUNT(*) INTO @clash_count
44441 FROM t1 INNER JOIN t0_template USING(f_int1)
44442 WHERE MOD(f_int1,3) = 0
44443 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
44444 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
44446 SET f_int1 = @cur_value , f_int2 = @cur_value,
44447 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
44448 f_charbig = '#SINGLE#';
44450 # check single-1 success: 1
44451 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
44453 SET f_int1 = @cur_value , f_int2 = @cur_value,
44454 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
44455 f_charbig = '#SINGLE#';
44457 # check single-2 success: 1
44458 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
44459 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
44460 UPDATE t1 SET f_int1 = @cur_value2
44461 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
44463 # check single-3 success: 1
44464 SET @cur_value1= -1;
44465 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
44466 UPDATE t1 SET f_int1 = @cur_value1
44467 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
44469 # check single-4 success: 1
44470 SELECT MAX(f_int1) INTO @cur_value FROM t1;
44471 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
44473 # check single-5 success: 1
44474 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
44476 # check single-6 success: 1
44477 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
44479 Warning 1264 Out of range value for column 'f_int1' at row 1
44480 Warning 1264 Out of range value for column 'f_int2' at row 1
44482 # check single-7 success: 1
44483 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
44484 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
44485 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
44486 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
44487 f_charbig = '#NULL#';
44489 SET f_int1 = NULL , f_int2 = -@max_row,
44490 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
44491 f_charbig = '#NULL#';
44492 # check null success: 1
44494 # check null-1 success: 1
44495 UPDATE t1 SET f_int1 = -@max_row
44496 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
44497 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
44499 # check null-2 success: 1
44500 UPDATE t1 SET f_int1 = NULL
44501 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
44502 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
44504 # check null-3 success: 1
44506 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
44507 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
44509 # check null-4 success: 1
44511 WHERE f_int1 = 0 AND f_int2 = 0
44512 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
44513 AND f_charbig = '#NULL#';
44514 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44515 SELECT f_int1, f_int1, '', '', 'was inserted'
44516 FROM t0_template source_tab
44517 WHERE MOD(f_int1,3) = 0
44518 AND f_int1 BETWEEN @max_row_div2 AND @max_row
44520 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
44521 f_int2 = 2 * @max_row + source_tab.f_int1,
44522 f_charbig = 'was updated';
44524 # check unique-1-a success: 1
44526 # check unique-1-b success: 1
44527 DELETE FROM t1 WHERE f_charbig = 'was inserted';
44528 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44529 f_int2 = CAST(f_char1 AS SIGNED INT),
44530 f_charbig = CONCAT('===',f_char1,'===')
44531 WHERE f_charbig = 'was updated';
44532 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44533 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
44534 FROM t0_template source_tab
44535 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
44537 # check replace success: 1
44539 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
44541 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
44542 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
44543 UPDATE t1 SET f_int2 = f_int1,
44544 f_char1 = CAST(f_int1 AS CHAR),
44545 f_char2 = CAST(f_int1 AS CHAR),
44546 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
44547 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
44549 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44550 SELECT f_int1, f_int1, '', '', 'was inserted'
44551 FROM t0_template source_tab
44552 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
44554 # check transactions-1 success: 1
44557 # check transactions-2 success: 1
44560 # check transactions-3 success: 1
44561 DELETE FROM t1 WHERE f_charbig = 'was inserted';
44565 # check transactions-4 success: 1
44566 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44567 SELECT f_int1, f_int1, '', '', 'was inserted'
44568 FROM t0_template source_tab
44569 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
44571 # check transactions-5 success: 1
44574 # check transactions-6 success: 1
44575 # INFO: Storage engine used for t1 seems to be transactional.
44578 # check transactions-7 success: 1
44579 DELETE FROM t1 WHERE f_charbig = 'was inserted';
44581 SET @@session.sql_mode = 'traditional';
44582 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
44583 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44584 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
44585 '', '', 'was inserted' FROM t0_template
44586 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
44587 ERROR 22012: Division by 0
44590 # check transactions-8 success: 1
44591 # INFO: Storage engine used for t1 seems to be able to revert
44592 # changes made by the failing statement.
44593 SET @@session.sql_mode = '';
44595 DELETE FROM t1 WHERE f_charbig = 'was inserted';
44597 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
44599 # check special-1 success: 1
44600 UPDATE t1 SET f_charbig = '';
44602 # check special-2 success: 1
44603 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
44604 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
44605 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
44606 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44607 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44608 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44609 'just inserted' FROM t0_template
44610 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44611 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
44613 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44614 f_charbig = 'updated by trigger'
44615 WHERE f_int1 = new.f_int1;
44617 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44618 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
44619 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44621 # check trigger-1 success: 1
44622 DROP TRIGGER trg_1;
44623 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44624 f_int2 = CAST(f_char1 AS SIGNED INT),
44625 f_charbig = 'just inserted'
44626 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44628 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44629 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44630 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44631 'just inserted' FROM t0_template
44632 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44633 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
44635 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44636 f_charbig = 'updated by trigger'
44637 WHERE f_int1 = new.f_int1;
44639 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44640 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
44641 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44643 # check trigger-2 success: 1
44644 DROP TRIGGER trg_1;
44645 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44646 f_int2 = CAST(f_char1 AS SIGNED INT),
44647 f_charbig = 'just inserted'
44648 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44650 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44651 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44652 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44653 'just inserted' FROM t0_template
44654 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44655 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
44657 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44658 f_charbig = 'updated by trigger'
44659 WHERE f_int1 = new.f_int1;
44661 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
44662 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44664 # check trigger-3 success: 1
44665 DROP TRIGGER trg_1;
44666 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44667 f_int2 = CAST(f_char1 AS SIGNED INT),
44668 f_charbig = 'just inserted'
44669 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44671 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44672 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44673 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44674 'just inserted' FROM t0_template
44675 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44676 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
44678 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44679 f_charbig = 'updated by trigger'
44680 WHERE f_int1 = - old.f_int1;
44682 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
44683 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44685 # check trigger-4 success: 1
44686 DROP TRIGGER trg_1;
44687 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44688 f_int2 = CAST(f_char1 AS SIGNED INT),
44689 f_charbig = 'just inserted'
44690 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44692 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44693 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44694 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44695 'just inserted' FROM t0_template
44696 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44697 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
44699 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44700 f_charbig = 'updated by trigger'
44701 WHERE f_int1 = new.f_int1;
44703 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
44704 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44706 # check trigger-5 success: 1
44707 DROP TRIGGER trg_1;
44708 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44709 f_int2 = CAST(f_char1 AS SIGNED INT),
44710 f_charbig = 'just inserted'
44711 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44713 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44714 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44715 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44716 'just inserted' FROM t0_template
44717 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44718 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
44720 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44721 f_charbig = 'updated by trigger'
44722 WHERE f_int1 = - old.f_int1;
44724 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
44725 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44727 # check trigger-6 success: 1
44728 DROP TRIGGER trg_1;
44729 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44730 f_int2 = CAST(f_char1 AS SIGNED INT),
44731 f_charbig = 'just inserted'
44732 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44734 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44735 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44736 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44737 'just inserted' FROM t0_template
44738 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44739 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
44741 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44742 f_charbig = 'updated by trigger'
44743 WHERE f_int1 = - old.f_int1;
44746 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44748 # check trigger-7 success: 1
44749 DROP TRIGGER trg_1;
44750 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44751 f_int2 = CAST(f_char1 AS SIGNED INT),
44752 f_charbig = 'just inserted'
44753 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44755 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44756 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
44757 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
44758 'just inserted' FROM t0_template
44759 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44760 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
44762 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
44763 f_charbig = 'updated by trigger'
44764 WHERE f_int1 = - old.f_int1;
44767 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
44769 # check trigger-8 success: 1
44770 DROP TRIGGER trg_1;
44771 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44772 f_int2 = CAST(f_char1 AS SIGNED INT),
44773 f_charbig = 'just inserted'
44774 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
44776 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44778 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
44779 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
44781 SET new.f_int1 = old.f_int1 + @max_row,
44782 new.f_int2 = old.f_int2 - @max_row,
44783 new.f_charbig = '####updated per update trigger####';
44786 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
44787 f_charbig = '####updated per update statement itself####';
44789 # check trigger-9 success: 1
44790 DROP TRIGGER trg_2;
44791 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44792 f_int2 = CAST(f_char1 AS SIGNED INT),
44793 f_charbig = CONCAT('===',f_char1,'===');
44794 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
44796 SET new.f_int1 = new.f_int1 + @max_row,
44797 new.f_int2 = new.f_int2 - @max_row,
44798 new.f_charbig = '####updated per update trigger####';
44801 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
44802 f_charbig = '####updated per update statement itself####';
44804 # check trigger-10 success: 1
44805 DROP TRIGGER trg_2;
44806 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
44807 f_int2 = CAST(f_char1 AS SIGNED INT),
44808 f_charbig = CONCAT('===',f_char1,'===');
44809 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
44811 SET new.f_int1 = @my_max1 + @counter,
44812 new.f_int2 = @my_min2 - @counter,
44813 new.f_charbig = '####updated per insert trigger####';
44814 SET @counter = @counter + 1;
44817 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
44818 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44819 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
44820 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
44821 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
44823 DROP TRIGGER trg_3;
44825 # check trigger-11 success: 1
44827 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
44828 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
44829 AND f_charbig = '####updated per insert trigger####';
44830 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
44832 SET new.f_int1 = @my_max1 + @counter,
44833 new.f_int2 = @my_min2 - @counter,
44834 new.f_charbig = '####updated per insert trigger####';
44835 SET @counter = @counter + 1;
44838 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
44839 INSERT INTO t1 (f_char1, f_char2, f_charbig)
44840 SELECT CAST(f_int1 AS CHAR),
44841 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
44842 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
44844 DROP TRIGGER trg_3;
44846 # check trigger-12 success: 1
44848 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
44849 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
44850 AND f_charbig = '####updated per insert trigger####';
44852 Table Op Msg_type Msg_text
44853 test.t1 analyze status OK
44854 CHECK TABLE t1 EXTENDED;
44855 Table Op Msg_type Msg_text
44856 test.t1 check status OK
44857 CHECKSUM TABLE t1 EXTENDED;
44859 test.t1 <some_value>
44861 Table Op Msg_type Msg_text
44862 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
44863 test.t1 optimize status OK
44864 # check layout success: 1
44865 REPAIR TABLE t1 EXTENDED;
44866 Table Op Msg_type Msg_text
44867 test.t1 repair note The storage engine for the table doesn't support repair
44868 # check layout success: 1
44871 # check TRUNCATE success: 1
44872 # check layout success: 1
44873 # End usability test (inc/partition_check.inc)
44880 f_charbig VARCHAR(1000)
44881 , UNIQUE INDEX uidx (f_int1,f_int2)
44883 PARTITION BY LIST(MOD(f_int1,4))
44884 (PARTITION part_3 VALUES IN (-3),
44885 PARTITION part_2 VALUES IN (-2),
44886 PARTITION part_1 VALUES IN (-1),
44887 PARTITION part_N VALUES IN (NULL),
44888 PARTITION part0 VALUES IN (0),
44889 PARTITION part1 VALUES IN (1),
44890 PARTITION part2 VALUES IN (2),
44891 PARTITION part3 VALUES IN (3));
44892 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
44893 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
44894 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
44895 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
44896 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
44897 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
44898 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
44899 # Start usability test (inc/partition_check.inc)
44901 SHOW CREATE TABLE t1;
44903 t1 CREATE TABLE `t1` (
44904 `f_int1` mediumint(9) DEFAULT NULL,
44905 `f_int2` mediumint(9) DEFAULT NULL,
44906 `f_char1` char(20) DEFAULT NULL,
44907 `f_char2` char(20) DEFAULT NULL,
44908 `f_charbig` varchar(1000) DEFAULT NULL,
44909 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
44910 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
44911 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
44912 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
44913 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
44914 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
44915 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
44916 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
44917 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
44918 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
44919 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
44921 # check prerequisites-1 success: 1
44922 # check COUNT(*) success: 1
44923 # check MIN/MAX(f_int1) success: 1
44924 # check MIN/MAX(f_int2) success: 1
44925 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44926 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
44927 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
44928 WHERE f_int1 IN (2,3);
44929 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
44930 # check prerequisites-3 success: 1
44931 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
44932 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44933 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
44934 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
44935 WHERE f_int1 IN (2,3);
44936 DELETE FROM t1 WHERE f_charbig = 'delete me';
44937 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
44938 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
44939 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
44940 WHERE f_int1 IN (2,3);
44941 DELETE FROM t1 WHERE f_charbig = 'delete me';
44942 # check read via f_int1 success: 1
44943 # check read via f_int2 success: 1
44945 # check multiple-1 success: 1
44946 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
44948 # check multiple-2 success: 1
44949 INSERT INTO t1 SELECT * FROM t0_template
44950 WHERE MOD(f_int1,3) = 0;
44952 # check multiple-3 success: 1
44953 UPDATE t1 SET f_int1 = f_int1 + @max_row
44954 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
44955 AND @max_row_div2 + @max_row_div4;
44957 # check multiple-4 success: 1
44959 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
44960 AND @max_row_div2 + @max_row_div4 + @max_row;
44962 # check multiple-5 success: 1
44963 SELECT COUNT(*) INTO @try_count FROM t0_template
44964 WHERE MOD(f_int1,3) = 0
44965 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
44966 SELECT COUNT(*) INTO @clash_count
44967 FROM t1 INNER JOIN t0_template USING(f_int1)
44968 WHERE MOD(f_int1,3) = 0
44969 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
44970 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
44972 SET f_int1 = @cur_value , f_int2 = @cur_value,
44973 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
44974 f_charbig = '#SINGLE#';
44976 # check single-1 success: 1
44977 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
44979 SET f_int1 = @cur_value , f_int2 = @cur_value,
44980 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
44981 f_charbig = '#SINGLE#';
44983 # check single-2 success: 1
44984 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
44985 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
44986 UPDATE t1 SET f_int1 = @cur_value2
44987 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
44989 # check single-3 success: 1
44990 SET @cur_value1= -1;
44991 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
44992 UPDATE t1 SET f_int1 = @cur_value1
44993 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
44995 # check single-4 success: 1
44996 SELECT MAX(f_int1) INTO @cur_value FROM t1;
44997 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
44999 # check single-5 success: 1
45000 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
45002 # check single-6 success: 1
45003 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
45005 Warning 1264 Out of range value for column 'f_int1' at row 1
45006 Warning 1264 Out of range value for column 'f_int2' at row 1
45008 # check single-7 success: 1
45009 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
45010 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
45011 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
45012 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
45013 f_charbig = '#NULL#';
45015 SET f_int1 = NULL , f_int2 = -@max_row,
45016 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
45017 f_charbig = '#NULL#';
45018 # check null success: 1
45020 # check null-1 success: 1
45021 UPDATE t1 SET f_int1 = -@max_row
45022 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
45023 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
45025 # check null-2 success: 1
45026 UPDATE t1 SET f_int1 = NULL
45027 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
45028 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
45030 # check null-3 success: 1
45032 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
45033 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
45035 # check null-4 success: 1
45037 WHERE f_int1 = 0 AND f_int2 = 0
45038 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
45039 AND f_charbig = '#NULL#';
45040 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45041 SELECT f_int1, f_int1, '', '', 'was inserted'
45042 FROM t0_template source_tab
45043 WHERE MOD(f_int1,3) = 0
45044 AND f_int1 BETWEEN @max_row_div2 AND @max_row
45046 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
45047 f_int2 = 2 * @max_row + source_tab.f_int1,
45048 f_charbig = 'was updated';
45050 # check unique-1-a success: 1
45052 # check unique-1-b success: 1
45053 DELETE FROM t1 WHERE f_charbig = 'was inserted';
45054 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45055 f_int2 = CAST(f_char1 AS SIGNED INT),
45056 f_charbig = CONCAT('===',f_char1,'===')
45057 WHERE f_charbig = 'was updated';
45058 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45059 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
45060 FROM t0_template source_tab
45061 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
45063 # check replace success: 1
45065 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
45067 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
45068 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
45069 UPDATE t1 SET f_int2 = f_int1,
45070 f_char1 = CAST(f_int1 AS CHAR),
45071 f_char2 = CAST(f_int1 AS CHAR),
45072 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
45073 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
45075 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45076 SELECT f_int1, f_int1, '', '', 'was inserted'
45077 FROM t0_template source_tab
45078 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
45080 # check transactions-1 success: 1
45083 # check transactions-2 success: 1
45086 # check transactions-3 success: 1
45087 DELETE FROM t1 WHERE f_charbig = 'was inserted';
45091 # check transactions-4 success: 1
45092 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45093 SELECT f_int1, f_int1, '', '', 'was inserted'
45094 FROM t0_template source_tab
45095 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
45097 # check transactions-5 success: 1
45100 # check transactions-6 success: 1
45101 # INFO: Storage engine used for t1 seems to be transactional.
45104 # check transactions-7 success: 1
45105 DELETE FROM t1 WHERE f_charbig = 'was inserted';
45107 SET @@session.sql_mode = 'traditional';
45108 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
45109 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45110 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
45111 '', '', 'was inserted' FROM t0_template
45112 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
45113 ERROR 22012: Division by 0
45116 # check transactions-8 success: 1
45117 # INFO: Storage engine used for t1 seems to be able to revert
45118 # changes made by the failing statement.
45119 SET @@session.sql_mode = '';
45121 DELETE FROM t1 WHERE f_charbig = 'was inserted';
45123 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
45125 # check special-1 success: 1
45126 UPDATE t1 SET f_charbig = '';
45128 # check special-2 success: 1
45129 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
45130 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
45131 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
45132 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45133 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45134 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45135 'just inserted' FROM t0_template
45136 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45137 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
45139 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45140 f_charbig = 'updated by trigger'
45141 WHERE f_int1 = new.f_int1;
45143 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45144 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
45145 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45147 # check trigger-1 success: 1
45148 DROP TRIGGER trg_1;
45149 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45150 f_int2 = CAST(f_char1 AS SIGNED INT),
45151 f_charbig = 'just inserted'
45152 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45154 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45155 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45156 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45157 'just inserted' FROM t0_template
45158 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45159 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
45161 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45162 f_charbig = 'updated by trigger'
45163 WHERE f_int1 = new.f_int1;
45165 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45166 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
45167 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45169 # check trigger-2 success: 1
45170 DROP TRIGGER trg_1;
45171 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45172 f_int2 = CAST(f_char1 AS SIGNED INT),
45173 f_charbig = 'just inserted'
45174 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45176 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45177 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45178 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45179 'just inserted' FROM t0_template
45180 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45181 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
45183 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45184 f_charbig = 'updated by trigger'
45185 WHERE f_int1 = new.f_int1;
45187 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
45188 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45190 # check trigger-3 success: 1
45191 DROP TRIGGER trg_1;
45192 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45193 f_int2 = CAST(f_char1 AS SIGNED INT),
45194 f_charbig = 'just inserted'
45195 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45197 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45198 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45199 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45200 'just inserted' FROM t0_template
45201 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45202 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
45204 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45205 f_charbig = 'updated by trigger'
45206 WHERE f_int1 = - old.f_int1;
45208 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
45209 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45211 # check trigger-4 success: 1
45212 DROP TRIGGER trg_1;
45213 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45214 f_int2 = CAST(f_char1 AS SIGNED INT),
45215 f_charbig = 'just inserted'
45216 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45218 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45219 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45220 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45221 'just inserted' FROM t0_template
45222 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45223 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
45225 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45226 f_charbig = 'updated by trigger'
45227 WHERE f_int1 = new.f_int1;
45229 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
45230 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45232 # check trigger-5 success: 1
45233 DROP TRIGGER trg_1;
45234 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45235 f_int2 = CAST(f_char1 AS SIGNED INT),
45236 f_charbig = 'just inserted'
45237 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45239 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45240 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45241 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45242 'just inserted' FROM t0_template
45243 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45244 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
45246 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45247 f_charbig = 'updated by trigger'
45248 WHERE f_int1 = - old.f_int1;
45250 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
45251 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45253 # check trigger-6 success: 1
45254 DROP TRIGGER trg_1;
45255 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45256 f_int2 = CAST(f_char1 AS SIGNED INT),
45257 f_charbig = 'just inserted'
45258 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45260 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45261 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45262 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45263 'just inserted' FROM t0_template
45264 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45265 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
45267 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45268 f_charbig = 'updated by trigger'
45269 WHERE f_int1 = - old.f_int1;
45272 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45274 # check trigger-7 success: 1
45275 DROP TRIGGER trg_1;
45276 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45277 f_int2 = CAST(f_char1 AS SIGNED INT),
45278 f_charbig = 'just inserted'
45279 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45281 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45282 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45283 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45284 'just inserted' FROM t0_template
45285 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45286 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
45288 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45289 f_charbig = 'updated by trigger'
45290 WHERE f_int1 = - old.f_int1;
45293 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45295 # check trigger-8 success: 1
45296 DROP TRIGGER trg_1;
45297 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45298 f_int2 = CAST(f_char1 AS SIGNED INT),
45299 f_charbig = 'just inserted'
45300 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45302 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45304 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45305 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
45307 SET new.f_int1 = old.f_int1 + @max_row,
45308 new.f_int2 = old.f_int2 - @max_row,
45309 new.f_charbig = '####updated per update trigger####';
45312 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
45313 f_charbig = '####updated per update statement itself####';
45315 # check trigger-9 success: 1
45316 DROP TRIGGER trg_2;
45317 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45318 f_int2 = CAST(f_char1 AS SIGNED INT),
45319 f_charbig = CONCAT('===',f_char1,'===');
45320 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
45322 SET new.f_int1 = new.f_int1 + @max_row,
45323 new.f_int2 = new.f_int2 - @max_row,
45324 new.f_charbig = '####updated per update trigger####';
45327 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
45328 f_charbig = '####updated per update statement itself####';
45330 # check trigger-10 success: 1
45331 DROP TRIGGER trg_2;
45332 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45333 f_int2 = CAST(f_char1 AS SIGNED INT),
45334 f_charbig = CONCAT('===',f_char1,'===');
45335 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
45337 SET new.f_int1 = @my_max1 + @counter,
45338 new.f_int2 = @my_min2 - @counter,
45339 new.f_charbig = '####updated per insert trigger####';
45340 SET @counter = @counter + 1;
45343 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
45344 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45345 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
45346 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
45347 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
45349 DROP TRIGGER trg_3;
45351 # check trigger-11 success: 1
45353 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
45354 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
45355 AND f_charbig = '####updated per insert trigger####';
45356 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
45358 SET new.f_int1 = @my_max1 + @counter,
45359 new.f_int2 = @my_min2 - @counter,
45360 new.f_charbig = '####updated per insert trigger####';
45361 SET @counter = @counter + 1;
45364 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
45365 INSERT INTO t1 (f_char1, f_char2, f_charbig)
45366 SELECT CAST(f_int1 AS CHAR),
45367 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
45368 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
45370 DROP TRIGGER trg_3;
45372 # check trigger-12 success: 1
45374 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
45375 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
45376 AND f_charbig = '####updated per insert trigger####';
45378 Table Op Msg_type Msg_text
45379 test.t1 analyze status OK
45380 CHECK TABLE t1 EXTENDED;
45381 Table Op Msg_type Msg_text
45382 test.t1 check status OK
45383 CHECKSUM TABLE t1 EXTENDED;
45385 test.t1 <some_value>
45387 Table Op Msg_type Msg_text
45388 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
45389 test.t1 optimize status OK
45390 # check layout success: 1
45391 REPAIR TABLE t1 EXTENDED;
45392 Table Op Msg_type Msg_text
45393 test.t1 repair note The storage engine for the table doesn't support repair
45394 # check layout success: 1
45397 # check TRUNCATE success: 1
45398 # check layout success: 1
45399 # End usability test (inc/partition_check.inc)
45406 f_charbig VARCHAR(1000)
45407 , UNIQUE INDEX uidx (f_int1,f_int2)
45409 PARTITION BY RANGE(f_int1)
45410 (PARTITION parta VALUES LESS THAN (0),
45411 PARTITION partb VALUES LESS THAN (5),
45412 PARTITION partc VALUES LESS THAN (10),
45413 PARTITION partd VALUES LESS THAN (10 + 5),
45414 PARTITION parte VALUES LESS THAN (20),
45415 PARTITION partf VALUES LESS THAN (2147483646));
45416 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
45417 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
45418 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
45419 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
45420 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
45421 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
45422 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
45423 # Start usability test (inc/partition_check.inc)
45425 SHOW CREATE TABLE t1;
45427 t1 CREATE TABLE `t1` (
45428 `f_int1` mediumint(9) DEFAULT NULL,
45429 `f_int2` mediumint(9) DEFAULT NULL,
45430 `f_char1` char(20) DEFAULT NULL,
45431 `f_char2` char(20) DEFAULT NULL,
45432 `f_charbig` varchar(1000) DEFAULT NULL,
45433 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
45434 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
45435 /*!50100 PARTITION BY RANGE (f_int1)
45436 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
45437 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
45438 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
45439 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
45440 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
45441 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
45443 # check prerequisites-1 success: 1
45444 # check COUNT(*) success: 1
45445 # check MIN/MAX(f_int1) success: 1
45446 # check MIN/MAX(f_int2) success: 1
45447 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45448 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
45449 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
45450 WHERE f_int1 IN (2,3);
45451 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
45452 # check prerequisites-3 success: 1
45453 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
45454 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45455 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
45456 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
45457 WHERE f_int1 IN (2,3);
45458 DELETE FROM t1 WHERE f_charbig = 'delete me';
45459 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45460 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
45461 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
45462 WHERE f_int1 IN (2,3);
45463 DELETE FROM t1 WHERE f_charbig = 'delete me';
45464 # check read via f_int1 success: 1
45465 # check read via f_int2 success: 1
45467 # check multiple-1 success: 1
45468 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
45470 # check multiple-2 success: 1
45471 INSERT INTO t1 SELECT * FROM t0_template
45472 WHERE MOD(f_int1,3) = 0;
45474 # check multiple-3 success: 1
45475 UPDATE t1 SET f_int1 = f_int1 + @max_row
45476 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
45477 AND @max_row_div2 + @max_row_div4;
45479 # check multiple-4 success: 1
45481 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
45482 AND @max_row_div2 + @max_row_div4 + @max_row;
45484 # check multiple-5 success: 1
45485 SELECT COUNT(*) INTO @try_count FROM t0_template
45486 WHERE MOD(f_int1,3) = 0
45487 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
45488 SELECT COUNT(*) INTO @clash_count
45489 FROM t1 INNER JOIN t0_template USING(f_int1)
45490 WHERE MOD(f_int1,3) = 0
45491 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
45492 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
45494 SET f_int1 = @cur_value , f_int2 = @cur_value,
45495 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
45496 f_charbig = '#SINGLE#';
45498 # check single-1 success: 1
45499 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
45501 SET f_int1 = @cur_value , f_int2 = @cur_value,
45502 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
45503 f_charbig = '#SINGLE#';
45505 # check single-2 success: 1
45506 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
45507 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
45508 UPDATE t1 SET f_int1 = @cur_value2
45509 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
45511 # check single-3 success: 1
45512 SET @cur_value1= -1;
45513 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
45514 UPDATE t1 SET f_int1 = @cur_value1
45515 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
45517 # check single-4 success: 1
45518 SELECT MAX(f_int1) INTO @cur_value FROM t1;
45519 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
45521 # check single-5 success: 1
45522 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
45524 # check single-6 success: 1
45525 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
45527 Warning 1264 Out of range value for column 'f_int1' at row 1
45528 Warning 1264 Out of range value for column 'f_int2' at row 1
45530 # check single-7 success: 1
45531 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
45532 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
45533 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
45534 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
45535 f_charbig = '#NULL#';
45537 SET f_int1 = NULL , f_int2 = -@max_row,
45538 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
45539 f_charbig = '#NULL#';
45540 # check null success: 1
45542 # check null-1 success: 1
45543 UPDATE t1 SET f_int1 = -@max_row
45544 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
45545 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
45547 # check null-2 success: 1
45548 UPDATE t1 SET f_int1 = NULL
45549 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
45550 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
45552 # check null-3 success: 1
45554 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
45555 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
45557 # check null-4 success: 1
45559 WHERE f_int1 = 0 AND f_int2 = 0
45560 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
45561 AND f_charbig = '#NULL#';
45562 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45563 SELECT f_int1, f_int1, '', '', 'was inserted'
45564 FROM t0_template source_tab
45565 WHERE MOD(f_int1,3) = 0
45566 AND f_int1 BETWEEN @max_row_div2 AND @max_row
45568 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
45569 f_int2 = 2 * @max_row + source_tab.f_int1,
45570 f_charbig = 'was updated';
45572 # check unique-1-a success: 1
45574 # check unique-1-b success: 1
45575 DELETE FROM t1 WHERE f_charbig = 'was inserted';
45576 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45577 f_int2 = CAST(f_char1 AS SIGNED INT),
45578 f_charbig = CONCAT('===',f_char1,'===')
45579 WHERE f_charbig = 'was updated';
45580 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45581 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
45582 FROM t0_template source_tab
45583 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
45585 # check replace success: 1
45587 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
45589 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
45590 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
45591 UPDATE t1 SET f_int2 = f_int1,
45592 f_char1 = CAST(f_int1 AS CHAR),
45593 f_char2 = CAST(f_int1 AS CHAR),
45594 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
45595 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
45597 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45598 SELECT f_int1, f_int1, '', '', 'was inserted'
45599 FROM t0_template source_tab
45600 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
45602 # check transactions-1 success: 1
45605 # check transactions-2 success: 1
45608 # check transactions-3 success: 1
45609 DELETE FROM t1 WHERE f_charbig = 'was inserted';
45613 # check transactions-4 success: 1
45614 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45615 SELECT f_int1, f_int1, '', '', 'was inserted'
45616 FROM t0_template source_tab
45617 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
45619 # check transactions-5 success: 1
45622 # check transactions-6 success: 1
45623 # INFO: Storage engine used for t1 seems to be transactional.
45626 # check transactions-7 success: 1
45627 DELETE FROM t1 WHERE f_charbig = 'was inserted';
45629 SET @@session.sql_mode = 'traditional';
45630 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
45631 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45632 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
45633 '', '', 'was inserted' FROM t0_template
45634 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
45635 ERROR 22012: Division by 0
45638 # check transactions-8 success: 1
45639 # INFO: Storage engine used for t1 seems to be able to revert
45640 # changes made by the failing statement.
45641 SET @@session.sql_mode = '';
45643 DELETE FROM t1 WHERE f_charbig = 'was inserted';
45645 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
45647 # check special-1 success: 1
45648 UPDATE t1 SET f_charbig = '';
45650 # check special-2 success: 1
45651 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
45652 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
45653 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
45654 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45655 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45656 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45657 'just inserted' FROM t0_template
45658 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45659 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
45661 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45662 f_charbig = 'updated by trigger'
45663 WHERE f_int1 = new.f_int1;
45665 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45666 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
45667 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45669 # check trigger-1 success: 1
45670 DROP TRIGGER trg_1;
45671 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45672 f_int2 = CAST(f_char1 AS SIGNED INT),
45673 f_charbig = 'just inserted'
45674 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45676 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45677 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45678 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45679 'just inserted' FROM t0_template
45680 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45681 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
45683 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45684 f_charbig = 'updated by trigger'
45685 WHERE f_int1 = new.f_int1;
45687 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45688 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
45689 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45691 # check trigger-2 success: 1
45692 DROP TRIGGER trg_1;
45693 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45694 f_int2 = CAST(f_char1 AS SIGNED INT),
45695 f_charbig = 'just inserted'
45696 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45698 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45699 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45700 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45701 'just inserted' FROM t0_template
45702 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45703 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
45705 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45706 f_charbig = 'updated by trigger'
45707 WHERE f_int1 = new.f_int1;
45709 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
45710 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45712 # check trigger-3 success: 1
45713 DROP TRIGGER trg_1;
45714 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45715 f_int2 = CAST(f_char1 AS SIGNED INT),
45716 f_charbig = 'just inserted'
45717 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45719 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45720 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45721 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45722 'just inserted' FROM t0_template
45723 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45724 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
45726 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45727 f_charbig = 'updated by trigger'
45728 WHERE f_int1 = - old.f_int1;
45730 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
45731 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45733 # check trigger-4 success: 1
45734 DROP TRIGGER trg_1;
45735 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45736 f_int2 = CAST(f_char1 AS SIGNED INT),
45737 f_charbig = 'just inserted'
45738 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45740 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45741 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45742 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45743 'just inserted' FROM t0_template
45744 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45745 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
45747 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45748 f_charbig = 'updated by trigger'
45749 WHERE f_int1 = new.f_int1;
45751 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
45752 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45754 # check trigger-5 success: 1
45755 DROP TRIGGER trg_1;
45756 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45757 f_int2 = CAST(f_char1 AS SIGNED INT),
45758 f_charbig = 'just inserted'
45759 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45761 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45762 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45763 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45764 'just inserted' FROM t0_template
45765 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45766 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
45768 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45769 f_charbig = 'updated by trigger'
45770 WHERE f_int1 = - old.f_int1;
45772 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
45773 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45775 # check trigger-6 success: 1
45776 DROP TRIGGER trg_1;
45777 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45778 f_int2 = CAST(f_char1 AS SIGNED INT),
45779 f_charbig = 'just inserted'
45780 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45782 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45783 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45784 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45785 'just inserted' FROM t0_template
45786 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45787 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
45789 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45790 f_charbig = 'updated by trigger'
45791 WHERE f_int1 = - old.f_int1;
45794 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45796 # check trigger-7 success: 1
45797 DROP TRIGGER trg_1;
45798 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45799 f_int2 = CAST(f_char1 AS SIGNED INT),
45800 f_charbig = 'just inserted'
45801 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45803 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45804 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
45805 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
45806 'just inserted' FROM t0_template
45807 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45808 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
45810 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
45811 f_charbig = 'updated by trigger'
45812 WHERE f_int1 = - old.f_int1;
45815 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
45817 # check trigger-8 success: 1
45818 DROP TRIGGER trg_1;
45819 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45820 f_int2 = CAST(f_char1 AS SIGNED INT),
45821 f_charbig = 'just inserted'
45822 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
45824 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45826 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
45827 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
45829 SET new.f_int1 = old.f_int1 + @max_row,
45830 new.f_int2 = old.f_int2 - @max_row,
45831 new.f_charbig = '####updated per update trigger####';
45834 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
45835 f_charbig = '####updated per update statement itself####';
45837 # check trigger-9 success: 1
45838 DROP TRIGGER trg_2;
45839 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45840 f_int2 = CAST(f_char1 AS SIGNED INT),
45841 f_charbig = CONCAT('===',f_char1,'===');
45842 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
45844 SET new.f_int1 = new.f_int1 + @max_row,
45845 new.f_int2 = new.f_int2 - @max_row,
45846 new.f_charbig = '####updated per update trigger####';
45849 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
45850 f_charbig = '####updated per update statement itself####';
45852 # check trigger-10 success: 1
45853 DROP TRIGGER trg_2;
45854 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
45855 f_int2 = CAST(f_char1 AS SIGNED INT),
45856 f_charbig = CONCAT('===',f_char1,'===');
45857 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
45859 SET new.f_int1 = @my_max1 + @counter,
45860 new.f_int2 = @my_min2 - @counter,
45861 new.f_charbig = '####updated per insert trigger####';
45862 SET @counter = @counter + 1;
45865 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
45866 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45867 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
45868 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
45869 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
45871 DROP TRIGGER trg_3;
45873 # check trigger-11 success: 1
45875 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
45876 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
45877 AND f_charbig = '####updated per insert trigger####';
45878 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
45880 SET new.f_int1 = @my_max1 + @counter,
45881 new.f_int2 = @my_min2 - @counter,
45882 new.f_charbig = '####updated per insert trigger####';
45883 SET @counter = @counter + 1;
45886 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
45887 INSERT INTO t1 (f_char1, f_char2, f_charbig)
45888 SELECT CAST(f_int1 AS CHAR),
45889 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
45890 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
45892 DROP TRIGGER trg_3;
45894 # check trigger-12 success: 1
45896 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
45897 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
45898 AND f_charbig = '####updated per insert trigger####';
45900 Table Op Msg_type Msg_text
45901 test.t1 analyze status OK
45902 CHECK TABLE t1 EXTENDED;
45903 Table Op Msg_type Msg_text
45904 test.t1 check status OK
45905 CHECKSUM TABLE t1 EXTENDED;
45907 test.t1 <some_value>
45909 Table Op Msg_type Msg_text
45910 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
45911 test.t1 optimize status OK
45912 # check layout success: 1
45913 REPAIR TABLE t1 EXTENDED;
45914 Table Op Msg_type Msg_text
45915 test.t1 repair note The storage engine for the table doesn't support repair
45916 # check layout success: 1
45919 # check TRUNCATE success: 1
45920 # check layout success: 1
45921 # End usability test (inc/partition_check.inc)
45928 f_charbig VARCHAR(1000)
45929 , UNIQUE INDEX uidx (f_int1,f_int2)
45931 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
45932 (PARTITION parta VALUES LESS THAN (0),
45933 PARTITION partb VALUES LESS THAN (5),
45934 PARTITION partc VALUES LESS THAN (10),
45935 PARTITION partd VALUES LESS THAN (2147483646));
45936 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
45937 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
45938 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
45939 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
45940 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
45941 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
45942 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
45943 # Start usability test (inc/partition_check.inc)
45945 SHOW CREATE TABLE t1;
45947 t1 CREATE TABLE `t1` (
45948 `f_int1` mediumint(9) DEFAULT NULL,
45949 `f_int2` mediumint(9) DEFAULT NULL,
45950 `f_char1` char(20) DEFAULT NULL,
45951 `f_char2` char(20) DEFAULT NULL,
45952 `f_charbig` varchar(1000) DEFAULT NULL,
45953 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
45954 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
45955 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
45956 SUBPARTITION BY HASH (f_int1)
45958 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
45959 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
45960 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
45961 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
45963 # check prerequisites-1 success: 1
45964 # check COUNT(*) success: 1
45965 # check MIN/MAX(f_int1) success: 1
45966 # check MIN/MAX(f_int2) success: 1
45967 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45968 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
45969 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
45970 WHERE f_int1 IN (2,3);
45971 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
45972 # check prerequisites-3 success: 1
45973 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
45974 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45975 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
45976 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
45977 WHERE f_int1 IN (2,3);
45978 DELETE FROM t1 WHERE f_charbig = 'delete me';
45979 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
45980 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
45981 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
45982 WHERE f_int1 IN (2,3);
45983 DELETE FROM t1 WHERE f_charbig = 'delete me';
45984 # check read via f_int1 success: 1
45985 # check read via f_int2 success: 1
45987 # check multiple-1 success: 1
45988 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
45990 # check multiple-2 success: 1
45991 INSERT INTO t1 SELECT * FROM t0_template
45992 WHERE MOD(f_int1,3) = 0;
45994 # check multiple-3 success: 1
45995 UPDATE t1 SET f_int1 = f_int1 + @max_row
45996 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
45997 AND @max_row_div2 + @max_row_div4;
45999 # check multiple-4 success: 1
46001 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
46002 AND @max_row_div2 + @max_row_div4 + @max_row;
46004 # check multiple-5 success: 1
46005 SELECT COUNT(*) INTO @try_count FROM t0_template
46006 WHERE MOD(f_int1,3) = 0
46007 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
46008 SELECT COUNT(*) INTO @clash_count
46009 FROM t1 INNER JOIN t0_template USING(f_int1)
46010 WHERE MOD(f_int1,3) = 0
46011 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
46012 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
46014 SET f_int1 = @cur_value , f_int2 = @cur_value,
46015 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
46016 f_charbig = '#SINGLE#';
46018 # check single-1 success: 1
46019 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
46021 SET f_int1 = @cur_value , f_int2 = @cur_value,
46022 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
46023 f_charbig = '#SINGLE#';
46025 # check single-2 success: 1
46026 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
46027 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
46028 UPDATE t1 SET f_int1 = @cur_value2
46029 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
46031 # check single-3 success: 1
46032 SET @cur_value1= -1;
46033 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
46034 UPDATE t1 SET f_int1 = @cur_value1
46035 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
46037 # check single-4 success: 1
46038 SELECT MAX(f_int1) INTO @cur_value FROM t1;
46039 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
46041 # check single-5 success: 1
46042 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
46044 # check single-6 success: 1
46045 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
46047 Warning 1264 Out of range value for column 'f_int1' at row 1
46048 Warning 1264 Out of range value for column 'f_int2' at row 1
46050 # check single-7 success: 1
46051 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
46052 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
46053 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
46054 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
46055 f_charbig = '#NULL#';
46057 SET f_int1 = NULL , f_int2 = -@max_row,
46058 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
46059 f_charbig = '#NULL#';
46060 # check null success: 1
46062 # check null-1 success: 1
46063 UPDATE t1 SET f_int1 = -@max_row
46064 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
46065 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
46067 # check null-2 success: 1
46068 UPDATE t1 SET f_int1 = NULL
46069 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
46070 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
46072 # check null-3 success: 1
46074 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
46075 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
46077 # check null-4 success: 1
46079 WHERE f_int1 = 0 AND f_int2 = 0
46080 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
46081 AND f_charbig = '#NULL#';
46082 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46083 SELECT f_int1, f_int1, '', '', 'was inserted'
46084 FROM t0_template source_tab
46085 WHERE MOD(f_int1,3) = 0
46086 AND f_int1 BETWEEN @max_row_div2 AND @max_row
46088 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
46089 f_int2 = 2 * @max_row + source_tab.f_int1,
46090 f_charbig = 'was updated';
46092 # check unique-1-a success: 1
46094 # check unique-1-b success: 1
46095 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46096 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46097 f_int2 = CAST(f_char1 AS SIGNED INT),
46098 f_charbig = CONCAT('===',f_char1,'===')
46099 WHERE f_charbig = 'was updated';
46100 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46101 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
46102 FROM t0_template source_tab
46103 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
46105 # check replace success: 1
46107 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
46109 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
46110 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
46111 UPDATE t1 SET f_int2 = f_int1,
46112 f_char1 = CAST(f_int1 AS CHAR),
46113 f_char2 = CAST(f_int1 AS CHAR),
46114 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
46115 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
46117 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46118 SELECT f_int1, f_int1, '', '', 'was inserted'
46119 FROM t0_template source_tab
46120 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
46122 # check transactions-1 success: 1
46125 # check transactions-2 success: 1
46128 # check transactions-3 success: 1
46129 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46133 # check transactions-4 success: 1
46134 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46135 SELECT f_int1, f_int1, '', '', 'was inserted'
46136 FROM t0_template source_tab
46137 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
46139 # check transactions-5 success: 1
46142 # check transactions-6 success: 1
46143 # INFO: Storage engine used for t1 seems to be transactional.
46146 # check transactions-7 success: 1
46147 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46149 SET @@session.sql_mode = 'traditional';
46150 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
46151 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46152 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
46153 '', '', 'was inserted' FROM t0_template
46154 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
46155 ERROR 22012: Division by 0
46158 # check transactions-8 success: 1
46159 # INFO: Storage engine used for t1 seems to be able to revert
46160 # changes made by the failing statement.
46161 SET @@session.sql_mode = '';
46163 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46165 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
46167 # check special-1 success: 1
46168 UPDATE t1 SET f_charbig = '';
46170 # check special-2 success: 1
46171 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
46172 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
46173 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
46174 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46175 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46176 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46177 'just inserted' FROM t0_template
46178 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46179 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
46181 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46182 f_charbig = 'updated by trigger'
46183 WHERE f_int1 = new.f_int1;
46185 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46186 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
46187 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46189 # check trigger-1 success: 1
46190 DROP TRIGGER trg_1;
46191 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46192 f_int2 = CAST(f_char1 AS SIGNED INT),
46193 f_charbig = 'just inserted'
46194 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46196 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46197 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46198 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46199 'just inserted' FROM t0_template
46200 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46201 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
46203 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46204 f_charbig = 'updated by trigger'
46205 WHERE f_int1 = new.f_int1;
46207 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46208 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
46209 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46211 # check trigger-2 success: 1
46212 DROP TRIGGER trg_1;
46213 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46214 f_int2 = CAST(f_char1 AS SIGNED INT),
46215 f_charbig = 'just inserted'
46216 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46218 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46219 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46220 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46221 'just inserted' FROM t0_template
46222 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46223 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
46225 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46226 f_charbig = 'updated by trigger'
46227 WHERE f_int1 = new.f_int1;
46229 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
46230 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46232 # check trigger-3 success: 1
46233 DROP TRIGGER trg_1;
46234 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46235 f_int2 = CAST(f_char1 AS SIGNED INT),
46236 f_charbig = 'just inserted'
46237 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46239 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46240 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46241 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46242 'just inserted' FROM t0_template
46243 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46244 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
46246 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46247 f_charbig = 'updated by trigger'
46248 WHERE f_int1 = - old.f_int1;
46250 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
46251 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46253 # check trigger-4 success: 1
46254 DROP TRIGGER trg_1;
46255 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46256 f_int2 = CAST(f_char1 AS SIGNED INT),
46257 f_charbig = 'just inserted'
46258 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46260 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46261 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46262 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46263 'just inserted' FROM t0_template
46264 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46265 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
46267 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46268 f_charbig = 'updated by trigger'
46269 WHERE f_int1 = new.f_int1;
46271 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
46272 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46274 # check trigger-5 success: 1
46275 DROP TRIGGER trg_1;
46276 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46277 f_int2 = CAST(f_char1 AS SIGNED INT),
46278 f_charbig = 'just inserted'
46279 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46281 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46282 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46283 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46284 'just inserted' FROM t0_template
46285 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46286 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
46288 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46289 f_charbig = 'updated by trigger'
46290 WHERE f_int1 = - old.f_int1;
46292 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
46293 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46295 # check trigger-6 success: 1
46296 DROP TRIGGER trg_1;
46297 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46298 f_int2 = CAST(f_char1 AS SIGNED INT),
46299 f_charbig = 'just inserted'
46300 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46302 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46303 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46304 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46305 'just inserted' FROM t0_template
46306 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46307 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
46309 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46310 f_charbig = 'updated by trigger'
46311 WHERE f_int1 = - old.f_int1;
46314 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46316 # check trigger-7 success: 1
46317 DROP TRIGGER trg_1;
46318 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46319 f_int2 = CAST(f_char1 AS SIGNED INT),
46320 f_charbig = 'just inserted'
46321 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46323 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46324 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46325 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46326 'just inserted' FROM t0_template
46327 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46328 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
46330 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46331 f_charbig = 'updated by trigger'
46332 WHERE f_int1 = - old.f_int1;
46335 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46337 # check trigger-8 success: 1
46338 DROP TRIGGER trg_1;
46339 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46340 f_int2 = CAST(f_char1 AS SIGNED INT),
46341 f_charbig = 'just inserted'
46342 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46344 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46346 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46347 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
46349 SET new.f_int1 = old.f_int1 + @max_row,
46350 new.f_int2 = old.f_int2 - @max_row,
46351 new.f_charbig = '####updated per update trigger####';
46354 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
46355 f_charbig = '####updated per update statement itself####';
46357 # check trigger-9 success: 1
46358 DROP TRIGGER trg_2;
46359 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46360 f_int2 = CAST(f_char1 AS SIGNED INT),
46361 f_charbig = CONCAT('===',f_char1,'===');
46362 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
46364 SET new.f_int1 = new.f_int1 + @max_row,
46365 new.f_int2 = new.f_int2 - @max_row,
46366 new.f_charbig = '####updated per update trigger####';
46369 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
46370 f_charbig = '####updated per update statement itself####';
46372 # check trigger-10 success: 1
46373 DROP TRIGGER trg_2;
46374 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46375 f_int2 = CAST(f_char1 AS SIGNED INT),
46376 f_charbig = CONCAT('===',f_char1,'===');
46377 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
46379 SET new.f_int1 = @my_max1 + @counter,
46380 new.f_int2 = @my_min2 - @counter,
46381 new.f_charbig = '####updated per insert trigger####';
46382 SET @counter = @counter + 1;
46385 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
46386 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46387 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
46388 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
46389 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
46391 DROP TRIGGER trg_3;
46393 # check trigger-11 success: 1
46395 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
46396 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
46397 AND f_charbig = '####updated per insert trigger####';
46398 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
46400 SET new.f_int1 = @my_max1 + @counter,
46401 new.f_int2 = @my_min2 - @counter,
46402 new.f_charbig = '####updated per insert trigger####';
46403 SET @counter = @counter + 1;
46406 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
46407 INSERT INTO t1 (f_char1, f_char2, f_charbig)
46408 SELECT CAST(f_int1 AS CHAR),
46409 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
46410 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
46412 DROP TRIGGER trg_3;
46414 # check trigger-12 success: 1
46416 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
46417 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
46418 AND f_charbig = '####updated per insert trigger####';
46420 Table Op Msg_type Msg_text
46421 test.t1 analyze status OK
46422 CHECK TABLE t1 EXTENDED;
46423 Table Op Msg_type Msg_text
46424 test.t1 check status OK
46425 CHECKSUM TABLE t1 EXTENDED;
46427 test.t1 <some_value>
46429 Table Op Msg_type Msg_text
46430 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
46431 test.t1 optimize status OK
46432 # check layout success: 1
46433 REPAIR TABLE t1 EXTENDED;
46434 Table Op Msg_type Msg_text
46435 test.t1 repair note The storage engine for the table doesn't support repair
46436 # check layout success: 1
46439 # check TRUNCATE success: 1
46440 # check layout success: 1
46441 # End usability test (inc/partition_check.inc)
46448 f_charbig VARCHAR(1000)
46449 , UNIQUE INDEX uidx (f_int1,f_int2)
46451 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
46452 (PARTITION part1 VALUES LESS THAN (0)
46453 (SUBPARTITION subpart11, SUBPARTITION subpart12),
46454 PARTITION part2 VALUES LESS THAN (5)
46455 (SUBPARTITION subpart21, SUBPARTITION subpart22),
46456 PARTITION part3 VALUES LESS THAN (10)
46457 (SUBPARTITION subpart31, SUBPARTITION subpart32),
46458 PARTITION part4 VALUES LESS THAN (2147483646)
46459 (SUBPARTITION subpart41, SUBPARTITION subpart42));
46460 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
46461 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
46462 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
46463 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
46464 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
46465 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
46466 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
46467 # Start usability test (inc/partition_check.inc)
46469 SHOW CREATE TABLE t1;
46471 t1 CREATE TABLE `t1` (
46472 `f_int1` mediumint(9) DEFAULT NULL,
46473 `f_int2` mediumint(9) DEFAULT NULL,
46474 `f_char1` char(20) DEFAULT NULL,
46475 `f_char2` char(20) DEFAULT NULL,
46476 `f_charbig` varchar(1000) DEFAULT NULL,
46477 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
46478 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
46479 /*!50100 PARTITION BY RANGE (f_int1)
46480 SUBPARTITION BY KEY (f_int1)
46481 (PARTITION part1 VALUES LESS THAN (0)
46482 (SUBPARTITION subpart11 ENGINE = InnoDB,
46483 SUBPARTITION subpart12 ENGINE = InnoDB),
46484 PARTITION part2 VALUES LESS THAN (5)
46485 (SUBPARTITION subpart21 ENGINE = InnoDB,
46486 SUBPARTITION subpart22 ENGINE = InnoDB),
46487 PARTITION part3 VALUES LESS THAN (10)
46488 (SUBPARTITION subpart31 ENGINE = InnoDB,
46489 SUBPARTITION subpart32 ENGINE = InnoDB),
46490 PARTITION part4 VALUES LESS THAN (2147483646)
46491 (SUBPARTITION subpart41 ENGINE = InnoDB,
46492 SUBPARTITION subpart42 ENGINE = InnoDB)) */
46494 # check prerequisites-1 success: 1
46495 # check COUNT(*) success: 1
46496 # check MIN/MAX(f_int1) success: 1
46497 # check MIN/MAX(f_int2) success: 1
46498 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46499 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
46500 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
46501 WHERE f_int1 IN (2,3);
46502 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
46503 # check prerequisites-3 success: 1
46504 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
46505 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46506 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
46507 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
46508 WHERE f_int1 IN (2,3);
46509 DELETE FROM t1 WHERE f_charbig = 'delete me';
46510 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46511 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
46512 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
46513 WHERE f_int1 IN (2,3);
46514 DELETE FROM t1 WHERE f_charbig = 'delete me';
46515 # check read via f_int1 success: 1
46516 # check read via f_int2 success: 1
46518 # check multiple-1 success: 1
46519 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
46521 # check multiple-2 success: 1
46522 INSERT INTO t1 SELECT * FROM t0_template
46523 WHERE MOD(f_int1,3) = 0;
46525 # check multiple-3 success: 1
46526 UPDATE t1 SET f_int1 = f_int1 + @max_row
46527 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
46528 AND @max_row_div2 + @max_row_div4;
46530 # check multiple-4 success: 1
46532 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
46533 AND @max_row_div2 + @max_row_div4 + @max_row;
46535 # check multiple-5 success: 1
46536 SELECT COUNT(*) INTO @try_count FROM t0_template
46537 WHERE MOD(f_int1,3) = 0
46538 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
46539 SELECT COUNT(*) INTO @clash_count
46540 FROM t1 INNER JOIN t0_template USING(f_int1)
46541 WHERE MOD(f_int1,3) = 0
46542 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
46543 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
46545 SET f_int1 = @cur_value , f_int2 = @cur_value,
46546 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
46547 f_charbig = '#SINGLE#';
46549 # check single-1 success: 1
46550 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
46552 SET f_int1 = @cur_value , f_int2 = @cur_value,
46553 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
46554 f_charbig = '#SINGLE#';
46556 # check single-2 success: 1
46557 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
46558 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
46559 UPDATE t1 SET f_int1 = @cur_value2
46560 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
46562 # check single-3 success: 1
46563 SET @cur_value1= -1;
46564 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
46565 UPDATE t1 SET f_int1 = @cur_value1
46566 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
46568 # check single-4 success: 1
46569 SELECT MAX(f_int1) INTO @cur_value FROM t1;
46570 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
46572 # check single-5 success: 1
46573 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
46575 # check single-6 success: 1
46576 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
46578 Warning 1264 Out of range value for column 'f_int1' at row 1
46579 Warning 1264 Out of range value for column 'f_int2' at row 1
46581 # check single-7 success: 1
46582 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
46583 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
46584 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
46585 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
46586 f_charbig = '#NULL#';
46588 SET f_int1 = NULL , f_int2 = -@max_row,
46589 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
46590 f_charbig = '#NULL#';
46591 # check null success: 1
46593 # check null-1 success: 1
46594 UPDATE t1 SET f_int1 = -@max_row
46595 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
46596 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
46598 # check null-2 success: 1
46599 UPDATE t1 SET f_int1 = NULL
46600 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
46601 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
46603 # check null-3 success: 1
46605 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
46606 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
46608 # check null-4 success: 1
46610 WHERE f_int1 = 0 AND f_int2 = 0
46611 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
46612 AND f_charbig = '#NULL#';
46613 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46614 SELECT f_int1, f_int1, '', '', 'was inserted'
46615 FROM t0_template source_tab
46616 WHERE MOD(f_int1,3) = 0
46617 AND f_int1 BETWEEN @max_row_div2 AND @max_row
46619 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
46620 f_int2 = 2 * @max_row + source_tab.f_int1,
46621 f_charbig = 'was updated';
46623 # check unique-1-a success: 1
46625 # check unique-1-b success: 1
46626 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46627 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46628 f_int2 = CAST(f_char1 AS SIGNED INT),
46629 f_charbig = CONCAT('===',f_char1,'===')
46630 WHERE f_charbig = 'was updated';
46631 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46632 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
46633 FROM t0_template source_tab
46634 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
46636 # check replace success: 1
46638 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
46640 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
46641 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
46642 UPDATE t1 SET f_int2 = f_int1,
46643 f_char1 = CAST(f_int1 AS CHAR),
46644 f_char2 = CAST(f_int1 AS CHAR),
46645 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
46646 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
46648 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46649 SELECT f_int1, f_int1, '', '', 'was inserted'
46650 FROM t0_template source_tab
46651 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
46653 # check transactions-1 success: 1
46656 # check transactions-2 success: 1
46659 # check transactions-3 success: 1
46660 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46664 # check transactions-4 success: 1
46665 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46666 SELECT f_int1, f_int1, '', '', 'was inserted'
46667 FROM t0_template source_tab
46668 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
46670 # check transactions-5 success: 1
46673 # check transactions-6 success: 1
46674 # INFO: Storage engine used for t1 seems to be transactional.
46677 # check transactions-7 success: 1
46678 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46680 SET @@session.sql_mode = 'traditional';
46681 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
46682 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46683 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
46684 '', '', 'was inserted' FROM t0_template
46685 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
46686 ERROR 22012: Division by 0
46689 # check transactions-8 success: 1
46690 # INFO: Storage engine used for t1 seems to be able to revert
46691 # changes made by the failing statement.
46692 SET @@session.sql_mode = '';
46694 DELETE FROM t1 WHERE f_charbig = 'was inserted';
46696 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
46698 # check special-1 success: 1
46699 UPDATE t1 SET f_charbig = '';
46701 # check special-2 success: 1
46702 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
46703 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
46704 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
46705 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46706 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46707 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46708 'just inserted' FROM t0_template
46709 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46710 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
46712 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46713 f_charbig = 'updated by trigger'
46714 WHERE f_int1 = new.f_int1;
46716 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46717 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
46718 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46720 # check trigger-1 success: 1
46721 DROP TRIGGER trg_1;
46722 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46723 f_int2 = CAST(f_char1 AS SIGNED INT),
46724 f_charbig = 'just inserted'
46725 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46727 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46728 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46729 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46730 'just inserted' FROM t0_template
46731 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46732 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
46734 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46735 f_charbig = 'updated by trigger'
46736 WHERE f_int1 = new.f_int1;
46738 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46739 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
46740 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46742 # check trigger-2 success: 1
46743 DROP TRIGGER trg_1;
46744 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46745 f_int2 = CAST(f_char1 AS SIGNED INT),
46746 f_charbig = 'just inserted'
46747 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46749 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46750 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46751 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46752 'just inserted' FROM t0_template
46753 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46754 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
46756 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46757 f_charbig = 'updated by trigger'
46758 WHERE f_int1 = new.f_int1;
46760 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
46761 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46763 # check trigger-3 success: 1
46764 DROP TRIGGER trg_1;
46765 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46766 f_int2 = CAST(f_char1 AS SIGNED INT),
46767 f_charbig = 'just inserted'
46768 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46770 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46771 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46772 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46773 'just inserted' FROM t0_template
46774 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46775 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
46777 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46778 f_charbig = 'updated by trigger'
46779 WHERE f_int1 = - old.f_int1;
46781 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
46782 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46784 # check trigger-4 success: 1
46785 DROP TRIGGER trg_1;
46786 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46787 f_int2 = CAST(f_char1 AS SIGNED INT),
46788 f_charbig = 'just inserted'
46789 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46791 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46792 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46793 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46794 'just inserted' FROM t0_template
46795 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46796 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
46798 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46799 f_charbig = 'updated by trigger'
46800 WHERE f_int1 = new.f_int1;
46802 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
46803 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46805 # check trigger-5 success: 1
46806 DROP TRIGGER trg_1;
46807 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46808 f_int2 = CAST(f_char1 AS SIGNED INT),
46809 f_charbig = 'just inserted'
46810 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46812 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46813 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46814 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46815 'just inserted' FROM t0_template
46816 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46817 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
46819 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46820 f_charbig = 'updated by trigger'
46821 WHERE f_int1 = - old.f_int1;
46823 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
46824 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46826 # check trigger-6 success: 1
46827 DROP TRIGGER trg_1;
46828 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46829 f_int2 = CAST(f_char1 AS SIGNED INT),
46830 f_charbig = 'just inserted'
46831 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46833 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46834 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46835 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46836 'just inserted' FROM t0_template
46837 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46838 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
46840 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46841 f_charbig = 'updated by trigger'
46842 WHERE f_int1 = - old.f_int1;
46845 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46847 # check trigger-7 success: 1
46848 DROP TRIGGER trg_1;
46849 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46850 f_int2 = CAST(f_char1 AS SIGNED INT),
46851 f_charbig = 'just inserted'
46852 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46854 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46855 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
46856 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
46857 'just inserted' FROM t0_template
46858 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46859 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
46861 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
46862 f_charbig = 'updated by trigger'
46863 WHERE f_int1 = - old.f_int1;
46866 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
46868 # check trigger-8 success: 1
46869 DROP TRIGGER trg_1;
46870 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46871 f_int2 = CAST(f_char1 AS SIGNED INT),
46872 f_charbig = 'just inserted'
46873 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
46875 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46877 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
46878 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
46880 SET new.f_int1 = old.f_int1 + @max_row,
46881 new.f_int2 = old.f_int2 - @max_row,
46882 new.f_charbig = '####updated per update trigger####';
46885 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
46886 f_charbig = '####updated per update statement itself####';
46888 # check trigger-9 success: 1
46889 DROP TRIGGER trg_2;
46890 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46891 f_int2 = CAST(f_char1 AS SIGNED INT),
46892 f_charbig = CONCAT('===',f_char1,'===');
46893 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
46895 SET new.f_int1 = new.f_int1 + @max_row,
46896 new.f_int2 = new.f_int2 - @max_row,
46897 new.f_charbig = '####updated per update trigger####';
46900 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
46901 f_charbig = '####updated per update statement itself####';
46903 # check trigger-10 success: 1
46904 DROP TRIGGER trg_2;
46905 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
46906 f_int2 = CAST(f_char1 AS SIGNED INT),
46907 f_charbig = CONCAT('===',f_char1,'===');
46908 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
46910 SET new.f_int1 = @my_max1 + @counter,
46911 new.f_int2 = @my_min2 - @counter,
46912 new.f_charbig = '####updated per insert trigger####';
46913 SET @counter = @counter + 1;
46916 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
46917 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
46918 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
46919 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
46920 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
46922 DROP TRIGGER trg_3;
46924 # check trigger-11 success: 1
46926 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
46927 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
46928 AND f_charbig = '####updated per insert trigger####';
46929 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
46931 SET new.f_int1 = @my_max1 + @counter,
46932 new.f_int2 = @my_min2 - @counter,
46933 new.f_charbig = '####updated per insert trigger####';
46934 SET @counter = @counter + 1;
46937 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
46938 INSERT INTO t1 (f_char1, f_char2, f_charbig)
46939 SELECT CAST(f_int1 AS CHAR),
46940 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
46941 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
46943 DROP TRIGGER trg_3;
46945 # check trigger-12 success: 1
46947 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
46948 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
46949 AND f_charbig = '####updated per insert trigger####';
46951 Table Op Msg_type Msg_text
46952 test.t1 analyze status OK
46953 CHECK TABLE t1 EXTENDED;
46954 Table Op Msg_type Msg_text
46955 test.t1 check status OK
46956 CHECKSUM TABLE t1 EXTENDED;
46958 test.t1 <some_value>
46960 Table Op Msg_type Msg_text
46961 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
46962 test.t1 optimize status OK
46963 # check layout success: 1
46964 REPAIR TABLE t1 EXTENDED;
46965 Table Op Msg_type Msg_text
46966 test.t1 repair note The storage engine for the table doesn't support repair
46967 # check layout success: 1
46970 # check TRUNCATE success: 1
46971 # check layout success: 1
46972 # End usability test (inc/partition_check.inc)
46979 f_charbig VARCHAR(1000)
46980 , UNIQUE INDEX uidx (f_int1,f_int2)
46982 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
46983 (PARTITION part1 VALUES IN (0)
46984 (SUBPARTITION sp11, SUBPARTITION sp12),
46985 PARTITION part2 VALUES IN (1)
46986 (SUBPARTITION sp21, SUBPARTITION sp22),
46987 PARTITION part3 VALUES IN (2)
46988 (SUBPARTITION sp31, SUBPARTITION sp32),
46989 PARTITION part4 VALUES IN (NULL)
46990 (SUBPARTITION sp41, SUBPARTITION sp42));
46991 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
46992 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
46993 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
46994 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
46995 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
46996 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
46997 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
46998 # Start usability test (inc/partition_check.inc)
47000 SHOW CREATE TABLE t1;
47002 t1 CREATE TABLE `t1` (
47003 `f_int1` mediumint(9) DEFAULT NULL,
47004 `f_int2` mediumint(9) DEFAULT NULL,
47005 `f_char1` char(20) DEFAULT NULL,
47006 `f_char2` char(20) DEFAULT NULL,
47007 `f_charbig` varchar(1000) DEFAULT NULL,
47008 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
47009 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
47010 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
47011 SUBPARTITION BY HASH (f_int1 + 1)
47012 (PARTITION part1 VALUES IN (0)
47013 (SUBPARTITION sp11 ENGINE = InnoDB,
47014 SUBPARTITION sp12 ENGINE = InnoDB),
47015 PARTITION part2 VALUES IN (1)
47016 (SUBPARTITION sp21 ENGINE = InnoDB,
47017 SUBPARTITION sp22 ENGINE = InnoDB),
47018 PARTITION part3 VALUES IN (2)
47019 (SUBPARTITION sp31 ENGINE = InnoDB,
47020 SUBPARTITION sp32 ENGINE = InnoDB),
47021 PARTITION part4 VALUES IN (NULL)
47022 (SUBPARTITION sp41 ENGINE = InnoDB,
47023 SUBPARTITION sp42 ENGINE = InnoDB)) */
47025 # check prerequisites-1 success: 1
47026 # check COUNT(*) success: 1
47027 # check MIN/MAX(f_int1) success: 1
47028 # check MIN/MAX(f_int2) success: 1
47029 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47030 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
47031 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
47032 WHERE f_int1 IN (2,3);
47033 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
47034 # check prerequisites-3 success: 1
47035 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
47036 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47037 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
47038 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
47039 WHERE f_int1 IN (2,3);
47040 DELETE FROM t1 WHERE f_charbig = 'delete me';
47041 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47042 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
47043 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
47044 WHERE f_int1 IN (2,3);
47045 DELETE FROM t1 WHERE f_charbig = 'delete me';
47046 # check read via f_int1 success: 1
47047 # check read via f_int2 success: 1
47049 # check multiple-1 success: 1
47050 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
47052 # check multiple-2 success: 1
47053 INSERT INTO t1 SELECT * FROM t0_template
47054 WHERE MOD(f_int1,3) = 0;
47056 # check multiple-3 success: 1
47057 UPDATE t1 SET f_int1 = f_int1 + @max_row
47058 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
47059 AND @max_row_div2 + @max_row_div4;
47061 # check multiple-4 success: 1
47063 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
47064 AND @max_row_div2 + @max_row_div4 + @max_row;
47066 # check multiple-5 success: 1
47067 SELECT COUNT(*) INTO @try_count FROM t0_template
47068 WHERE MOD(f_int1,3) = 0
47069 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
47070 SELECT COUNT(*) INTO @clash_count
47071 FROM t1 INNER JOIN t0_template USING(f_int1)
47072 WHERE MOD(f_int1,3) = 0
47073 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
47074 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
47076 SET f_int1 = @cur_value , f_int2 = @cur_value,
47077 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
47078 f_charbig = '#SINGLE#';
47080 # check single-1 success: 1
47081 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
47083 SET f_int1 = @cur_value , f_int2 = @cur_value,
47084 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
47085 f_charbig = '#SINGLE#';
47087 # check single-2 success: 1
47088 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
47089 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
47090 UPDATE t1 SET f_int1 = @cur_value2
47091 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
47093 # check single-3 success: 1
47094 SET @cur_value1= -1;
47095 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
47096 UPDATE t1 SET f_int1 = @cur_value1
47097 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
47099 # check single-4 success: 1
47100 SELECT MAX(f_int1) INTO @cur_value FROM t1;
47101 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
47103 # check single-5 success: 1
47104 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
47106 # check single-6 success: 1
47107 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
47109 Warning 1264 Out of range value for column 'f_int1' at row 1
47110 Warning 1264 Out of range value for column 'f_int2' at row 1
47112 # check single-7 success: 1
47113 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
47114 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
47115 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
47116 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
47117 f_charbig = '#NULL#';
47119 SET f_int1 = NULL , f_int2 = -@max_row,
47120 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
47121 f_charbig = '#NULL#';
47122 # check null success: 1
47124 # check null-1 success: 1
47125 UPDATE t1 SET f_int1 = -@max_row
47126 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
47127 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
47129 # check null-2 success: 1
47130 UPDATE t1 SET f_int1 = NULL
47131 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
47132 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
47134 # check null-3 success: 1
47136 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
47137 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
47139 # check null-4 success: 1
47141 WHERE f_int1 = 0 AND f_int2 = 0
47142 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
47143 AND f_charbig = '#NULL#';
47144 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47145 SELECT f_int1, f_int1, '', '', 'was inserted'
47146 FROM t0_template source_tab
47147 WHERE MOD(f_int1,3) = 0
47148 AND f_int1 BETWEEN @max_row_div2 AND @max_row
47150 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
47151 f_int2 = 2 * @max_row + source_tab.f_int1,
47152 f_charbig = 'was updated';
47154 # check unique-1-a success: 1
47156 # check unique-1-b success: 1
47157 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47158 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47159 f_int2 = CAST(f_char1 AS SIGNED INT),
47160 f_charbig = CONCAT('===',f_char1,'===')
47161 WHERE f_charbig = 'was updated';
47162 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47163 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
47164 FROM t0_template source_tab
47165 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
47167 # check replace success: 1
47169 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
47171 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
47172 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
47173 UPDATE t1 SET f_int2 = f_int1,
47174 f_char1 = CAST(f_int1 AS CHAR),
47175 f_char2 = CAST(f_int1 AS CHAR),
47176 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
47177 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
47179 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47180 SELECT f_int1, f_int1, '', '', 'was inserted'
47181 FROM t0_template source_tab
47182 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
47184 # check transactions-1 success: 1
47187 # check transactions-2 success: 1
47190 # check transactions-3 success: 1
47191 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47195 # check transactions-4 success: 1
47196 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47197 SELECT f_int1, f_int1, '', '', 'was inserted'
47198 FROM t0_template source_tab
47199 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
47201 # check transactions-5 success: 1
47204 # check transactions-6 success: 1
47205 # INFO: Storage engine used for t1 seems to be transactional.
47208 # check transactions-7 success: 1
47209 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47211 SET @@session.sql_mode = 'traditional';
47212 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
47213 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47214 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
47215 '', '', 'was inserted' FROM t0_template
47216 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
47217 ERROR 22012: Division by 0
47220 # check transactions-8 success: 1
47221 # INFO: Storage engine used for t1 seems to be able to revert
47222 # changes made by the failing statement.
47223 SET @@session.sql_mode = '';
47225 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47227 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
47229 # check special-1 success: 1
47230 UPDATE t1 SET f_charbig = '';
47232 # check special-2 success: 1
47233 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
47234 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
47235 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
47236 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47237 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47238 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47239 'just inserted' FROM t0_template
47240 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47241 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
47243 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47244 f_charbig = 'updated by trigger'
47245 WHERE f_int1 = new.f_int1;
47247 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47248 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
47249 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47251 # check trigger-1 success: 1
47252 DROP TRIGGER trg_1;
47253 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47254 f_int2 = CAST(f_char1 AS SIGNED INT),
47255 f_charbig = 'just inserted'
47256 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47258 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47259 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47260 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47261 'just inserted' FROM t0_template
47262 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47263 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
47265 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47266 f_charbig = 'updated by trigger'
47267 WHERE f_int1 = new.f_int1;
47269 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47270 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
47271 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47273 # check trigger-2 success: 1
47274 DROP TRIGGER trg_1;
47275 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47276 f_int2 = CAST(f_char1 AS SIGNED INT),
47277 f_charbig = 'just inserted'
47278 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47280 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47281 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47282 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47283 'just inserted' FROM t0_template
47284 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47285 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
47287 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47288 f_charbig = 'updated by trigger'
47289 WHERE f_int1 = new.f_int1;
47291 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
47292 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47294 # check trigger-3 success: 1
47295 DROP TRIGGER trg_1;
47296 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47297 f_int2 = CAST(f_char1 AS SIGNED INT),
47298 f_charbig = 'just inserted'
47299 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47301 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47302 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47303 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47304 'just inserted' FROM t0_template
47305 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47306 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
47308 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47309 f_charbig = 'updated by trigger'
47310 WHERE f_int1 = - old.f_int1;
47312 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
47313 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47315 # check trigger-4 success: 1
47316 DROP TRIGGER trg_1;
47317 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47318 f_int2 = CAST(f_char1 AS SIGNED INT),
47319 f_charbig = 'just inserted'
47320 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47322 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47323 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47324 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47325 'just inserted' FROM t0_template
47326 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47327 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
47329 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47330 f_charbig = 'updated by trigger'
47331 WHERE f_int1 = new.f_int1;
47333 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
47334 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47336 # check trigger-5 success: 1
47337 DROP TRIGGER trg_1;
47338 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47339 f_int2 = CAST(f_char1 AS SIGNED INT),
47340 f_charbig = 'just inserted'
47341 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47343 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47344 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47345 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47346 'just inserted' FROM t0_template
47347 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47348 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
47350 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47351 f_charbig = 'updated by trigger'
47352 WHERE f_int1 = - old.f_int1;
47354 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
47355 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47357 # check trigger-6 success: 1
47358 DROP TRIGGER trg_1;
47359 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47360 f_int2 = CAST(f_char1 AS SIGNED INT),
47361 f_charbig = 'just inserted'
47362 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47364 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47365 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47366 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47367 'just inserted' FROM t0_template
47368 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47369 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
47371 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47372 f_charbig = 'updated by trigger'
47373 WHERE f_int1 = - old.f_int1;
47376 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47378 # check trigger-7 success: 1
47379 DROP TRIGGER trg_1;
47380 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47381 f_int2 = CAST(f_char1 AS SIGNED INT),
47382 f_charbig = 'just inserted'
47383 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47385 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47386 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47387 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47388 'just inserted' FROM t0_template
47389 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47390 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
47392 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47393 f_charbig = 'updated by trigger'
47394 WHERE f_int1 = - old.f_int1;
47397 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47399 # check trigger-8 success: 1
47400 DROP TRIGGER trg_1;
47401 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47402 f_int2 = CAST(f_char1 AS SIGNED INT),
47403 f_charbig = 'just inserted'
47404 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47406 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47408 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47409 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
47411 SET new.f_int1 = old.f_int1 + @max_row,
47412 new.f_int2 = old.f_int2 - @max_row,
47413 new.f_charbig = '####updated per update trigger####';
47416 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
47417 f_charbig = '####updated per update statement itself####';
47419 # check trigger-9 success: 1
47420 DROP TRIGGER trg_2;
47421 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47422 f_int2 = CAST(f_char1 AS SIGNED INT),
47423 f_charbig = CONCAT('===',f_char1,'===');
47424 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
47426 SET new.f_int1 = new.f_int1 + @max_row,
47427 new.f_int2 = new.f_int2 - @max_row,
47428 new.f_charbig = '####updated per update trigger####';
47431 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
47432 f_charbig = '####updated per update statement itself####';
47434 # check trigger-10 success: 1
47435 DROP TRIGGER trg_2;
47436 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47437 f_int2 = CAST(f_char1 AS SIGNED INT),
47438 f_charbig = CONCAT('===',f_char1,'===');
47439 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
47441 SET new.f_int1 = @my_max1 + @counter,
47442 new.f_int2 = @my_min2 - @counter,
47443 new.f_charbig = '####updated per insert trigger####';
47444 SET @counter = @counter + 1;
47447 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
47448 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47449 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
47450 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
47451 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
47453 DROP TRIGGER trg_3;
47455 # check trigger-11 success: 1
47457 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
47458 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
47459 AND f_charbig = '####updated per insert trigger####';
47460 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
47462 SET new.f_int1 = @my_max1 + @counter,
47463 new.f_int2 = @my_min2 - @counter,
47464 new.f_charbig = '####updated per insert trigger####';
47465 SET @counter = @counter + 1;
47468 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
47469 INSERT INTO t1 (f_char1, f_char2, f_charbig)
47470 SELECT CAST(f_int1 AS CHAR),
47471 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
47472 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
47474 DROP TRIGGER trg_3;
47476 # check trigger-12 success: 1
47478 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
47479 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
47480 AND f_charbig = '####updated per insert trigger####';
47482 Table Op Msg_type Msg_text
47483 test.t1 analyze status OK
47484 CHECK TABLE t1 EXTENDED;
47485 Table Op Msg_type Msg_text
47486 test.t1 check status OK
47487 CHECKSUM TABLE t1 EXTENDED;
47489 test.t1 <some_value>
47491 Table Op Msg_type Msg_text
47492 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
47493 test.t1 optimize status OK
47494 # check layout success: 1
47495 REPAIR TABLE t1 EXTENDED;
47496 Table Op Msg_type Msg_text
47497 test.t1 repair note The storage engine for the table doesn't support repair
47498 # check layout success: 1
47501 # check TRUNCATE success: 1
47502 # check layout success: 1
47503 # End usability test (inc/partition_check.inc)
47510 f_charbig VARCHAR(1000)
47511 , UNIQUE INDEX uidx (f_int1,f_int2)
47513 PARTITION BY LIST(ABS(MOD(f_int1,2)))
47514 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
47515 (PARTITION part1 VALUES IN (0),
47516 PARTITION part2 VALUES IN (1),
47517 PARTITION part3 VALUES IN (NULL));
47518 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
47519 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
47520 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
47521 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
47522 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
47523 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
47524 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
47525 # Start usability test (inc/partition_check.inc)
47527 SHOW CREATE TABLE t1;
47529 t1 CREATE TABLE `t1` (
47530 `f_int1` mediumint(9) DEFAULT NULL,
47531 `f_int2` mediumint(9) DEFAULT NULL,
47532 `f_char1` char(20) DEFAULT NULL,
47533 `f_char2` char(20) DEFAULT NULL,
47534 `f_charbig` varchar(1000) DEFAULT NULL,
47535 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
47536 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
47537 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
47538 SUBPARTITION BY KEY (f_int1)
47540 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
47541 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
47542 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
47544 # check prerequisites-1 success: 1
47545 # check COUNT(*) success: 1
47546 # check MIN/MAX(f_int1) success: 1
47547 # check MIN/MAX(f_int2) success: 1
47548 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47549 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
47550 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
47551 WHERE f_int1 IN (2,3);
47552 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
47553 # check prerequisites-3 success: 1
47554 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
47555 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47556 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
47557 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
47558 WHERE f_int1 IN (2,3);
47559 DELETE FROM t1 WHERE f_charbig = 'delete me';
47560 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47561 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
47562 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
47563 WHERE f_int1 IN (2,3);
47564 DELETE FROM t1 WHERE f_charbig = 'delete me';
47565 # check read via f_int1 success: 1
47566 # check read via f_int2 success: 1
47568 # check multiple-1 success: 1
47569 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
47571 # check multiple-2 success: 1
47572 INSERT INTO t1 SELECT * FROM t0_template
47573 WHERE MOD(f_int1,3) = 0;
47575 # check multiple-3 success: 1
47576 UPDATE t1 SET f_int1 = f_int1 + @max_row
47577 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
47578 AND @max_row_div2 + @max_row_div4;
47580 # check multiple-4 success: 1
47582 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
47583 AND @max_row_div2 + @max_row_div4 + @max_row;
47585 # check multiple-5 success: 1
47586 SELECT COUNT(*) INTO @try_count FROM t0_template
47587 WHERE MOD(f_int1,3) = 0
47588 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
47589 SELECT COUNT(*) INTO @clash_count
47590 FROM t1 INNER JOIN t0_template USING(f_int1)
47591 WHERE MOD(f_int1,3) = 0
47592 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
47593 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
47595 SET f_int1 = @cur_value , f_int2 = @cur_value,
47596 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
47597 f_charbig = '#SINGLE#';
47599 # check single-1 success: 1
47600 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
47602 SET f_int1 = @cur_value , f_int2 = @cur_value,
47603 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
47604 f_charbig = '#SINGLE#';
47606 # check single-2 success: 1
47607 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
47608 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
47609 UPDATE t1 SET f_int1 = @cur_value2
47610 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
47612 # check single-3 success: 1
47613 SET @cur_value1= -1;
47614 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
47615 UPDATE t1 SET f_int1 = @cur_value1
47616 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
47618 # check single-4 success: 1
47619 SELECT MAX(f_int1) INTO @cur_value FROM t1;
47620 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
47622 # check single-5 success: 1
47623 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
47625 # check single-6 success: 1
47626 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
47628 Warning 1264 Out of range value for column 'f_int1' at row 1
47629 Warning 1264 Out of range value for column 'f_int2' at row 1
47631 # check single-7 success: 1
47632 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
47633 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
47634 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
47635 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
47636 f_charbig = '#NULL#';
47638 SET f_int1 = NULL , f_int2 = -@max_row,
47639 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
47640 f_charbig = '#NULL#';
47641 # check null success: 1
47643 # check null-1 success: 1
47644 UPDATE t1 SET f_int1 = -@max_row
47645 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
47646 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
47648 # check null-2 success: 1
47649 UPDATE t1 SET f_int1 = NULL
47650 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
47651 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
47653 # check null-3 success: 1
47655 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
47656 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
47658 # check null-4 success: 1
47660 WHERE f_int1 = 0 AND f_int2 = 0
47661 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
47662 AND f_charbig = '#NULL#';
47663 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47664 SELECT f_int1, f_int1, '', '', 'was inserted'
47665 FROM t0_template source_tab
47666 WHERE MOD(f_int1,3) = 0
47667 AND f_int1 BETWEEN @max_row_div2 AND @max_row
47669 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
47670 f_int2 = 2 * @max_row + source_tab.f_int1,
47671 f_charbig = 'was updated';
47673 # check unique-1-a success: 1
47675 # check unique-1-b success: 1
47676 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47677 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47678 f_int2 = CAST(f_char1 AS SIGNED INT),
47679 f_charbig = CONCAT('===',f_char1,'===')
47680 WHERE f_charbig = 'was updated';
47681 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47682 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
47683 FROM t0_template source_tab
47684 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
47686 # check replace success: 1
47688 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
47690 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
47691 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
47692 UPDATE t1 SET f_int2 = f_int1,
47693 f_char1 = CAST(f_int1 AS CHAR),
47694 f_char2 = CAST(f_int1 AS CHAR),
47695 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
47696 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
47698 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47699 SELECT f_int1, f_int1, '', '', 'was inserted'
47700 FROM t0_template source_tab
47701 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
47703 # check transactions-1 success: 1
47706 # check transactions-2 success: 1
47709 # check transactions-3 success: 1
47710 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47714 # check transactions-4 success: 1
47715 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47716 SELECT f_int1, f_int1, '', '', 'was inserted'
47717 FROM t0_template source_tab
47718 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
47720 # check transactions-5 success: 1
47723 # check transactions-6 success: 1
47724 # INFO: Storage engine used for t1 seems to be transactional.
47727 # check transactions-7 success: 1
47728 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47730 SET @@session.sql_mode = 'traditional';
47731 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
47732 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47733 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
47734 '', '', 'was inserted' FROM t0_template
47735 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
47736 ERROR 22012: Division by 0
47739 # check transactions-8 success: 1
47740 # INFO: Storage engine used for t1 seems to be able to revert
47741 # changes made by the failing statement.
47742 SET @@session.sql_mode = '';
47744 DELETE FROM t1 WHERE f_charbig = 'was inserted';
47746 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
47748 # check special-1 success: 1
47749 UPDATE t1 SET f_charbig = '';
47751 # check special-2 success: 1
47752 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
47753 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
47754 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
47755 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47756 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47757 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47758 'just inserted' FROM t0_template
47759 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47760 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
47762 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47763 f_charbig = 'updated by trigger'
47764 WHERE f_int1 = new.f_int1;
47766 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47767 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
47768 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47770 # check trigger-1 success: 1
47771 DROP TRIGGER trg_1;
47772 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47773 f_int2 = CAST(f_char1 AS SIGNED INT),
47774 f_charbig = 'just inserted'
47775 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47777 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47778 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47779 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47780 'just inserted' FROM t0_template
47781 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47782 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
47784 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47785 f_charbig = 'updated by trigger'
47786 WHERE f_int1 = new.f_int1;
47788 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47789 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
47790 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47792 # check trigger-2 success: 1
47793 DROP TRIGGER trg_1;
47794 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47795 f_int2 = CAST(f_char1 AS SIGNED INT),
47796 f_charbig = 'just inserted'
47797 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47799 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47800 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47801 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47802 'just inserted' FROM t0_template
47803 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47804 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
47806 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47807 f_charbig = 'updated by trigger'
47808 WHERE f_int1 = new.f_int1;
47810 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
47811 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47813 # check trigger-3 success: 1
47814 DROP TRIGGER trg_1;
47815 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47816 f_int2 = CAST(f_char1 AS SIGNED INT),
47817 f_charbig = 'just inserted'
47818 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47820 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47821 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47822 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47823 'just inserted' FROM t0_template
47824 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47825 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
47827 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47828 f_charbig = 'updated by trigger'
47829 WHERE f_int1 = - old.f_int1;
47831 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
47832 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47834 # check trigger-4 success: 1
47835 DROP TRIGGER trg_1;
47836 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47837 f_int2 = CAST(f_char1 AS SIGNED INT),
47838 f_charbig = 'just inserted'
47839 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47841 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47842 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47843 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47844 'just inserted' FROM t0_template
47845 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47846 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
47848 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47849 f_charbig = 'updated by trigger'
47850 WHERE f_int1 = new.f_int1;
47852 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
47853 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47855 # check trigger-5 success: 1
47856 DROP TRIGGER trg_1;
47857 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47858 f_int2 = CAST(f_char1 AS SIGNED INT),
47859 f_charbig = 'just inserted'
47860 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47862 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47863 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47864 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47865 'just inserted' FROM t0_template
47866 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47867 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
47869 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47870 f_charbig = 'updated by trigger'
47871 WHERE f_int1 = - old.f_int1;
47873 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
47874 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47876 # check trigger-6 success: 1
47877 DROP TRIGGER trg_1;
47878 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47879 f_int2 = CAST(f_char1 AS SIGNED INT),
47880 f_charbig = 'just inserted'
47881 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47883 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47884 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47885 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47886 'just inserted' FROM t0_template
47887 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47888 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
47890 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47891 f_charbig = 'updated by trigger'
47892 WHERE f_int1 = - old.f_int1;
47895 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47897 # check trigger-7 success: 1
47898 DROP TRIGGER trg_1;
47899 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47900 f_int2 = CAST(f_char1 AS SIGNED INT),
47901 f_charbig = 'just inserted'
47902 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47904 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47905 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
47906 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
47907 'just inserted' FROM t0_template
47908 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47909 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
47911 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
47912 f_charbig = 'updated by trigger'
47913 WHERE f_int1 = - old.f_int1;
47916 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
47918 # check trigger-8 success: 1
47919 DROP TRIGGER trg_1;
47920 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47921 f_int2 = CAST(f_char1 AS SIGNED INT),
47922 f_charbig = 'just inserted'
47923 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
47925 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47927 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
47928 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
47930 SET new.f_int1 = old.f_int1 + @max_row,
47931 new.f_int2 = old.f_int2 - @max_row,
47932 new.f_charbig = '####updated per update trigger####';
47935 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
47936 f_charbig = '####updated per update statement itself####';
47938 # check trigger-9 success: 1
47939 DROP TRIGGER trg_2;
47940 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47941 f_int2 = CAST(f_char1 AS SIGNED INT),
47942 f_charbig = CONCAT('===',f_char1,'===');
47943 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
47945 SET new.f_int1 = new.f_int1 + @max_row,
47946 new.f_int2 = new.f_int2 - @max_row,
47947 new.f_charbig = '####updated per update trigger####';
47950 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
47951 f_charbig = '####updated per update statement itself####';
47953 # check trigger-10 success: 1
47954 DROP TRIGGER trg_2;
47955 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
47956 f_int2 = CAST(f_char1 AS SIGNED INT),
47957 f_charbig = CONCAT('===',f_char1,'===');
47958 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
47960 SET new.f_int1 = @my_max1 + @counter,
47961 new.f_int2 = @my_min2 - @counter,
47962 new.f_charbig = '####updated per insert trigger####';
47963 SET @counter = @counter + 1;
47966 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
47967 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
47968 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
47969 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
47970 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
47972 DROP TRIGGER trg_3;
47974 # check trigger-11 success: 1
47976 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
47977 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
47978 AND f_charbig = '####updated per insert trigger####';
47979 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
47981 SET new.f_int1 = @my_max1 + @counter,
47982 new.f_int2 = @my_min2 - @counter,
47983 new.f_charbig = '####updated per insert trigger####';
47984 SET @counter = @counter + 1;
47987 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
47988 INSERT INTO t1 (f_char1, f_char2, f_charbig)
47989 SELECT CAST(f_int1 AS CHAR),
47990 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
47991 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
47993 DROP TRIGGER trg_3;
47995 # check trigger-12 success: 1
47997 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
47998 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
47999 AND f_charbig = '####updated per insert trigger####';
48001 Table Op Msg_type Msg_text
48002 test.t1 analyze status OK
48003 CHECK TABLE t1 EXTENDED;
48004 Table Op Msg_type Msg_text
48005 test.t1 check status OK
48006 CHECKSUM TABLE t1 EXTENDED;
48008 test.t1 <some_value>
48010 Table Op Msg_type Msg_text
48011 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
48012 test.t1 optimize status OK
48013 # check layout success: 1
48014 REPAIR TABLE t1 EXTENDED;
48015 Table Op Msg_type Msg_text
48016 test.t1 repair note The storage engine for the table doesn't support repair
48017 # check layout success: 1
48020 # check TRUNCATE success: 1
48021 # check layout success: 1
48022 # End usability test (inc/partition_check.inc)
48024 DROP TABLE IF EXISTS t1;
48030 f_charbig VARCHAR(1000)
48031 , UNIQUE INDEX uidx (f_int1,f_int2)
48033 PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
48034 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
48035 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
48036 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
48037 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
48038 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
48039 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
48040 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
48041 # Start usability test (inc/partition_check.inc)
48043 SHOW CREATE TABLE t1;
48045 t1 CREATE TABLE `t1` (
48046 `f_int1` mediumint(9) DEFAULT NULL,
48047 `f_int2` mediumint(9) DEFAULT NULL,
48048 `f_char1` char(20) DEFAULT NULL,
48049 `f_char2` char(20) DEFAULT NULL,
48050 `f_charbig` varchar(1000) DEFAULT NULL,
48051 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
48052 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
48053 /*!50100 PARTITION BY HASH (f_int1 + f_int2)
48056 # check prerequisites-1 success: 1
48057 # check COUNT(*) success: 1
48058 # check MIN/MAX(f_int1) success: 1
48059 # check MIN/MAX(f_int2) success: 1
48060 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48061 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
48062 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
48063 WHERE f_int1 IN (2,3);
48064 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
48065 # check prerequisites-3 success: 1
48066 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
48067 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48068 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
48069 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
48070 WHERE f_int1 IN (2,3);
48071 DELETE FROM t1 WHERE f_charbig = 'delete me';
48072 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48073 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
48074 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
48075 WHERE f_int1 IN (2,3);
48076 DELETE FROM t1 WHERE f_charbig = 'delete me';
48077 # check read via f_int1 success: 1
48078 # check read via f_int2 success: 1
48080 # check multiple-1 success: 1
48081 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
48083 # check multiple-2 success: 1
48084 INSERT INTO t1 SELECT * FROM t0_template
48085 WHERE MOD(f_int1,3) = 0;
48087 # check multiple-3 success: 1
48088 UPDATE t1 SET f_int1 = f_int1 + @max_row
48089 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
48090 AND @max_row_div2 + @max_row_div4;
48092 # check multiple-4 success: 1
48094 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
48095 AND @max_row_div2 + @max_row_div4 + @max_row;
48097 # check multiple-5 success: 1
48098 SELECT COUNT(*) INTO @try_count FROM t0_template
48099 WHERE MOD(f_int1,3) = 0
48100 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
48101 SELECT COUNT(*) INTO @clash_count
48102 FROM t1 INNER JOIN t0_template USING(f_int1)
48103 WHERE MOD(f_int1,3) = 0
48104 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
48105 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
48107 SET f_int1 = @cur_value , f_int2 = @cur_value,
48108 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
48109 f_charbig = '#SINGLE#';
48111 # check single-1 success: 1
48112 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
48114 SET f_int1 = @cur_value , f_int2 = @cur_value,
48115 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
48116 f_charbig = '#SINGLE#';
48118 # check single-2 success: 1
48119 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
48120 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
48121 UPDATE t1 SET f_int1 = @cur_value2
48122 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
48124 # check single-3 success: 1
48125 SET @cur_value1= -1;
48126 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
48127 UPDATE t1 SET f_int1 = @cur_value1
48128 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
48130 # check single-4 success: 1
48131 SELECT MAX(f_int1) INTO @cur_value FROM t1;
48132 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
48134 # check single-5 success: 1
48135 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
48137 # check single-6 success: 1
48138 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
48140 Warning 1264 Out of range value for column 'f_int1' at row 1
48141 Warning 1264 Out of range value for column 'f_int2' at row 1
48143 # check single-7 success: 1
48144 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
48145 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
48146 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
48147 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
48148 f_charbig = '#NULL#';
48150 SET f_int1 = NULL , f_int2 = -@max_row,
48151 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
48152 f_charbig = '#NULL#';
48153 # check null success: 1
48155 # check null-1 success: 1
48156 UPDATE t1 SET f_int1 = -@max_row
48157 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
48158 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
48160 # check null-2 success: 1
48161 UPDATE t1 SET f_int1 = NULL
48162 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
48163 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
48165 # check null-3 success: 1
48167 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
48168 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
48170 # check null-4 success: 1
48172 WHERE f_int1 = 0 AND f_int2 = 0
48173 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
48174 AND f_charbig = '#NULL#';
48175 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48176 SELECT f_int1, f_int1, '', '', 'was inserted'
48177 FROM t0_template source_tab
48178 WHERE MOD(f_int1,3) = 0
48179 AND f_int1 BETWEEN @max_row_div2 AND @max_row
48181 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
48182 f_int2 = 2 * @max_row + source_tab.f_int1,
48183 f_charbig = 'was updated';
48185 # check unique-1-a success: 1
48187 # check unique-1-b success: 1
48188 DELETE FROM t1 WHERE f_charbig = 'was inserted';
48189 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48190 f_int2 = CAST(f_char1 AS SIGNED INT),
48191 f_charbig = CONCAT('===',f_char1,'===')
48192 WHERE f_charbig = 'was updated';
48193 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48194 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
48195 FROM t0_template source_tab
48196 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
48198 # check replace success: 1
48200 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
48202 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
48203 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
48204 UPDATE t1 SET f_int2 = f_int1,
48205 f_char1 = CAST(f_int1 AS CHAR),
48206 f_char2 = CAST(f_int1 AS CHAR),
48207 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
48208 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
48210 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48211 SELECT f_int1, f_int1, '', '', 'was inserted'
48212 FROM t0_template source_tab
48213 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
48215 # check transactions-1 success: 1
48218 # check transactions-2 success: 1
48221 # check transactions-3 success: 1
48222 DELETE FROM t1 WHERE f_charbig = 'was inserted';
48226 # check transactions-4 success: 1
48227 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48228 SELECT f_int1, f_int1, '', '', 'was inserted'
48229 FROM t0_template source_tab
48230 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
48232 # check transactions-5 success: 1
48235 # check transactions-6 success: 1
48236 # INFO: Storage engine used for t1 seems to be transactional.
48239 # check transactions-7 success: 1
48240 DELETE FROM t1 WHERE f_charbig = 'was inserted';
48242 SET @@session.sql_mode = 'traditional';
48243 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
48244 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48245 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
48246 '', '', 'was inserted' FROM t0_template
48247 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
48248 ERROR 22012: Division by 0
48251 # check transactions-8 success: 1
48252 # INFO: Storage engine used for t1 seems to be able to revert
48253 # changes made by the failing statement.
48254 SET @@session.sql_mode = '';
48256 DELETE FROM t1 WHERE f_charbig = 'was inserted';
48258 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
48260 # check special-1 success: 1
48261 UPDATE t1 SET f_charbig = '';
48263 # check special-2 success: 1
48264 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
48265 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
48266 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
48267 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48268 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48269 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48270 'just inserted' FROM t0_template
48271 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48272 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
48274 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48275 f_charbig = 'updated by trigger'
48276 WHERE f_int1 = new.f_int1;
48278 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48279 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
48280 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48282 # check trigger-1 success: 1
48283 DROP TRIGGER trg_1;
48284 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48285 f_int2 = CAST(f_char1 AS SIGNED INT),
48286 f_charbig = 'just inserted'
48287 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48289 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48290 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48291 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48292 'just inserted' FROM t0_template
48293 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48294 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
48296 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48297 f_charbig = 'updated by trigger'
48298 WHERE f_int1 = new.f_int1;
48300 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48301 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
48302 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48304 # check trigger-2 success: 1
48305 DROP TRIGGER trg_1;
48306 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48307 f_int2 = CAST(f_char1 AS SIGNED INT),
48308 f_charbig = 'just inserted'
48309 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48311 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48312 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48313 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48314 'just inserted' FROM t0_template
48315 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48316 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
48318 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48319 f_charbig = 'updated by trigger'
48320 WHERE f_int1 = new.f_int1;
48322 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
48323 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48325 # check trigger-3 success: 1
48326 DROP TRIGGER trg_1;
48327 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48328 f_int2 = CAST(f_char1 AS SIGNED INT),
48329 f_charbig = 'just inserted'
48330 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48332 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48333 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48334 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48335 'just inserted' FROM t0_template
48336 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48337 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
48339 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48340 f_charbig = 'updated by trigger'
48341 WHERE f_int1 = - old.f_int1;
48343 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
48344 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48346 # check trigger-4 success: 1
48347 DROP TRIGGER trg_1;
48348 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48349 f_int2 = CAST(f_char1 AS SIGNED INT),
48350 f_charbig = 'just inserted'
48351 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48353 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48354 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48355 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48356 'just inserted' FROM t0_template
48357 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48358 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
48360 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48361 f_charbig = 'updated by trigger'
48362 WHERE f_int1 = new.f_int1;
48364 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
48365 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48367 # check trigger-5 success: 1
48368 DROP TRIGGER trg_1;
48369 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48370 f_int2 = CAST(f_char1 AS SIGNED INT),
48371 f_charbig = 'just inserted'
48372 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48374 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48375 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48376 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48377 'just inserted' FROM t0_template
48378 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48379 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
48381 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48382 f_charbig = 'updated by trigger'
48383 WHERE f_int1 = - old.f_int1;
48385 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
48386 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48388 # check trigger-6 success: 1
48389 DROP TRIGGER trg_1;
48390 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48391 f_int2 = CAST(f_char1 AS SIGNED INT),
48392 f_charbig = 'just inserted'
48393 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48395 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48396 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48397 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48398 'just inserted' FROM t0_template
48399 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48400 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
48402 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48403 f_charbig = 'updated by trigger'
48404 WHERE f_int1 = - old.f_int1;
48407 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48409 # check trigger-7 success: 1
48410 DROP TRIGGER trg_1;
48411 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48412 f_int2 = CAST(f_char1 AS SIGNED INT),
48413 f_charbig = 'just inserted'
48414 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48416 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48417 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48418 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48419 'just inserted' FROM t0_template
48420 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48421 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
48423 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48424 f_charbig = 'updated by trigger'
48425 WHERE f_int1 = - old.f_int1;
48428 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48430 # check trigger-8 success: 1
48431 DROP TRIGGER trg_1;
48432 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48433 f_int2 = CAST(f_char1 AS SIGNED INT),
48434 f_charbig = 'just inserted'
48435 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48437 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48439 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48440 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
48442 SET new.f_int1 = old.f_int1 + @max_row,
48443 new.f_int2 = old.f_int2 - @max_row,
48444 new.f_charbig = '####updated per update trigger####';
48447 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
48448 f_charbig = '####updated per update statement itself####';
48450 # check trigger-9 success: 1
48451 DROP TRIGGER trg_2;
48452 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48453 f_int2 = CAST(f_char1 AS SIGNED INT),
48454 f_charbig = CONCAT('===',f_char1,'===');
48455 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
48457 SET new.f_int1 = new.f_int1 + @max_row,
48458 new.f_int2 = new.f_int2 - @max_row,
48459 new.f_charbig = '####updated per update trigger####';
48462 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
48463 f_charbig = '####updated per update statement itself####';
48465 # check trigger-10 success: 1
48466 DROP TRIGGER trg_2;
48467 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48468 f_int2 = CAST(f_char1 AS SIGNED INT),
48469 f_charbig = CONCAT('===',f_char1,'===');
48470 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
48472 SET new.f_int1 = @my_max1 + @counter,
48473 new.f_int2 = @my_min2 - @counter,
48474 new.f_charbig = '####updated per insert trigger####';
48475 SET @counter = @counter + 1;
48478 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
48479 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48480 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
48481 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
48482 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
48484 DROP TRIGGER trg_3;
48486 # check trigger-11 success: 1
48488 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
48489 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
48490 AND f_charbig = '####updated per insert trigger####';
48491 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
48493 SET new.f_int1 = @my_max1 + @counter,
48494 new.f_int2 = @my_min2 - @counter,
48495 new.f_charbig = '####updated per insert trigger####';
48496 SET @counter = @counter + 1;
48499 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
48500 INSERT INTO t1 (f_char1, f_char2, f_charbig)
48501 SELECT CAST(f_int1 AS CHAR),
48502 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
48503 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
48505 DROP TRIGGER trg_3;
48507 # check trigger-12 success: 1
48509 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
48510 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
48511 AND f_charbig = '####updated per insert trigger####';
48513 Table Op Msg_type Msg_text
48514 test.t1 analyze status OK
48515 CHECK TABLE t1 EXTENDED;
48516 Table Op Msg_type Msg_text
48517 test.t1 check status OK
48518 CHECKSUM TABLE t1 EXTENDED;
48520 test.t1 <some_value>
48522 Table Op Msg_type Msg_text
48523 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
48524 test.t1 optimize status OK
48525 # check layout success: 1
48526 REPAIR TABLE t1 EXTENDED;
48527 Table Op Msg_type Msg_text
48528 test.t1 repair note The storage engine for the table doesn't support repair
48529 # check layout success: 1
48532 # check TRUNCATE success: 1
48533 # check layout success: 1
48534 # End usability test (inc/partition_check.inc)
48541 f_charbig VARCHAR(1000)
48542 , UNIQUE INDEX uidx (f_int1,f_int2)
48544 PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
48545 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
48546 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
48547 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
48548 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
48549 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
48550 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
48551 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
48552 # Start usability test (inc/partition_check.inc)
48554 SHOW CREATE TABLE t1;
48556 t1 CREATE TABLE `t1` (
48557 `f_int1` mediumint(9) DEFAULT NULL,
48558 `f_int2` mediumint(9) DEFAULT NULL,
48559 `f_char1` char(20) DEFAULT NULL,
48560 `f_char2` char(20) DEFAULT NULL,
48561 `f_charbig` varchar(1000) DEFAULT NULL,
48562 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
48563 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
48564 /*!50100 PARTITION BY KEY (f_int1,f_int2)
48567 # check prerequisites-1 success: 1
48568 # check COUNT(*) success: 1
48569 # check MIN/MAX(f_int1) success: 1
48570 # check MIN/MAX(f_int2) success: 1
48571 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48572 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
48573 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
48574 WHERE f_int1 IN (2,3);
48575 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
48576 # check prerequisites-3 success: 1
48577 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
48578 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48579 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
48580 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
48581 WHERE f_int1 IN (2,3);
48582 DELETE FROM t1 WHERE f_charbig = 'delete me';
48583 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48584 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
48585 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
48586 WHERE f_int1 IN (2,3);
48587 DELETE FROM t1 WHERE f_charbig = 'delete me';
48588 # check read via f_int1 success: 1
48589 # check read via f_int2 success: 1
48591 # check multiple-1 success: 1
48592 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
48594 # check multiple-2 success: 1
48595 INSERT INTO t1 SELECT * FROM t0_template
48596 WHERE MOD(f_int1,3) = 0;
48598 # check multiple-3 success: 1
48599 UPDATE t1 SET f_int1 = f_int1 + @max_row
48600 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
48601 AND @max_row_div2 + @max_row_div4;
48603 # check multiple-4 success: 1
48605 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
48606 AND @max_row_div2 + @max_row_div4 + @max_row;
48608 # check multiple-5 success: 1
48609 SELECT COUNT(*) INTO @try_count FROM t0_template
48610 WHERE MOD(f_int1,3) = 0
48611 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
48612 SELECT COUNT(*) INTO @clash_count
48613 FROM t1 INNER JOIN t0_template USING(f_int1)
48614 WHERE MOD(f_int1,3) = 0
48615 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
48616 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
48618 SET f_int1 = @cur_value , f_int2 = @cur_value,
48619 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
48620 f_charbig = '#SINGLE#';
48622 # check single-1 success: 1
48623 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
48625 SET f_int1 = @cur_value , f_int2 = @cur_value,
48626 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
48627 f_charbig = '#SINGLE#';
48629 # check single-2 success: 1
48630 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
48631 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
48632 UPDATE t1 SET f_int1 = @cur_value2
48633 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
48635 # check single-3 success: 1
48636 SET @cur_value1= -1;
48637 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
48638 UPDATE t1 SET f_int1 = @cur_value1
48639 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
48641 # check single-4 success: 1
48642 SELECT MAX(f_int1) INTO @cur_value FROM t1;
48643 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
48645 # check single-5 success: 1
48646 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
48648 # check single-6 success: 1
48649 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
48651 Warning 1264 Out of range value for column 'f_int1' at row 1
48652 Warning 1264 Out of range value for column 'f_int2' at row 1
48654 # check single-7 success: 1
48655 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
48656 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
48657 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
48658 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
48659 f_charbig = '#NULL#';
48661 SET f_int1 = NULL , f_int2 = -@max_row,
48662 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
48663 f_charbig = '#NULL#';
48664 # check null success: 1
48666 # check null-1 success: 1
48667 UPDATE t1 SET f_int1 = -@max_row
48668 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
48669 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
48671 # check null-2 success: 1
48672 UPDATE t1 SET f_int1 = NULL
48673 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
48674 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
48676 # check null-3 success: 1
48678 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
48679 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
48681 # check null-4 success: 1
48683 WHERE f_int1 = 0 AND f_int2 = 0
48684 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
48685 AND f_charbig = '#NULL#';
48686 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48687 SELECT f_int1, f_int1, '', '', 'was inserted'
48688 FROM t0_template source_tab
48689 WHERE MOD(f_int1,3) = 0
48690 AND f_int1 BETWEEN @max_row_div2 AND @max_row
48692 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
48693 f_int2 = 2 * @max_row + source_tab.f_int1,
48694 f_charbig = 'was updated';
48696 # check unique-1-a success: 1
48698 # check unique-1-b success: 1
48699 DELETE FROM t1 WHERE f_charbig = 'was inserted';
48700 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48701 f_int2 = CAST(f_char1 AS SIGNED INT),
48702 f_charbig = CONCAT('===',f_char1,'===')
48703 WHERE f_charbig = 'was updated';
48704 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48705 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
48706 FROM t0_template source_tab
48707 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
48709 # check replace success: 1
48711 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
48713 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
48714 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
48715 UPDATE t1 SET f_int2 = f_int1,
48716 f_char1 = CAST(f_int1 AS CHAR),
48717 f_char2 = CAST(f_int1 AS CHAR),
48718 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
48719 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
48721 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48722 SELECT f_int1, f_int1, '', '', 'was inserted'
48723 FROM t0_template source_tab
48724 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
48726 # check transactions-1 success: 1
48729 # check transactions-2 success: 1
48732 # check transactions-3 success: 1
48733 DELETE FROM t1 WHERE f_charbig = 'was inserted';
48737 # check transactions-4 success: 1
48738 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48739 SELECT f_int1, f_int1, '', '', 'was inserted'
48740 FROM t0_template source_tab
48741 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
48743 # check transactions-5 success: 1
48746 # check transactions-6 success: 1
48747 # INFO: Storage engine used for t1 seems to be transactional.
48750 # check transactions-7 success: 1
48751 DELETE FROM t1 WHERE f_charbig = 'was inserted';
48753 SET @@session.sql_mode = 'traditional';
48754 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
48755 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48756 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
48757 '', '', 'was inserted' FROM t0_template
48758 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
48759 ERROR 22012: Division by 0
48762 # check transactions-8 success: 1
48763 # INFO: Storage engine used for t1 seems to be able to revert
48764 # changes made by the failing statement.
48765 SET @@session.sql_mode = '';
48767 DELETE FROM t1 WHERE f_charbig = 'was inserted';
48769 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
48771 # check special-1 success: 1
48772 UPDATE t1 SET f_charbig = '';
48774 # check special-2 success: 1
48775 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
48776 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
48777 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
48778 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48779 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48780 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48781 'just inserted' FROM t0_template
48782 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48783 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
48785 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48786 f_charbig = 'updated by trigger'
48787 WHERE f_int1 = new.f_int1;
48789 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48790 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
48791 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48793 # check trigger-1 success: 1
48794 DROP TRIGGER trg_1;
48795 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48796 f_int2 = CAST(f_char1 AS SIGNED INT),
48797 f_charbig = 'just inserted'
48798 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48800 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48801 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48802 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48803 'just inserted' FROM t0_template
48804 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48805 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
48807 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48808 f_charbig = 'updated by trigger'
48809 WHERE f_int1 = new.f_int1;
48811 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48812 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
48813 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48815 # check trigger-2 success: 1
48816 DROP TRIGGER trg_1;
48817 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48818 f_int2 = CAST(f_char1 AS SIGNED INT),
48819 f_charbig = 'just inserted'
48820 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48822 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48823 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48824 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48825 'just inserted' FROM t0_template
48826 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48827 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
48829 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48830 f_charbig = 'updated by trigger'
48831 WHERE f_int1 = new.f_int1;
48833 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
48834 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48836 # check trigger-3 success: 1
48837 DROP TRIGGER trg_1;
48838 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48839 f_int2 = CAST(f_char1 AS SIGNED INT),
48840 f_charbig = 'just inserted'
48841 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48843 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48844 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48845 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48846 'just inserted' FROM t0_template
48847 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48848 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
48850 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48851 f_charbig = 'updated by trigger'
48852 WHERE f_int1 = - old.f_int1;
48854 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
48855 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48857 # check trigger-4 success: 1
48858 DROP TRIGGER trg_1;
48859 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48860 f_int2 = CAST(f_char1 AS SIGNED INT),
48861 f_charbig = 'just inserted'
48862 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48864 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48865 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48866 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48867 'just inserted' FROM t0_template
48868 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48869 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
48871 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48872 f_charbig = 'updated by trigger'
48873 WHERE f_int1 = new.f_int1;
48875 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
48876 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48878 # check trigger-5 success: 1
48879 DROP TRIGGER trg_1;
48880 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48881 f_int2 = CAST(f_char1 AS SIGNED INT),
48882 f_charbig = 'just inserted'
48883 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48885 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48886 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48887 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48888 'just inserted' FROM t0_template
48889 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48890 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
48892 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48893 f_charbig = 'updated by trigger'
48894 WHERE f_int1 = - old.f_int1;
48896 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
48897 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48899 # check trigger-6 success: 1
48900 DROP TRIGGER trg_1;
48901 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48902 f_int2 = CAST(f_char1 AS SIGNED INT),
48903 f_charbig = 'just inserted'
48904 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48906 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48907 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48908 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48909 'just inserted' FROM t0_template
48910 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48911 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
48913 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48914 f_charbig = 'updated by trigger'
48915 WHERE f_int1 = - old.f_int1;
48918 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48920 # check trigger-7 success: 1
48921 DROP TRIGGER trg_1;
48922 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48923 f_int2 = CAST(f_char1 AS SIGNED INT),
48924 f_charbig = 'just inserted'
48925 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48927 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48928 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
48929 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
48930 'just inserted' FROM t0_template
48931 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48932 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
48934 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
48935 f_charbig = 'updated by trigger'
48936 WHERE f_int1 = - old.f_int1;
48939 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
48941 # check trigger-8 success: 1
48942 DROP TRIGGER trg_1;
48943 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48944 f_int2 = CAST(f_char1 AS SIGNED INT),
48945 f_charbig = 'just inserted'
48946 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
48948 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48950 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
48951 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
48953 SET new.f_int1 = old.f_int1 + @max_row,
48954 new.f_int2 = old.f_int2 - @max_row,
48955 new.f_charbig = '####updated per update trigger####';
48958 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
48959 f_charbig = '####updated per update statement itself####';
48961 # check trigger-9 success: 1
48962 DROP TRIGGER trg_2;
48963 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48964 f_int2 = CAST(f_char1 AS SIGNED INT),
48965 f_charbig = CONCAT('===',f_char1,'===');
48966 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
48968 SET new.f_int1 = new.f_int1 + @max_row,
48969 new.f_int2 = new.f_int2 - @max_row,
48970 new.f_charbig = '####updated per update trigger####';
48973 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
48974 f_charbig = '####updated per update statement itself####';
48976 # check trigger-10 success: 1
48977 DROP TRIGGER trg_2;
48978 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
48979 f_int2 = CAST(f_char1 AS SIGNED INT),
48980 f_charbig = CONCAT('===',f_char1,'===');
48981 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
48983 SET new.f_int1 = @my_max1 + @counter,
48984 new.f_int2 = @my_min2 - @counter,
48985 new.f_charbig = '####updated per insert trigger####';
48986 SET @counter = @counter + 1;
48989 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
48990 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
48991 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
48992 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
48993 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
48995 DROP TRIGGER trg_3;
48997 # check trigger-11 success: 1
48999 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
49000 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
49001 AND f_charbig = '####updated per insert trigger####';
49002 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
49004 SET new.f_int1 = @my_max1 + @counter,
49005 new.f_int2 = @my_min2 - @counter,
49006 new.f_charbig = '####updated per insert trigger####';
49007 SET @counter = @counter + 1;
49010 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
49011 INSERT INTO t1 (f_char1, f_char2, f_charbig)
49012 SELECT CAST(f_int1 AS CHAR),
49013 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
49014 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
49016 DROP TRIGGER trg_3;
49018 # check trigger-12 success: 1
49020 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
49021 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
49022 AND f_charbig = '####updated per insert trigger####';
49024 Table Op Msg_type Msg_text
49025 test.t1 analyze status OK
49026 CHECK TABLE t1 EXTENDED;
49027 Table Op Msg_type Msg_text
49028 test.t1 check status OK
49029 CHECKSUM TABLE t1 EXTENDED;
49031 test.t1 <some_value>
49033 Table Op Msg_type Msg_text
49034 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
49035 test.t1 optimize status OK
49036 # check layout success: 1
49037 REPAIR TABLE t1 EXTENDED;
49038 Table Op Msg_type Msg_text
49039 test.t1 repair note The storage engine for the table doesn't support repair
49040 # check layout success: 1
49043 # check TRUNCATE success: 1
49044 # check layout success: 1
49045 # End usability test (inc/partition_check.inc)
49052 f_charbig VARCHAR(1000)
49053 , UNIQUE INDEX uidx (f_int1,f_int2)
49055 PARTITION BY LIST(MOD(f_int1 + f_int2,4))
49056 (PARTITION part_3 VALUES IN (-3),
49057 PARTITION part_2 VALUES IN (-2),
49058 PARTITION part_1 VALUES IN (-1),
49059 PARTITION part_N VALUES IN (NULL),
49060 PARTITION part0 VALUES IN (0),
49061 PARTITION part1 VALUES IN (1),
49062 PARTITION part2 VALUES IN (2),
49063 PARTITION part3 VALUES IN (3));
49064 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
49065 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
49066 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
49067 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
49068 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
49069 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
49070 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
49071 # Start usability test (inc/partition_check.inc)
49073 SHOW CREATE TABLE t1;
49075 t1 CREATE TABLE `t1` (
49076 `f_int1` mediumint(9) DEFAULT NULL,
49077 `f_int2` mediumint(9) DEFAULT NULL,
49078 `f_char1` char(20) DEFAULT NULL,
49079 `f_char2` char(20) DEFAULT NULL,
49080 `f_charbig` varchar(1000) DEFAULT NULL,
49081 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
49082 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
49083 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
49084 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
49085 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
49086 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
49087 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
49088 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
49089 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
49090 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
49091 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
49093 # check prerequisites-1 success: 1
49094 # check COUNT(*) success: 1
49095 # check MIN/MAX(f_int1) success: 1
49096 # check MIN/MAX(f_int2) success: 1
49097 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49098 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
49099 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
49100 WHERE f_int1 IN (2,3);
49101 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
49102 # check prerequisites-3 success: 1
49103 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
49104 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49105 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
49106 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
49107 WHERE f_int1 IN (2,3);
49108 DELETE FROM t1 WHERE f_charbig = 'delete me';
49109 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49110 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
49111 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
49112 WHERE f_int1 IN (2,3);
49113 DELETE FROM t1 WHERE f_charbig = 'delete me';
49114 # check read via f_int1 success: 1
49115 # check read via f_int2 success: 1
49117 # check multiple-1 success: 1
49118 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
49120 # check multiple-2 success: 1
49121 INSERT INTO t1 SELECT * FROM t0_template
49122 WHERE MOD(f_int1,3) = 0;
49124 # check multiple-3 success: 1
49125 UPDATE t1 SET f_int1 = f_int1 + @max_row
49126 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
49127 AND @max_row_div2 + @max_row_div4;
49129 # check multiple-4 success: 1
49131 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
49132 AND @max_row_div2 + @max_row_div4 + @max_row;
49134 # check multiple-5 success: 1
49135 SELECT COUNT(*) INTO @try_count FROM t0_template
49136 WHERE MOD(f_int1,3) = 0
49137 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
49138 SELECT COUNT(*) INTO @clash_count
49139 FROM t1 INNER JOIN t0_template USING(f_int1)
49140 WHERE MOD(f_int1,3) = 0
49141 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
49142 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
49144 SET f_int1 = @cur_value , f_int2 = @cur_value,
49145 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
49146 f_charbig = '#SINGLE#';
49148 # check single-1 success: 1
49149 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
49151 SET f_int1 = @cur_value , f_int2 = @cur_value,
49152 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
49153 f_charbig = '#SINGLE#';
49155 # check single-2 success: 1
49156 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
49157 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
49158 UPDATE t1 SET f_int1 = @cur_value2
49159 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
49161 # check single-3 success: 1
49162 SET @cur_value1= -1;
49163 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
49164 UPDATE t1 SET f_int1 = @cur_value1
49165 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
49167 # check single-4 success: 1
49168 SELECT MAX(f_int1) INTO @cur_value FROM t1;
49169 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
49171 # check single-5 success: 1
49172 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
49174 # check single-6 success: 1
49175 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
49177 Warning 1264 Out of range value for column 'f_int1' at row 1
49178 Warning 1264 Out of range value for column 'f_int2' at row 1
49180 # check single-7 success: 1
49181 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
49182 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
49183 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
49184 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
49185 f_charbig = '#NULL#';
49187 SET f_int1 = NULL , f_int2 = -@max_row,
49188 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
49189 f_charbig = '#NULL#';
49190 # check null success: 1
49192 # check null-1 success: 1
49193 UPDATE t1 SET f_int1 = -@max_row
49194 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
49195 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
49197 # check null-2 success: 1
49198 UPDATE t1 SET f_int1 = NULL
49199 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
49200 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
49202 # check null-3 success: 1
49204 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
49205 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
49207 # check null-4 success: 1
49209 WHERE f_int1 = 0 AND f_int2 = 0
49210 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
49211 AND f_charbig = '#NULL#';
49212 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49213 SELECT f_int1, f_int1, '', '', 'was inserted'
49214 FROM t0_template source_tab
49215 WHERE MOD(f_int1,3) = 0
49216 AND f_int1 BETWEEN @max_row_div2 AND @max_row
49218 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
49219 f_int2 = 2 * @max_row + source_tab.f_int1,
49220 f_charbig = 'was updated';
49222 # check unique-1-a success: 1
49224 # check unique-1-b success: 1
49225 DELETE FROM t1 WHERE f_charbig = 'was inserted';
49226 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49227 f_int2 = CAST(f_char1 AS SIGNED INT),
49228 f_charbig = CONCAT('===',f_char1,'===')
49229 WHERE f_charbig = 'was updated';
49230 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49231 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
49232 FROM t0_template source_tab
49233 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
49235 # check replace success: 1
49237 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
49239 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
49240 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
49241 UPDATE t1 SET f_int2 = f_int1,
49242 f_char1 = CAST(f_int1 AS CHAR),
49243 f_char2 = CAST(f_int1 AS CHAR),
49244 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
49245 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
49247 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49248 SELECT f_int1, f_int1, '', '', 'was inserted'
49249 FROM t0_template source_tab
49250 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
49252 # check transactions-1 success: 1
49255 # check transactions-2 success: 1
49258 # check transactions-3 success: 1
49259 DELETE FROM t1 WHERE f_charbig = 'was inserted';
49263 # check transactions-4 success: 1
49264 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49265 SELECT f_int1, f_int1, '', '', 'was inserted'
49266 FROM t0_template source_tab
49267 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
49269 # check transactions-5 success: 1
49272 # check transactions-6 success: 1
49273 # INFO: Storage engine used for t1 seems to be transactional.
49276 # check transactions-7 success: 1
49277 DELETE FROM t1 WHERE f_charbig = 'was inserted';
49279 SET @@session.sql_mode = 'traditional';
49280 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
49281 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49282 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
49283 '', '', 'was inserted' FROM t0_template
49284 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
49285 ERROR 22012: Division by 0
49288 # check transactions-8 success: 1
49289 # INFO: Storage engine used for t1 seems to be able to revert
49290 # changes made by the failing statement.
49291 SET @@session.sql_mode = '';
49293 DELETE FROM t1 WHERE f_charbig = 'was inserted';
49295 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
49297 # check special-1 success: 1
49298 UPDATE t1 SET f_charbig = '';
49300 # check special-2 success: 1
49301 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
49302 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
49303 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
49304 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49305 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49306 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49307 'just inserted' FROM t0_template
49308 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49309 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
49311 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49312 f_charbig = 'updated by trigger'
49313 WHERE f_int1 = new.f_int1;
49315 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49316 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
49317 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49319 # check trigger-1 success: 1
49320 DROP TRIGGER trg_1;
49321 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49322 f_int2 = CAST(f_char1 AS SIGNED INT),
49323 f_charbig = 'just inserted'
49324 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49326 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49327 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49328 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49329 'just inserted' FROM t0_template
49330 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49331 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
49333 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49334 f_charbig = 'updated by trigger'
49335 WHERE f_int1 = new.f_int1;
49337 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49338 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
49339 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49341 # check trigger-2 success: 1
49342 DROP TRIGGER trg_1;
49343 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49344 f_int2 = CAST(f_char1 AS SIGNED INT),
49345 f_charbig = 'just inserted'
49346 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49348 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49349 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49350 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49351 'just inserted' FROM t0_template
49352 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49353 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
49355 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49356 f_charbig = 'updated by trigger'
49357 WHERE f_int1 = new.f_int1;
49359 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
49360 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49362 # check trigger-3 success: 1
49363 DROP TRIGGER trg_1;
49364 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49365 f_int2 = CAST(f_char1 AS SIGNED INT),
49366 f_charbig = 'just inserted'
49367 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49369 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49370 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49371 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49372 'just inserted' FROM t0_template
49373 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49374 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
49376 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49377 f_charbig = 'updated by trigger'
49378 WHERE f_int1 = - old.f_int1;
49380 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
49381 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49383 # check trigger-4 success: 1
49384 DROP TRIGGER trg_1;
49385 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49386 f_int2 = CAST(f_char1 AS SIGNED INT),
49387 f_charbig = 'just inserted'
49388 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49390 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49391 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49392 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49393 'just inserted' FROM t0_template
49394 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49395 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
49397 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49398 f_charbig = 'updated by trigger'
49399 WHERE f_int1 = new.f_int1;
49401 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
49402 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49404 # check trigger-5 success: 1
49405 DROP TRIGGER trg_1;
49406 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49407 f_int2 = CAST(f_char1 AS SIGNED INT),
49408 f_charbig = 'just inserted'
49409 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49411 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49412 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49413 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49414 'just inserted' FROM t0_template
49415 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49416 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
49418 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49419 f_charbig = 'updated by trigger'
49420 WHERE f_int1 = - old.f_int1;
49422 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
49423 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49425 # check trigger-6 success: 1
49426 DROP TRIGGER trg_1;
49427 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49428 f_int2 = CAST(f_char1 AS SIGNED INT),
49429 f_charbig = 'just inserted'
49430 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49432 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49433 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49434 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49435 'just inserted' FROM t0_template
49436 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49437 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
49439 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49440 f_charbig = 'updated by trigger'
49441 WHERE f_int1 = - old.f_int1;
49444 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49446 # check trigger-7 success: 1
49447 DROP TRIGGER trg_1;
49448 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49449 f_int2 = CAST(f_char1 AS SIGNED INT),
49450 f_charbig = 'just inserted'
49451 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49453 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49454 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49455 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49456 'just inserted' FROM t0_template
49457 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49458 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
49460 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49461 f_charbig = 'updated by trigger'
49462 WHERE f_int1 = - old.f_int1;
49465 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49467 # check trigger-8 success: 1
49468 DROP TRIGGER trg_1;
49469 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49470 f_int2 = CAST(f_char1 AS SIGNED INT),
49471 f_charbig = 'just inserted'
49472 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49474 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49476 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49477 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
49479 SET new.f_int1 = old.f_int1 + @max_row,
49480 new.f_int2 = old.f_int2 - @max_row,
49481 new.f_charbig = '####updated per update trigger####';
49484 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
49485 f_charbig = '####updated per update statement itself####';
49487 # check trigger-9 success: 1
49488 DROP TRIGGER trg_2;
49489 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49490 f_int2 = CAST(f_char1 AS SIGNED INT),
49491 f_charbig = CONCAT('===',f_char1,'===');
49492 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
49494 SET new.f_int1 = new.f_int1 + @max_row,
49495 new.f_int2 = new.f_int2 - @max_row,
49496 new.f_charbig = '####updated per update trigger####';
49499 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
49500 f_charbig = '####updated per update statement itself####';
49502 # check trigger-10 success: 1
49503 DROP TRIGGER trg_2;
49504 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49505 f_int2 = CAST(f_char1 AS SIGNED INT),
49506 f_charbig = CONCAT('===',f_char1,'===');
49507 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
49509 SET new.f_int1 = @my_max1 + @counter,
49510 new.f_int2 = @my_min2 - @counter,
49511 new.f_charbig = '####updated per insert trigger####';
49512 SET @counter = @counter + 1;
49515 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
49516 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49517 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
49518 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
49519 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
49521 DROP TRIGGER trg_3;
49523 # check trigger-11 success: 1
49525 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
49526 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
49527 AND f_charbig = '####updated per insert trigger####';
49528 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
49530 SET new.f_int1 = @my_max1 + @counter,
49531 new.f_int2 = @my_min2 - @counter,
49532 new.f_charbig = '####updated per insert trigger####';
49533 SET @counter = @counter + 1;
49536 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
49537 INSERT INTO t1 (f_char1, f_char2, f_charbig)
49538 SELECT CAST(f_int1 AS CHAR),
49539 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
49540 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
49542 DROP TRIGGER trg_3;
49544 # check trigger-12 success: 1
49546 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
49547 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
49548 AND f_charbig = '####updated per insert trigger####';
49550 Table Op Msg_type Msg_text
49551 test.t1 analyze status OK
49552 CHECK TABLE t1 EXTENDED;
49553 Table Op Msg_type Msg_text
49554 test.t1 check status OK
49555 CHECKSUM TABLE t1 EXTENDED;
49557 test.t1 <some_value>
49559 Table Op Msg_type Msg_text
49560 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
49561 test.t1 optimize status OK
49562 # check layout success: 1
49563 REPAIR TABLE t1 EXTENDED;
49564 Table Op Msg_type Msg_text
49565 test.t1 repair note The storage engine for the table doesn't support repair
49566 # check layout success: 1
49569 # check TRUNCATE success: 1
49570 # check layout success: 1
49571 # End usability test (inc/partition_check.inc)
49578 f_charbig VARCHAR(1000)
49579 , UNIQUE INDEX uidx (f_int1,f_int2)
49581 PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
49582 (PARTITION parta VALUES LESS THAN (0),
49583 PARTITION partb VALUES LESS THAN (5),
49584 PARTITION partc VALUES LESS THAN (10),
49585 PARTITION partd VALUES LESS THAN (10 + 5),
49586 PARTITION parte VALUES LESS THAN (20),
49587 PARTITION partf VALUES LESS THAN (2147483646));
49588 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
49589 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
49590 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
49591 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
49592 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
49593 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
49594 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
49595 # Start usability test (inc/partition_check.inc)
49597 SHOW CREATE TABLE t1;
49599 t1 CREATE TABLE `t1` (
49600 `f_int1` mediumint(9) DEFAULT NULL,
49601 `f_int2` mediumint(9) DEFAULT NULL,
49602 `f_char1` char(20) DEFAULT NULL,
49603 `f_char2` char(20) DEFAULT NULL,
49604 `f_charbig` varchar(1000) DEFAULT NULL,
49605 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
49606 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
49607 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
49608 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
49609 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
49610 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
49611 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
49612 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
49613 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
49615 # check prerequisites-1 success: 1
49616 # check COUNT(*) success: 1
49617 # check MIN/MAX(f_int1) success: 1
49618 # check MIN/MAX(f_int2) success: 1
49619 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49620 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
49621 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
49622 WHERE f_int1 IN (2,3);
49623 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
49624 # check prerequisites-3 success: 1
49625 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
49626 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49627 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
49628 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
49629 WHERE f_int1 IN (2,3);
49630 DELETE FROM t1 WHERE f_charbig = 'delete me';
49631 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49632 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
49633 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
49634 WHERE f_int1 IN (2,3);
49635 DELETE FROM t1 WHERE f_charbig = 'delete me';
49636 # check read via f_int1 success: 1
49637 # check read via f_int2 success: 1
49639 # check multiple-1 success: 1
49640 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
49642 # check multiple-2 success: 1
49643 INSERT INTO t1 SELECT * FROM t0_template
49644 WHERE MOD(f_int1,3) = 0;
49646 # check multiple-3 success: 1
49647 UPDATE t1 SET f_int1 = f_int1 + @max_row
49648 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
49649 AND @max_row_div2 + @max_row_div4;
49651 # check multiple-4 success: 1
49653 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
49654 AND @max_row_div2 + @max_row_div4 + @max_row;
49656 # check multiple-5 success: 1
49657 SELECT COUNT(*) INTO @try_count FROM t0_template
49658 WHERE MOD(f_int1,3) = 0
49659 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
49660 SELECT COUNT(*) INTO @clash_count
49661 FROM t1 INNER JOIN t0_template USING(f_int1)
49662 WHERE MOD(f_int1,3) = 0
49663 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
49664 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
49666 SET f_int1 = @cur_value , f_int2 = @cur_value,
49667 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
49668 f_charbig = '#SINGLE#';
49670 # check single-1 success: 1
49671 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
49673 SET f_int1 = @cur_value , f_int2 = @cur_value,
49674 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
49675 f_charbig = '#SINGLE#';
49677 # check single-2 success: 1
49678 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
49679 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
49680 UPDATE t1 SET f_int1 = @cur_value2
49681 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
49683 # check single-3 success: 1
49684 SET @cur_value1= -1;
49685 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
49686 UPDATE t1 SET f_int1 = @cur_value1
49687 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
49689 # check single-4 success: 1
49690 SELECT MAX(f_int1) INTO @cur_value FROM t1;
49691 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
49693 # check single-5 success: 1
49694 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
49696 # check single-6 success: 1
49697 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
49699 Warning 1264 Out of range value for column 'f_int1' at row 1
49700 Warning 1264 Out of range value for column 'f_int2' at row 1
49702 # check single-7 success: 1
49703 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
49704 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
49705 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
49706 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
49707 f_charbig = '#NULL#';
49709 SET f_int1 = NULL , f_int2 = -@max_row,
49710 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
49711 f_charbig = '#NULL#';
49712 # check null success: 1
49714 # check null-1 success: 1
49715 UPDATE t1 SET f_int1 = -@max_row
49716 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
49717 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
49719 # check null-2 success: 1
49720 UPDATE t1 SET f_int1 = NULL
49721 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
49722 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
49724 # check null-3 success: 1
49726 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
49727 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
49729 # check null-4 success: 1
49731 WHERE f_int1 = 0 AND f_int2 = 0
49732 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
49733 AND f_charbig = '#NULL#';
49734 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49735 SELECT f_int1, f_int1, '', '', 'was inserted'
49736 FROM t0_template source_tab
49737 WHERE MOD(f_int1,3) = 0
49738 AND f_int1 BETWEEN @max_row_div2 AND @max_row
49740 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
49741 f_int2 = 2 * @max_row + source_tab.f_int1,
49742 f_charbig = 'was updated';
49744 # check unique-1-a success: 1
49746 # check unique-1-b success: 1
49747 DELETE FROM t1 WHERE f_charbig = 'was inserted';
49748 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49749 f_int2 = CAST(f_char1 AS SIGNED INT),
49750 f_charbig = CONCAT('===',f_char1,'===')
49751 WHERE f_charbig = 'was updated';
49752 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49753 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
49754 FROM t0_template source_tab
49755 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
49757 # check replace success: 1
49759 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
49761 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
49762 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
49763 UPDATE t1 SET f_int2 = f_int1,
49764 f_char1 = CAST(f_int1 AS CHAR),
49765 f_char2 = CAST(f_int1 AS CHAR),
49766 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
49767 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
49769 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49770 SELECT f_int1, f_int1, '', '', 'was inserted'
49771 FROM t0_template source_tab
49772 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
49774 # check transactions-1 success: 1
49777 # check transactions-2 success: 1
49780 # check transactions-3 success: 1
49781 DELETE FROM t1 WHERE f_charbig = 'was inserted';
49785 # check transactions-4 success: 1
49786 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49787 SELECT f_int1, f_int1, '', '', 'was inserted'
49788 FROM t0_template source_tab
49789 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
49791 # check transactions-5 success: 1
49794 # check transactions-6 success: 1
49795 # INFO: Storage engine used for t1 seems to be transactional.
49798 # check transactions-7 success: 1
49799 DELETE FROM t1 WHERE f_charbig = 'was inserted';
49801 SET @@session.sql_mode = 'traditional';
49802 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
49803 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
49804 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
49805 '', '', 'was inserted' FROM t0_template
49806 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
49807 ERROR 22012: Division by 0
49810 # check transactions-8 success: 1
49811 # INFO: Storage engine used for t1 seems to be able to revert
49812 # changes made by the failing statement.
49813 SET @@session.sql_mode = '';
49815 DELETE FROM t1 WHERE f_charbig = 'was inserted';
49817 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
49819 # check special-1 success: 1
49820 UPDATE t1 SET f_charbig = '';
49822 # check special-2 success: 1
49823 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
49824 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
49825 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
49826 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49827 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49828 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49829 'just inserted' FROM t0_template
49830 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49831 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
49833 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49834 f_charbig = 'updated by trigger'
49835 WHERE f_int1 = new.f_int1;
49837 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49838 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
49839 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49841 # check trigger-1 success: 1
49842 DROP TRIGGER trg_1;
49843 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49844 f_int2 = CAST(f_char1 AS SIGNED INT),
49845 f_charbig = 'just inserted'
49846 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49848 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49849 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49850 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49851 'just inserted' FROM t0_template
49852 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49853 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
49855 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49856 f_charbig = 'updated by trigger'
49857 WHERE f_int1 = new.f_int1;
49859 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49860 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
49861 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49863 # check trigger-2 success: 1
49864 DROP TRIGGER trg_1;
49865 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49866 f_int2 = CAST(f_char1 AS SIGNED INT),
49867 f_charbig = 'just inserted'
49868 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49870 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49871 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49872 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49873 'just inserted' FROM t0_template
49874 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49875 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
49877 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49878 f_charbig = 'updated by trigger'
49879 WHERE f_int1 = new.f_int1;
49881 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
49882 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49884 # check trigger-3 success: 1
49885 DROP TRIGGER trg_1;
49886 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49887 f_int2 = CAST(f_char1 AS SIGNED INT),
49888 f_charbig = 'just inserted'
49889 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49891 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49892 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49893 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49894 'just inserted' FROM t0_template
49895 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49896 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
49898 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49899 f_charbig = 'updated by trigger'
49900 WHERE f_int1 = - old.f_int1;
49902 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
49903 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49905 # check trigger-4 success: 1
49906 DROP TRIGGER trg_1;
49907 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49908 f_int2 = CAST(f_char1 AS SIGNED INT),
49909 f_charbig = 'just inserted'
49910 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49912 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49913 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49914 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49915 'just inserted' FROM t0_template
49916 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49917 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
49919 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49920 f_charbig = 'updated by trigger'
49921 WHERE f_int1 = new.f_int1;
49923 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
49924 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49926 # check trigger-5 success: 1
49927 DROP TRIGGER trg_1;
49928 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49929 f_int2 = CAST(f_char1 AS SIGNED INT),
49930 f_charbig = 'just inserted'
49931 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49933 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49934 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49935 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49936 'just inserted' FROM t0_template
49937 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49938 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
49940 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49941 f_charbig = 'updated by trigger'
49942 WHERE f_int1 = - old.f_int1;
49944 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
49945 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49947 # check trigger-6 success: 1
49948 DROP TRIGGER trg_1;
49949 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49950 f_int2 = CAST(f_char1 AS SIGNED INT),
49951 f_charbig = 'just inserted'
49952 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49954 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49955 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49956 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49957 'just inserted' FROM t0_template
49958 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49959 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
49961 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49962 f_charbig = 'updated by trigger'
49963 WHERE f_int1 = - old.f_int1;
49966 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49968 # check trigger-7 success: 1
49969 DROP TRIGGER trg_1;
49970 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49971 f_int2 = CAST(f_char1 AS SIGNED INT),
49972 f_charbig = 'just inserted'
49973 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49975 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49976 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
49977 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
49978 'just inserted' FROM t0_template
49979 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49980 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
49982 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
49983 f_charbig = 'updated by trigger'
49984 WHERE f_int1 = - old.f_int1;
49987 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
49989 # check trigger-8 success: 1
49990 DROP TRIGGER trg_1;
49991 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
49992 f_int2 = CAST(f_char1 AS SIGNED INT),
49993 f_charbig = 'just inserted'
49994 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
49996 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49998 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
49999 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
50001 SET new.f_int1 = old.f_int1 + @max_row,
50002 new.f_int2 = old.f_int2 - @max_row,
50003 new.f_charbig = '####updated per update trigger####';
50006 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
50007 f_charbig = '####updated per update statement itself####';
50009 # check trigger-9 success: 1
50010 DROP TRIGGER trg_2;
50011 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50012 f_int2 = CAST(f_char1 AS SIGNED INT),
50013 f_charbig = CONCAT('===',f_char1,'===');
50014 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
50016 SET new.f_int1 = new.f_int1 + @max_row,
50017 new.f_int2 = new.f_int2 - @max_row,
50018 new.f_charbig = '####updated per update trigger####';
50021 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
50022 f_charbig = '####updated per update statement itself####';
50024 # check trigger-10 success: 1
50025 DROP TRIGGER trg_2;
50026 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50027 f_int2 = CAST(f_char1 AS SIGNED INT),
50028 f_charbig = CONCAT('===',f_char1,'===');
50029 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
50031 SET new.f_int1 = @my_max1 + @counter,
50032 new.f_int2 = @my_min2 - @counter,
50033 new.f_charbig = '####updated per insert trigger####';
50034 SET @counter = @counter + 1;
50037 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
50038 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50039 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
50040 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
50041 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
50043 DROP TRIGGER trg_3;
50045 # check trigger-11 success: 1
50047 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
50048 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
50049 AND f_charbig = '####updated per insert trigger####';
50050 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
50052 SET new.f_int1 = @my_max1 + @counter,
50053 new.f_int2 = @my_min2 - @counter,
50054 new.f_charbig = '####updated per insert trigger####';
50055 SET @counter = @counter + 1;
50058 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
50059 INSERT INTO t1 (f_char1, f_char2, f_charbig)
50060 SELECT CAST(f_int1 AS CHAR),
50061 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
50062 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
50064 DROP TRIGGER trg_3;
50066 # check trigger-12 success: 1
50068 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
50069 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
50070 AND f_charbig = '####updated per insert trigger####';
50072 Table Op Msg_type Msg_text
50073 test.t1 analyze status OK
50074 CHECK TABLE t1 EXTENDED;
50075 Table Op Msg_type Msg_text
50076 test.t1 check status OK
50077 CHECKSUM TABLE t1 EXTENDED;
50079 test.t1 <some_value>
50081 Table Op Msg_type Msg_text
50082 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
50083 test.t1 optimize status OK
50084 # check layout success: 1
50085 REPAIR TABLE t1 EXTENDED;
50086 Table Op Msg_type Msg_text
50087 test.t1 repair note The storage engine for the table doesn't support repair
50088 # check layout success: 1
50091 # check TRUNCATE success: 1
50092 # check layout success: 1
50093 # End usability test (inc/partition_check.inc)
50100 f_charbig VARCHAR(1000)
50101 , UNIQUE INDEX uidx (f_int1,f_int2)
50103 PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
50104 (PARTITION parta VALUES LESS THAN (0),
50105 PARTITION partb VALUES LESS THAN (5),
50106 PARTITION partc VALUES LESS THAN (10),
50107 PARTITION partd VALUES LESS THAN (2147483646));
50108 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
50109 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
50110 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
50111 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
50112 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
50113 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
50114 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
50115 # Start usability test (inc/partition_check.inc)
50117 SHOW CREATE TABLE t1;
50119 t1 CREATE TABLE `t1` (
50120 `f_int1` mediumint(9) DEFAULT NULL,
50121 `f_int2` mediumint(9) DEFAULT NULL,
50122 `f_char1` char(20) DEFAULT NULL,
50123 `f_char2` char(20) DEFAULT NULL,
50124 `f_charbig` varchar(1000) DEFAULT NULL,
50125 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
50126 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
50127 /*!50100 PARTITION BY RANGE (f_int1)
50128 SUBPARTITION BY HASH (f_int2)
50130 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
50131 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
50132 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
50133 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
50135 # check prerequisites-1 success: 1
50136 # check COUNT(*) success: 1
50137 # check MIN/MAX(f_int1) success: 1
50138 # check MIN/MAX(f_int2) success: 1
50139 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50140 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
50141 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
50142 WHERE f_int1 IN (2,3);
50143 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
50144 # check prerequisites-3 success: 1
50145 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
50146 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50147 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
50148 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
50149 WHERE f_int1 IN (2,3);
50150 DELETE FROM t1 WHERE f_charbig = 'delete me';
50151 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50152 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
50153 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
50154 WHERE f_int1 IN (2,3);
50155 DELETE FROM t1 WHERE f_charbig = 'delete me';
50156 # check read via f_int1 success: 1
50157 # check read via f_int2 success: 1
50159 # check multiple-1 success: 1
50160 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
50162 # check multiple-2 success: 1
50163 INSERT INTO t1 SELECT * FROM t0_template
50164 WHERE MOD(f_int1,3) = 0;
50166 # check multiple-3 success: 1
50167 UPDATE t1 SET f_int1 = f_int1 + @max_row
50168 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
50169 AND @max_row_div2 + @max_row_div4;
50171 # check multiple-4 success: 1
50173 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
50174 AND @max_row_div2 + @max_row_div4 + @max_row;
50176 # check multiple-5 success: 1
50177 SELECT COUNT(*) INTO @try_count FROM t0_template
50178 WHERE MOD(f_int1,3) = 0
50179 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
50180 SELECT COUNT(*) INTO @clash_count
50181 FROM t1 INNER JOIN t0_template USING(f_int1)
50182 WHERE MOD(f_int1,3) = 0
50183 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
50184 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
50186 SET f_int1 = @cur_value , f_int2 = @cur_value,
50187 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
50188 f_charbig = '#SINGLE#';
50190 # check single-1 success: 1
50191 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
50193 SET f_int1 = @cur_value , f_int2 = @cur_value,
50194 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
50195 f_charbig = '#SINGLE#';
50197 # check single-2 success: 1
50198 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
50199 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
50200 UPDATE t1 SET f_int1 = @cur_value2
50201 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
50203 # check single-3 success: 1
50204 SET @cur_value1= -1;
50205 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
50206 UPDATE t1 SET f_int1 = @cur_value1
50207 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
50209 # check single-4 success: 1
50210 SELECT MAX(f_int1) INTO @cur_value FROM t1;
50211 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
50213 # check single-5 success: 1
50214 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
50216 # check single-6 success: 1
50217 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
50219 Warning 1264 Out of range value for column 'f_int1' at row 1
50220 Warning 1264 Out of range value for column 'f_int2' at row 1
50222 # check single-7 success: 1
50223 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
50224 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
50225 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
50226 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
50227 f_charbig = '#NULL#';
50229 SET f_int1 = NULL , f_int2 = -@max_row,
50230 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
50231 f_charbig = '#NULL#';
50232 # check null success: 1
50234 # check null-1 success: 1
50235 UPDATE t1 SET f_int1 = -@max_row
50236 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
50237 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
50239 # check null-2 success: 1
50240 UPDATE t1 SET f_int1 = NULL
50241 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
50242 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
50244 # check null-3 success: 1
50246 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
50247 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
50249 # check null-4 success: 1
50251 WHERE f_int1 = 0 AND f_int2 = 0
50252 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
50253 AND f_charbig = '#NULL#';
50254 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50255 SELECT f_int1, f_int1, '', '', 'was inserted'
50256 FROM t0_template source_tab
50257 WHERE MOD(f_int1,3) = 0
50258 AND f_int1 BETWEEN @max_row_div2 AND @max_row
50260 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
50261 f_int2 = 2 * @max_row + source_tab.f_int1,
50262 f_charbig = 'was updated';
50264 # check unique-1-a success: 1
50266 # check unique-1-b success: 1
50267 DELETE FROM t1 WHERE f_charbig = 'was inserted';
50268 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50269 f_int2 = CAST(f_char1 AS SIGNED INT),
50270 f_charbig = CONCAT('===',f_char1,'===')
50271 WHERE f_charbig = 'was updated';
50272 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50273 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
50274 FROM t0_template source_tab
50275 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
50277 # check replace success: 1
50279 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
50281 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
50282 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
50283 UPDATE t1 SET f_int2 = f_int1,
50284 f_char1 = CAST(f_int1 AS CHAR),
50285 f_char2 = CAST(f_int1 AS CHAR),
50286 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
50287 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
50289 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50290 SELECT f_int1, f_int1, '', '', 'was inserted'
50291 FROM t0_template source_tab
50292 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
50294 # check transactions-1 success: 1
50297 # check transactions-2 success: 1
50300 # check transactions-3 success: 1
50301 DELETE FROM t1 WHERE f_charbig = 'was inserted';
50305 # check transactions-4 success: 1
50306 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50307 SELECT f_int1, f_int1, '', '', 'was inserted'
50308 FROM t0_template source_tab
50309 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
50311 # check transactions-5 success: 1
50314 # check transactions-6 success: 1
50315 # INFO: Storage engine used for t1 seems to be transactional.
50318 # check transactions-7 success: 1
50319 DELETE FROM t1 WHERE f_charbig = 'was inserted';
50321 SET @@session.sql_mode = 'traditional';
50322 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
50323 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50324 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
50325 '', '', 'was inserted' FROM t0_template
50326 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
50327 ERROR 22012: Division by 0
50330 # check transactions-8 success: 1
50331 # INFO: Storage engine used for t1 seems to be able to revert
50332 # changes made by the failing statement.
50333 SET @@session.sql_mode = '';
50335 DELETE FROM t1 WHERE f_charbig = 'was inserted';
50337 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
50339 # check special-1 success: 1
50340 UPDATE t1 SET f_charbig = '';
50342 # check special-2 success: 1
50343 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
50344 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
50345 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
50346 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50347 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50348 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50349 'just inserted' FROM t0_template
50350 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50351 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
50353 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50354 f_charbig = 'updated by trigger'
50355 WHERE f_int1 = new.f_int1;
50357 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50358 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
50359 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50361 # check trigger-1 success: 1
50362 DROP TRIGGER trg_1;
50363 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50364 f_int2 = CAST(f_char1 AS SIGNED INT),
50365 f_charbig = 'just inserted'
50366 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50368 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50369 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50370 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50371 'just inserted' FROM t0_template
50372 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50373 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
50375 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50376 f_charbig = 'updated by trigger'
50377 WHERE f_int1 = new.f_int1;
50379 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50380 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
50381 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50383 # check trigger-2 success: 1
50384 DROP TRIGGER trg_1;
50385 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50386 f_int2 = CAST(f_char1 AS SIGNED INT),
50387 f_charbig = 'just inserted'
50388 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50390 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50391 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50392 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50393 'just inserted' FROM t0_template
50394 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50395 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
50397 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50398 f_charbig = 'updated by trigger'
50399 WHERE f_int1 = new.f_int1;
50401 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
50402 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50404 # check trigger-3 success: 1
50405 DROP TRIGGER trg_1;
50406 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50407 f_int2 = CAST(f_char1 AS SIGNED INT),
50408 f_charbig = 'just inserted'
50409 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50411 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50412 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50413 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50414 'just inserted' FROM t0_template
50415 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50416 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
50418 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50419 f_charbig = 'updated by trigger'
50420 WHERE f_int1 = - old.f_int1;
50422 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
50423 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50425 # check trigger-4 success: 1
50426 DROP TRIGGER trg_1;
50427 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50428 f_int2 = CAST(f_char1 AS SIGNED INT),
50429 f_charbig = 'just inserted'
50430 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50432 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50433 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50434 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50435 'just inserted' FROM t0_template
50436 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50437 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
50439 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50440 f_charbig = 'updated by trigger'
50441 WHERE f_int1 = new.f_int1;
50443 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
50444 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50446 # check trigger-5 success: 1
50447 DROP TRIGGER trg_1;
50448 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50449 f_int2 = CAST(f_char1 AS SIGNED INT),
50450 f_charbig = 'just inserted'
50451 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50453 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50454 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50455 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50456 'just inserted' FROM t0_template
50457 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50458 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
50460 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50461 f_charbig = 'updated by trigger'
50462 WHERE f_int1 = - old.f_int1;
50464 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
50465 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50467 # check trigger-6 success: 1
50468 DROP TRIGGER trg_1;
50469 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50470 f_int2 = CAST(f_char1 AS SIGNED INT),
50471 f_charbig = 'just inserted'
50472 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50474 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50475 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50476 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50477 'just inserted' FROM t0_template
50478 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50479 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
50481 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50482 f_charbig = 'updated by trigger'
50483 WHERE f_int1 = - old.f_int1;
50486 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50488 # check trigger-7 success: 1
50489 DROP TRIGGER trg_1;
50490 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50491 f_int2 = CAST(f_char1 AS SIGNED INT),
50492 f_charbig = 'just inserted'
50493 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50495 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50496 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50497 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50498 'just inserted' FROM t0_template
50499 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50500 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
50502 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50503 f_charbig = 'updated by trigger'
50504 WHERE f_int1 = - old.f_int1;
50507 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50509 # check trigger-8 success: 1
50510 DROP TRIGGER trg_1;
50511 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50512 f_int2 = CAST(f_char1 AS SIGNED INT),
50513 f_charbig = 'just inserted'
50514 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50516 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50518 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50519 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
50521 SET new.f_int1 = old.f_int1 + @max_row,
50522 new.f_int2 = old.f_int2 - @max_row,
50523 new.f_charbig = '####updated per update trigger####';
50526 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
50527 f_charbig = '####updated per update statement itself####';
50529 # check trigger-9 success: 1
50530 DROP TRIGGER trg_2;
50531 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50532 f_int2 = CAST(f_char1 AS SIGNED INT),
50533 f_charbig = CONCAT('===',f_char1,'===');
50534 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
50536 SET new.f_int1 = new.f_int1 + @max_row,
50537 new.f_int2 = new.f_int2 - @max_row,
50538 new.f_charbig = '####updated per update trigger####';
50541 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
50542 f_charbig = '####updated per update statement itself####';
50544 # check trigger-10 success: 1
50545 DROP TRIGGER trg_2;
50546 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50547 f_int2 = CAST(f_char1 AS SIGNED INT),
50548 f_charbig = CONCAT('===',f_char1,'===');
50549 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
50551 SET new.f_int1 = @my_max1 + @counter,
50552 new.f_int2 = @my_min2 - @counter,
50553 new.f_charbig = '####updated per insert trigger####';
50554 SET @counter = @counter + 1;
50557 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
50558 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50559 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
50560 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
50561 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
50563 DROP TRIGGER trg_3;
50565 # check trigger-11 success: 1
50567 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
50568 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
50569 AND f_charbig = '####updated per insert trigger####';
50570 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
50572 SET new.f_int1 = @my_max1 + @counter,
50573 new.f_int2 = @my_min2 - @counter,
50574 new.f_charbig = '####updated per insert trigger####';
50575 SET @counter = @counter + 1;
50578 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
50579 INSERT INTO t1 (f_char1, f_char2, f_charbig)
50580 SELECT CAST(f_int1 AS CHAR),
50581 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
50582 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
50584 DROP TRIGGER trg_3;
50586 # check trigger-12 success: 1
50588 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
50589 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
50590 AND f_charbig = '####updated per insert trigger####';
50592 Table Op Msg_type Msg_text
50593 test.t1 analyze status OK
50594 CHECK TABLE t1 EXTENDED;
50595 Table Op Msg_type Msg_text
50596 test.t1 check status OK
50597 CHECKSUM TABLE t1 EXTENDED;
50599 test.t1 <some_value>
50601 Table Op Msg_type Msg_text
50602 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
50603 test.t1 optimize status OK
50604 # check layout success: 1
50605 REPAIR TABLE t1 EXTENDED;
50606 Table Op Msg_type Msg_text
50607 test.t1 repair note The storage engine for the table doesn't support repair
50608 # check layout success: 1
50611 # check TRUNCATE success: 1
50612 # check layout success: 1
50613 # End usability test (inc/partition_check.inc)
50620 f_charbig VARCHAR(1000)
50621 , UNIQUE INDEX uidx (f_int1,f_int2)
50623 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
50624 (PARTITION part1 VALUES LESS THAN (0)
50625 (SUBPARTITION subpart11, SUBPARTITION subpart12),
50626 PARTITION part2 VALUES LESS THAN (5)
50627 (SUBPARTITION subpart21, SUBPARTITION subpart22),
50628 PARTITION part3 VALUES LESS THAN (10)
50629 (SUBPARTITION subpart31, SUBPARTITION subpart32),
50630 PARTITION part4 VALUES LESS THAN (2147483646)
50631 (SUBPARTITION subpart41, SUBPARTITION subpart42));
50632 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
50633 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
50634 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
50635 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
50636 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
50637 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
50638 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
50639 # Start usability test (inc/partition_check.inc)
50641 SHOW CREATE TABLE t1;
50643 t1 CREATE TABLE `t1` (
50644 `f_int1` mediumint(9) DEFAULT NULL,
50645 `f_int2` mediumint(9) DEFAULT NULL,
50646 `f_char1` char(20) DEFAULT NULL,
50647 `f_char2` char(20) DEFAULT NULL,
50648 `f_charbig` varchar(1000) DEFAULT NULL,
50649 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
50650 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
50651 /*!50100 PARTITION BY RANGE (f_int1)
50652 SUBPARTITION BY KEY (f_int2)
50653 (PARTITION part1 VALUES LESS THAN (0)
50654 (SUBPARTITION subpart11 ENGINE = InnoDB,
50655 SUBPARTITION subpart12 ENGINE = InnoDB),
50656 PARTITION part2 VALUES LESS THAN (5)
50657 (SUBPARTITION subpart21 ENGINE = InnoDB,
50658 SUBPARTITION subpart22 ENGINE = InnoDB),
50659 PARTITION part3 VALUES LESS THAN (10)
50660 (SUBPARTITION subpart31 ENGINE = InnoDB,
50661 SUBPARTITION subpart32 ENGINE = InnoDB),
50662 PARTITION part4 VALUES LESS THAN (2147483646)
50663 (SUBPARTITION subpart41 ENGINE = InnoDB,
50664 SUBPARTITION subpart42 ENGINE = InnoDB)) */
50666 # check prerequisites-1 success: 1
50667 # check COUNT(*) success: 1
50668 # check MIN/MAX(f_int1) success: 1
50669 # check MIN/MAX(f_int2) success: 1
50670 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50671 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
50672 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
50673 WHERE f_int1 IN (2,3);
50674 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
50675 # check prerequisites-3 success: 1
50676 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
50677 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50678 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
50679 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
50680 WHERE f_int1 IN (2,3);
50681 DELETE FROM t1 WHERE f_charbig = 'delete me';
50682 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50683 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
50684 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
50685 WHERE f_int1 IN (2,3);
50686 DELETE FROM t1 WHERE f_charbig = 'delete me';
50687 # check read via f_int1 success: 1
50688 # check read via f_int2 success: 1
50690 # check multiple-1 success: 1
50691 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
50693 # check multiple-2 success: 1
50694 INSERT INTO t1 SELECT * FROM t0_template
50695 WHERE MOD(f_int1,3) = 0;
50697 # check multiple-3 success: 1
50698 UPDATE t1 SET f_int1 = f_int1 + @max_row
50699 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
50700 AND @max_row_div2 + @max_row_div4;
50702 # check multiple-4 success: 1
50704 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
50705 AND @max_row_div2 + @max_row_div4 + @max_row;
50707 # check multiple-5 success: 1
50708 SELECT COUNT(*) INTO @try_count FROM t0_template
50709 WHERE MOD(f_int1,3) = 0
50710 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
50711 SELECT COUNT(*) INTO @clash_count
50712 FROM t1 INNER JOIN t0_template USING(f_int1)
50713 WHERE MOD(f_int1,3) = 0
50714 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
50715 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
50717 SET f_int1 = @cur_value , f_int2 = @cur_value,
50718 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
50719 f_charbig = '#SINGLE#';
50721 # check single-1 success: 1
50722 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
50724 SET f_int1 = @cur_value , f_int2 = @cur_value,
50725 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
50726 f_charbig = '#SINGLE#';
50728 # check single-2 success: 1
50729 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
50730 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
50731 UPDATE t1 SET f_int1 = @cur_value2
50732 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
50734 # check single-3 success: 1
50735 SET @cur_value1= -1;
50736 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
50737 UPDATE t1 SET f_int1 = @cur_value1
50738 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
50740 # check single-4 success: 1
50741 SELECT MAX(f_int1) INTO @cur_value FROM t1;
50742 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
50744 # check single-5 success: 1
50745 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
50747 # check single-6 success: 1
50748 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
50750 Warning 1264 Out of range value for column 'f_int1' at row 1
50751 Warning 1264 Out of range value for column 'f_int2' at row 1
50753 # check single-7 success: 1
50754 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
50755 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
50756 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
50757 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
50758 f_charbig = '#NULL#';
50760 SET f_int1 = NULL , f_int2 = -@max_row,
50761 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
50762 f_charbig = '#NULL#';
50763 # check null success: 1
50765 # check null-1 success: 1
50766 UPDATE t1 SET f_int1 = -@max_row
50767 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
50768 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
50770 # check null-2 success: 1
50771 UPDATE t1 SET f_int1 = NULL
50772 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
50773 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
50775 # check null-3 success: 1
50777 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
50778 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
50780 # check null-4 success: 1
50782 WHERE f_int1 = 0 AND f_int2 = 0
50783 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
50784 AND f_charbig = '#NULL#';
50785 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50786 SELECT f_int1, f_int1, '', '', 'was inserted'
50787 FROM t0_template source_tab
50788 WHERE MOD(f_int1,3) = 0
50789 AND f_int1 BETWEEN @max_row_div2 AND @max_row
50791 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
50792 f_int2 = 2 * @max_row + source_tab.f_int1,
50793 f_charbig = 'was updated';
50795 # check unique-1-a success: 1
50797 # check unique-1-b success: 1
50798 DELETE FROM t1 WHERE f_charbig = 'was inserted';
50799 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50800 f_int2 = CAST(f_char1 AS SIGNED INT),
50801 f_charbig = CONCAT('===',f_char1,'===')
50802 WHERE f_charbig = 'was updated';
50803 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50804 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
50805 FROM t0_template source_tab
50806 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
50808 # check replace success: 1
50810 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
50812 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
50813 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
50814 UPDATE t1 SET f_int2 = f_int1,
50815 f_char1 = CAST(f_int1 AS CHAR),
50816 f_char2 = CAST(f_int1 AS CHAR),
50817 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
50818 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
50820 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50821 SELECT f_int1, f_int1, '', '', 'was inserted'
50822 FROM t0_template source_tab
50823 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
50825 # check transactions-1 success: 1
50828 # check transactions-2 success: 1
50831 # check transactions-3 success: 1
50832 DELETE FROM t1 WHERE f_charbig = 'was inserted';
50836 # check transactions-4 success: 1
50837 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50838 SELECT f_int1, f_int1, '', '', 'was inserted'
50839 FROM t0_template source_tab
50840 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
50842 # check transactions-5 success: 1
50845 # check transactions-6 success: 1
50846 # INFO: Storage engine used for t1 seems to be transactional.
50849 # check transactions-7 success: 1
50850 DELETE FROM t1 WHERE f_charbig = 'was inserted';
50852 SET @@session.sql_mode = 'traditional';
50853 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
50854 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
50855 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
50856 '', '', 'was inserted' FROM t0_template
50857 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
50858 ERROR 22012: Division by 0
50861 # check transactions-8 success: 1
50862 # INFO: Storage engine used for t1 seems to be able to revert
50863 # changes made by the failing statement.
50864 SET @@session.sql_mode = '';
50866 DELETE FROM t1 WHERE f_charbig = 'was inserted';
50868 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
50870 # check special-1 success: 1
50871 UPDATE t1 SET f_charbig = '';
50873 # check special-2 success: 1
50874 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
50875 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
50876 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
50877 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50878 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50879 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50880 'just inserted' FROM t0_template
50881 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50882 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
50884 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50885 f_charbig = 'updated by trigger'
50886 WHERE f_int1 = new.f_int1;
50888 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50889 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
50890 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50892 # check trigger-1 success: 1
50893 DROP TRIGGER trg_1;
50894 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50895 f_int2 = CAST(f_char1 AS SIGNED INT),
50896 f_charbig = 'just inserted'
50897 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50899 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50900 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50901 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50902 'just inserted' FROM t0_template
50903 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50904 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
50906 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50907 f_charbig = 'updated by trigger'
50908 WHERE f_int1 = new.f_int1;
50910 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50911 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
50912 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50914 # check trigger-2 success: 1
50915 DROP TRIGGER trg_1;
50916 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50917 f_int2 = CAST(f_char1 AS SIGNED INT),
50918 f_charbig = 'just inserted'
50919 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50921 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50922 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50923 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50924 'just inserted' FROM t0_template
50925 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50926 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
50928 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50929 f_charbig = 'updated by trigger'
50930 WHERE f_int1 = new.f_int1;
50932 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
50933 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50935 # check trigger-3 success: 1
50936 DROP TRIGGER trg_1;
50937 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50938 f_int2 = CAST(f_char1 AS SIGNED INT),
50939 f_charbig = 'just inserted'
50940 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50942 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50943 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50944 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50945 'just inserted' FROM t0_template
50946 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50947 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
50949 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50950 f_charbig = 'updated by trigger'
50951 WHERE f_int1 = - old.f_int1;
50953 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
50954 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50956 # check trigger-4 success: 1
50957 DROP TRIGGER trg_1;
50958 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50959 f_int2 = CAST(f_char1 AS SIGNED INT),
50960 f_charbig = 'just inserted'
50961 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50963 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50964 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50965 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50966 'just inserted' FROM t0_template
50967 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50968 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
50970 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50971 f_charbig = 'updated by trigger'
50972 WHERE f_int1 = new.f_int1;
50974 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
50975 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50977 # check trigger-5 success: 1
50978 DROP TRIGGER trg_1;
50979 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
50980 f_int2 = CAST(f_char1 AS SIGNED INT),
50981 f_charbig = 'just inserted'
50982 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
50984 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50985 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
50986 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
50987 'just inserted' FROM t0_template
50988 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
50989 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
50991 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
50992 f_charbig = 'updated by trigger'
50993 WHERE f_int1 = - old.f_int1;
50995 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
50996 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
50998 # check trigger-6 success: 1
50999 DROP TRIGGER trg_1;
51000 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51001 f_int2 = CAST(f_char1 AS SIGNED INT),
51002 f_charbig = 'just inserted'
51003 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51005 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51006 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51007 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51008 'just inserted' FROM t0_template
51009 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51010 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
51012 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51013 f_charbig = 'updated by trigger'
51014 WHERE f_int1 = - old.f_int1;
51017 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51019 # check trigger-7 success: 1
51020 DROP TRIGGER trg_1;
51021 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51022 f_int2 = CAST(f_char1 AS SIGNED INT),
51023 f_charbig = 'just inserted'
51024 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51026 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51027 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51028 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51029 'just inserted' FROM t0_template
51030 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51031 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
51033 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51034 f_charbig = 'updated by trigger'
51035 WHERE f_int1 = - old.f_int1;
51038 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51040 # check trigger-8 success: 1
51041 DROP TRIGGER trg_1;
51042 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51043 f_int2 = CAST(f_char1 AS SIGNED INT),
51044 f_charbig = 'just inserted'
51045 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51047 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51049 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51050 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
51052 SET new.f_int1 = old.f_int1 + @max_row,
51053 new.f_int2 = old.f_int2 - @max_row,
51054 new.f_charbig = '####updated per update trigger####';
51057 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
51058 f_charbig = '####updated per update statement itself####';
51060 # check trigger-9 success: 1
51061 DROP TRIGGER trg_2;
51062 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51063 f_int2 = CAST(f_char1 AS SIGNED INT),
51064 f_charbig = CONCAT('===',f_char1,'===');
51065 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
51067 SET new.f_int1 = new.f_int1 + @max_row,
51068 new.f_int2 = new.f_int2 - @max_row,
51069 new.f_charbig = '####updated per update trigger####';
51072 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
51073 f_charbig = '####updated per update statement itself####';
51075 # check trigger-10 success: 1
51076 DROP TRIGGER trg_2;
51077 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51078 f_int2 = CAST(f_char1 AS SIGNED INT),
51079 f_charbig = CONCAT('===',f_char1,'===');
51080 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
51082 SET new.f_int1 = @my_max1 + @counter,
51083 new.f_int2 = @my_min2 - @counter,
51084 new.f_charbig = '####updated per insert trigger####';
51085 SET @counter = @counter + 1;
51088 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
51089 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51090 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
51091 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
51092 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
51094 DROP TRIGGER trg_3;
51096 # check trigger-11 success: 1
51098 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
51099 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
51100 AND f_charbig = '####updated per insert trigger####';
51101 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
51103 SET new.f_int1 = @my_max1 + @counter,
51104 new.f_int2 = @my_min2 - @counter,
51105 new.f_charbig = '####updated per insert trigger####';
51106 SET @counter = @counter + 1;
51109 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
51110 INSERT INTO t1 (f_char1, f_char2, f_charbig)
51111 SELECT CAST(f_int1 AS CHAR),
51112 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
51113 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
51115 DROP TRIGGER trg_3;
51117 # check trigger-12 success: 1
51119 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
51120 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
51121 AND f_charbig = '####updated per insert trigger####';
51123 Table Op Msg_type Msg_text
51124 test.t1 analyze status OK
51125 CHECK TABLE t1 EXTENDED;
51126 Table Op Msg_type Msg_text
51127 test.t1 check status OK
51128 CHECKSUM TABLE t1 EXTENDED;
51130 test.t1 <some_value>
51132 Table Op Msg_type Msg_text
51133 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
51134 test.t1 optimize status OK
51135 # check layout success: 1
51136 REPAIR TABLE t1 EXTENDED;
51137 Table Op Msg_type Msg_text
51138 test.t1 repair note The storage engine for the table doesn't support repair
51139 # check layout success: 1
51142 # check TRUNCATE success: 1
51143 # check layout success: 1
51144 # End usability test (inc/partition_check.inc)
51151 f_charbig VARCHAR(1000)
51152 , UNIQUE INDEX uidx (f_int1,f_int2)
51154 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
51155 (PARTITION part1 VALUES IN (0)
51156 (SUBPARTITION sp11, SUBPARTITION sp12),
51157 PARTITION part2 VALUES IN (1)
51158 (SUBPARTITION sp21, SUBPARTITION sp22),
51159 PARTITION part3 VALUES IN (2)
51160 (SUBPARTITION sp31, SUBPARTITION sp32),
51161 PARTITION part4 VALUES IN (NULL)
51162 (SUBPARTITION sp41, SUBPARTITION sp42));
51163 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
51164 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
51165 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
51166 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
51167 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
51168 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
51169 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
51170 # Start usability test (inc/partition_check.inc)
51172 SHOW CREATE TABLE t1;
51174 t1 CREATE TABLE `t1` (
51175 `f_int1` mediumint(9) DEFAULT NULL,
51176 `f_int2` mediumint(9) DEFAULT NULL,
51177 `f_char1` char(20) DEFAULT NULL,
51178 `f_char2` char(20) DEFAULT NULL,
51179 `f_charbig` varchar(1000) DEFAULT NULL,
51180 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
51181 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
51182 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
51183 SUBPARTITION BY HASH (f_int2 + 1)
51184 (PARTITION part1 VALUES IN (0)
51185 (SUBPARTITION sp11 ENGINE = InnoDB,
51186 SUBPARTITION sp12 ENGINE = InnoDB),
51187 PARTITION part2 VALUES IN (1)
51188 (SUBPARTITION sp21 ENGINE = InnoDB,
51189 SUBPARTITION sp22 ENGINE = InnoDB),
51190 PARTITION part3 VALUES IN (2)
51191 (SUBPARTITION sp31 ENGINE = InnoDB,
51192 SUBPARTITION sp32 ENGINE = InnoDB),
51193 PARTITION part4 VALUES IN (NULL)
51194 (SUBPARTITION sp41 ENGINE = InnoDB,
51195 SUBPARTITION sp42 ENGINE = InnoDB)) */
51197 # check prerequisites-1 success: 1
51198 # check COUNT(*) success: 1
51199 # check MIN/MAX(f_int1) success: 1
51200 # check MIN/MAX(f_int2) success: 1
51201 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51202 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
51203 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
51204 WHERE f_int1 IN (2,3);
51205 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
51206 # check prerequisites-3 success: 1
51207 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
51208 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51209 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
51210 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
51211 WHERE f_int1 IN (2,3);
51212 DELETE FROM t1 WHERE f_charbig = 'delete me';
51213 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51214 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
51215 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
51216 WHERE f_int1 IN (2,3);
51217 DELETE FROM t1 WHERE f_charbig = 'delete me';
51218 # check read via f_int1 success: 1
51219 # check read via f_int2 success: 1
51221 # check multiple-1 success: 1
51222 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
51224 # check multiple-2 success: 1
51225 INSERT INTO t1 SELECT * FROM t0_template
51226 WHERE MOD(f_int1,3) = 0;
51228 # check multiple-3 success: 1
51229 UPDATE t1 SET f_int1 = f_int1 + @max_row
51230 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
51231 AND @max_row_div2 + @max_row_div4;
51233 # check multiple-4 success: 1
51235 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
51236 AND @max_row_div2 + @max_row_div4 + @max_row;
51238 # check multiple-5 success: 1
51239 SELECT COUNT(*) INTO @try_count FROM t0_template
51240 WHERE MOD(f_int1,3) = 0
51241 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
51242 SELECT COUNT(*) INTO @clash_count
51243 FROM t1 INNER JOIN t0_template USING(f_int1)
51244 WHERE MOD(f_int1,3) = 0
51245 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
51246 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
51248 SET f_int1 = @cur_value , f_int2 = @cur_value,
51249 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
51250 f_charbig = '#SINGLE#';
51252 # check single-1 success: 1
51253 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
51255 SET f_int1 = @cur_value , f_int2 = @cur_value,
51256 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
51257 f_charbig = '#SINGLE#';
51259 # check single-2 success: 1
51260 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
51261 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
51262 UPDATE t1 SET f_int1 = @cur_value2
51263 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
51265 # check single-3 success: 1
51266 SET @cur_value1= -1;
51267 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
51268 UPDATE t1 SET f_int1 = @cur_value1
51269 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
51271 # check single-4 success: 1
51272 SELECT MAX(f_int1) INTO @cur_value FROM t1;
51273 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
51275 # check single-5 success: 1
51276 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
51278 # check single-6 success: 1
51279 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
51281 Warning 1264 Out of range value for column 'f_int1' at row 1
51282 Warning 1264 Out of range value for column 'f_int2' at row 1
51284 # check single-7 success: 1
51285 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
51286 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
51287 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
51288 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
51289 f_charbig = '#NULL#';
51291 SET f_int1 = NULL , f_int2 = -@max_row,
51292 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
51293 f_charbig = '#NULL#';
51294 # check null success: 1
51296 # check null-1 success: 1
51297 UPDATE t1 SET f_int1 = -@max_row
51298 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
51299 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
51301 # check null-2 success: 1
51302 UPDATE t1 SET f_int1 = NULL
51303 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
51304 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
51306 # check null-3 success: 1
51308 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
51309 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
51311 # check null-4 success: 1
51313 WHERE f_int1 = 0 AND f_int2 = 0
51314 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
51315 AND f_charbig = '#NULL#';
51316 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51317 SELECT f_int1, f_int1, '', '', 'was inserted'
51318 FROM t0_template source_tab
51319 WHERE MOD(f_int1,3) = 0
51320 AND f_int1 BETWEEN @max_row_div2 AND @max_row
51322 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
51323 f_int2 = 2 * @max_row + source_tab.f_int1,
51324 f_charbig = 'was updated';
51326 # check unique-1-a success: 1
51328 # check unique-1-b success: 1
51329 DELETE FROM t1 WHERE f_charbig = 'was inserted';
51330 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51331 f_int2 = CAST(f_char1 AS SIGNED INT),
51332 f_charbig = CONCAT('===',f_char1,'===')
51333 WHERE f_charbig = 'was updated';
51334 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51335 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
51336 FROM t0_template source_tab
51337 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
51339 # check replace success: 1
51341 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
51343 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
51344 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
51345 UPDATE t1 SET f_int2 = f_int1,
51346 f_char1 = CAST(f_int1 AS CHAR),
51347 f_char2 = CAST(f_int1 AS CHAR),
51348 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
51349 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
51351 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51352 SELECT f_int1, f_int1, '', '', 'was inserted'
51353 FROM t0_template source_tab
51354 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
51356 # check transactions-1 success: 1
51359 # check transactions-2 success: 1
51362 # check transactions-3 success: 1
51363 DELETE FROM t1 WHERE f_charbig = 'was inserted';
51367 # check transactions-4 success: 1
51368 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51369 SELECT f_int1, f_int1, '', '', 'was inserted'
51370 FROM t0_template source_tab
51371 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
51373 # check transactions-5 success: 1
51376 # check transactions-6 success: 1
51377 # INFO: Storage engine used for t1 seems to be transactional.
51380 # check transactions-7 success: 1
51381 DELETE FROM t1 WHERE f_charbig = 'was inserted';
51383 SET @@session.sql_mode = 'traditional';
51384 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
51385 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51386 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
51387 '', '', 'was inserted' FROM t0_template
51388 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
51389 ERROR 22012: Division by 0
51392 # check transactions-8 success: 1
51393 # INFO: Storage engine used for t1 seems to be able to revert
51394 # changes made by the failing statement.
51395 SET @@session.sql_mode = '';
51397 DELETE FROM t1 WHERE f_charbig = 'was inserted';
51399 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
51401 # check special-1 success: 1
51402 UPDATE t1 SET f_charbig = '';
51404 # check special-2 success: 1
51405 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
51406 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
51407 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
51408 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51409 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51410 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51411 'just inserted' FROM t0_template
51412 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51413 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
51415 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51416 f_charbig = 'updated by trigger'
51417 WHERE f_int1 = new.f_int1;
51419 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51420 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
51421 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51423 # check trigger-1 success: 1
51424 DROP TRIGGER trg_1;
51425 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51426 f_int2 = CAST(f_char1 AS SIGNED INT),
51427 f_charbig = 'just inserted'
51428 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51430 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51431 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51432 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51433 'just inserted' FROM t0_template
51434 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51435 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
51437 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51438 f_charbig = 'updated by trigger'
51439 WHERE f_int1 = new.f_int1;
51441 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51442 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
51443 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51445 # check trigger-2 success: 1
51446 DROP TRIGGER trg_1;
51447 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51448 f_int2 = CAST(f_char1 AS SIGNED INT),
51449 f_charbig = 'just inserted'
51450 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51452 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51453 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51454 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51455 'just inserted' FROM t0_template
51456 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51457 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
51459 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51460 f_charbig = 'updated by trigger'
51461 WHERE f_int1 = new.f_int1;
51463 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
51464 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51466 # check trigger-3 success: 1
51467 DROP TRIGGER trg_1;
51468 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51469 f_int2 = CAST(f_char1 AS SIGNED INT),
51470 f_charbig = 'just inserted'
51471 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51473 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51474 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51475 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51476 'just inserted' FROM t0_template
51477 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51478 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
51480 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51481 f_charbig = 'updated by trigger'
51482 WHERE f_int1 = - old.f_int1;
51484 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
51485 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51487 # check trigger-4 success: 1
51488 DROP TRIGGER trg_1;
51489 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51490 f_int2 = CAST(f_char1 AS SIGNED INT),
51491 f_charbig = 'just inserted'
51492 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51494 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51495 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51496 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51497 'just inserted' FROM t0_template
51498 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51499 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
51501 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51502 f_charbig = 'updated by trigger'
51503 WHERE f_int1 = new.f_int1;
51505 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
51506 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51508 # check trigger-5 success: 1
51509 DROP TRIGGER trg_1;
51510 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51511 f_int2 = CAST(f_char1 AS SIGNED INT),
51512 f_charbig = 'just inserted'
51513 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51515 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51516 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51517 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51518 'just inserted' FROM t0_template
51519 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51520 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
51522 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51523 f_charbig = 'updated by trigger'
51524 WHERE f_int1 = - old.f_int1;
51526 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
51527 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51529 # check trigger-6 success: 1
51530 DROP TRIGGER trg_1;
51531 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51532 f_int2 = CAST(f_char1 AS SIGNED INT),
51533 f_charbig = 'just inserted'
51534 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51536 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51537 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51538 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51539 'just inserted' FROM t0_template
51540 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51541 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
51543 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51544 f_charbig = 'updated by trigger'
51545 WHERE f_int1 = - old.f_int1;
51548 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51550 # check trigger-7 success: 1
51551 DROP TRIGGER trg_1;
51552 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51553 f_int2 = CAST(f_char1 AS SIGNED INT),
51554 f_charbig = 'just inserted'
51555 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51557 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51558 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51559 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51560 'just inserted' FROM t0_template
51561 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51562 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
51564 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51565 f_charbig = 'updated by trigger'
51566 WHERE f_int1 = - old.f_int1;
51569 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51571 # check trigger-8 success: 1
51572 DROP TRIGGER trg_1;
51573 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51574 f_int2 = CAST(f_char1 AS SIGNED INT),
51575 f_charbig = 'just inserted'
51576 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51578 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51580 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51581 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
51583 SET new.f_int1 = old.f_int1 + @max_row,
51584 new.f_int2 = old.f_int2 - @max_row,
51585 new.f_charbig = '####updated per update trigger####';
51588 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
51589 f_charbig = '####updated per update statement itself####';
51591 # check trigger-9 success: 1
51592 DROP TRIGGER trg_2;
51593 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51594 f_int2 = CAST(f_char1 AS SIGNED INT),
51595 f_charbig = CONCAT('===',f_char1,'===');
51596 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
51598 SET new.f_int1 = new.f_int1 + @max_row,
51599 new.f_int2 = new.f_int2 - @max_row,
51600 new.f_charbig = '####updated per update trigger####';
51603 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
51604 f_charbig = '####updated per update statement itself####';
51606 # check trigger-10 success: 1
51607 DROP TRIGGER trg_2;
51608 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51609 f_int2 = CAST(f_char1 AS SIGNED INT),
51610 f_charbig = CONCAT('===',f_char1,'===');
51611 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
51613 SET new.f_int1 = @my_max1 + @counter,
51614 new.f_int2 = @my_min2 - @counter,
51615 new.f_charbig = '####updated per insert trigger####';
51616 SET @counter = @counter + 1;
51619 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
51620 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51621 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
51622 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
51623 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
51625 DROP TRIGGER trg_3;
51627 # check trigger-11 success: 1
51629 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
51630 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
51631 AND f_charbig = '####updated per insert trigger####';
51632 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
51634 SET new.f_int1 = @my_max1 + @counter,
51635 new.f_int2 = @my_min2 - @counter,
51636 new.f_charbig = '####updated per insert trigger####';
51637 SET @counter = @counter + 1;
51640 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
51641 INSERT INTO t1 (f_char1, f_char2, f_charbig)
51642 SELECT CAST(f_int1 AS CHAR),
51643 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
51644 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
51646 DROP TRIGGER trg_3;
51648 # check trigger-12 success: 1
51650 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
51651 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
51652 AND f_charbig = '####updated per insert trigger####';
51654 Table Op Msg_type Msg_text
51655 test.t1 analyze status OK
51656 CHECK TABLE t1 EXTENDED;
51657 Table Op Msg_type Msg_text
51658 test.t1 check status OK
51659 CHECKSUM TABLE t1 EXTENDED;
51661 test.t1 <some_value>
51663 Table Op Msg_type Msg_text
51664 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
51665 test.t1 optimize status OK
51666 # check layout success: 1
51667 REPAIR TABLE t1 EXTENDED;
51668 Table Op Msg_type Msg_text
51669 test.t1 repair note The storage engine for the table doesn't support repair
51670 # check layout success: 1
51673 # check TRUNCATE success: 1
51674 # check layout success: 1
51675 # End usability test (inc/partition_check.inc)
51682 f_charbig VARCHAR(1000)
51683 , UNIQUE INDEX uidx (f_int1,f_int2)
51685 PARTITION BY LIST(ABS(MOD(f_int1,2)))
51686 SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
51687 (PARTITION part1 VALUES IN (0),
51688 PARTITION part2 VALUES IN (1),
51689 PARTITION part3 VALUES IN (NULL));
51690 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
51691 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
51692 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
51693 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
51694 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
51695 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
51696 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
51697 # Start usability test (inc/partition_check.inc)
51699 SHOW CREATE TABLE t1;
51701 t1 CREATE TABLE `t1` (
51702 `f_int1` mediumint(9) DEFAULT NULL,
51703 `f_int2` mediumint(9) DEFAULT NULL,
51704 `f_char1` char(20) DEFAULT NULL,
51705 `f_char2` char(20) DEFAULT NULL,
51706 `f_charbig` varchar(1000) DEFAULT NULL,
51707 UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
51708 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
51709 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
51710 SUBPARTITION BY KEY (f_int2)
51712 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
51713 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
51714 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
51716 # check prerequisites-1 success: 1
51717 # check COUNT(*) success: 1
51718 # check MIN/MAX(f_int1) success: 1
51719 # check MIN/MAX(f_int2) success: 1
51720 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51721 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
51722 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
51723 WHERE f_int1 IN (2,3);
51724 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
51725 # check prerequisites-3 success: 1
51726 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
51727 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51728 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
51729 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
51730 WHERE f_int1 IN (2,3);
51731 DELETE FROM t1 WHERE f_charbig = 'delete me';
51732 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51733 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
51734 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
51735 WHERE f_int1 IN (2,3);
51736 DELETE FROM t1 WHERE f_charbig = 'delete me';
51737 # check read via f_int1 success: 1
51738 # check read via f_int2 success: 1
51740 # check multiple-1 success: 1
51741 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
51743 # check multiple-2 success: 1
51744 INSERT INTO t1 SELECT * FROM t0_template
51745 WHERE MOD(f_int1,3) = 0;
51747 # check multiple-3 success: 1
51748 UPDATE t1 SET f_int1 = f_int1 + @max_row
51749 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
51750 AND @max_row_div2 + @max_row_div4;
51752 # check multiple-4 success: 1
51754 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
51755 AND @max_row_div2 + @max_row_div4 + @max_row;
51757 # check multiple-5 success: 1
51758 SELECT COUNT(*) INTO @try_count FROM t0_template
51759 WHERE MOD(f_int1,3) = 0
51760 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
51761 SELECT COUNT(*) INTO @clash_count
51762 FROM t1 INNER JOIN t0_template USING(f_int1)
51763 WHERE MOD(f_int1,3) = 0
51764 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
51765 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
51767 SET f_int1 = @cur_value , f_int2 = @cur_value,
51768 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
51769 f_charbig = '#SINGLE#';
51771 # check single-1 success: 1
51772 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
51774 SET f_int1 = @cur_value , f_int2 = @cur_value,
51775 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
51776 f_charbig = '#SINGLE#';
51778 # check single-2 success: 1
51779 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
51780 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
51781 UPDATE t1 SET f_int1 = @cur_value2
51782 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
51784 # check single-3 success: 1
51785 SET @cur_value1= -1;
51786 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
51787 UPDATE t1 SET f_int1 = @cur_value1
51788 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
51790 # check single-4 success: 1
51791 SELECT MAX(f_int1) INTO @cur_value FROM t1;
51792 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
51794 # check single-5 success: 1
51795 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
51797 # check single-6 success: 1
51798 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
51800 Warning 1264 Out of range value for column 'f_int1' at row 1
51801 Warning 1264 Out of range value for column 'f_int2' at row 1
51803 # check single-7 success: 1
51804 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
51805 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
51806 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
51807 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
51808 f_charbig = '#NULL#';
51810 SET f_int1 = NULL , f_int2 = -@max_row,
51811 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
51812 f_charbig = '#NULL#';
51813 # check null success: 1
51815 # check null-1 success: 1
51816 UPDATE t1 SET f_int1 = -@max_row
51817 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
51818 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
51820 # check null-2 success: 1
51821 UPDATE t1 SET f_int1 = NULL
51822 WHERE f_int1 = -@max_row 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#';
51825 # check null-3 success: 1
51827 WHERE f_int1 IS NULL 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#';
51830 # check null-4 success: 1
51832 WHERE f_int1 = 0 AND f_int2 = 0
51833 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
51834 AND f_charbig = '#NULL#';
51835 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51836 SELECT f_int1, f_int1, '', '', 'was inserted'
51837 FROM t0_template source_tab
51838 WHERE MOD(f_int1,3) = 0
51839 AND f_int1 BETWEEN @max_row_div2 AND @max_row
51841 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
51842 f_int2 = 2 * @max_row + source_tab.f_int1,
51843 f_charbig = 'was updated';
51845 # check unique-1-a success: 1
51847 # check unique-1-b success: 1
51848 DELETE FROM t1 WHERE f_charbig = 'was inserted';
51849 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51850 f_int2 = CAST(f_char1 AS SIGNED INT),
51851 f_charbig = CONCAT('===',f_char1,'===')
51852 WHERE f_charbig = 'was updated';
51853 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51854 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
51855 FROM t0_template source_tab
51856 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
51858 # check replace success: 1
51860 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
51862 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
51863 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
51864 UPDATE t1 SET f_int2 = f_int1,
51865 f_char1 = CAST(f_int1 AS CHAR),
51866 f_char2 = CAST(f_int1 AS CHAR),
51867 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
51868 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
51870 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51871 SELECT f_int1, f_int1, '', '', 'was inserted'
51872 FROM t0_template source_tab
51873 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
51875 # check transactions-1 success: 1
51878 # check transactions-2 success: 1
51881 # check transactions-3 success: 1
51882 DELETE FROM t1 WHERE f_charbig = 'was inserted';
51886 # check transactions-4 success: 1
51887 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51888 SELECT f_int1, f_int1, '', '', 'was inserted'
51889 FROM t0_template source_tab
51890 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
51892 # check transactions-5 success: 1
51895 # check transactions-6 success: 1
51896 # INFO: Storage engine used for t1 seems to be transactional.
51899 # check transactions-7 success: 1
51900 DELETE FROM t1 WHERE f_charbig = 'was inserted';
51902 SET @@session.sql_mode = 'traditional';
51903 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
51904 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
51905 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
51906 '', '', 'was inserted' FROM t0_template
51907 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
51908 ERROR 22012: Division by 0
51911 # check transactions-8 success: 1
51912 # INFO: Storage engine used for t1 seems to be able to revert
51913 # changes made by the failing statement.
51914 SET @@session.sql_mode = '';
51916 DELETE FROM t1 WHERE f_charbig = 'was inserted';
51918 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
51920 # check special-1 success: 1
51921 UPDATE t1 SET f_charbig = '';
51923 # check special-2 success: 1
51924 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
51925 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
51926 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
51927 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51928 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51929 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51930 'just inserted' FROM t0_template
51931 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51932 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
51934 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51935 f_charbig = 'updated by trigger'
51936 WHERE f_int1 = new.f_int1;
51938 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51939 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
51940 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51942 # check trigger-1 success: 1
51943 DROP TRIGGER trg_1;
51944 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51945 f_int2 = CAST(f_char1 AS SIGNED INT),
51946 f_charbig = 'just inserted'
51947 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51949 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51950 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51951 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51952 'just inserted' FROM t0_template
51953 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51954 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
51956 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51957 f_charbig = 'updated by trigger'
51958 WHERE f_int1 = new.f_int1;
51960 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51961 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
51962 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51964 # check trigger-2 success: 1
51965 DROP TRIGGER trg_1;
51966 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51967 f_int2 = CAST(f_char1 AS SIGNED INT),
51968 f_charbig = 'just inserted'
51969 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51971 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51972 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51973 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51974 'just inserted' FROM t0_template
51975 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51976 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
51978 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
51979 f_charbig = 'updated by trigger'
51980 WHERE f_int1 = new.f_int1;
51982 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
51983 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
51985 # check trigger-3 success: 1
51986 DROP TRIGGER trg_1;
51987 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
51988 f_int2 = CAST(f_char1 AS SIGNED INT),
51989 f_charbig = 'just inserted'
51990 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
51992 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51993 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
51994 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
51995 'just inserted' FROM t0_template
51996 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
51997 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
51999 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52000 f_charbig = 'updated by trigger'
52001 WHERE f_int1 = - old.f_int1;
52003 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
52004 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52006 # check trigger-4 success: 1
52007 DROP TRIGGER trg_1;
52008 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52009 f_int2 = CAST(f_char1 AS SIGNED INT),
52010 f_charbig = 'just inserted'
52011 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52013 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52014 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52015 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52016 'just inserted' FROM t0_template
52017 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52018 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
52020 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52021 f_charbig = 'updated by trigger'
52022 WHERE f_int1 = new.f_int1;
52024 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
52025 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52027 # check trigger-5 success: 1
52028 DROP TRIGGER trg_1;
52029 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52030 f_int2 = CAST(f_char1 AS SIGNED INT),
52031 f_charbig = 'just inserted'
52032 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52034 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52035 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52036 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52037 'just inserted' FROM t0_template
52038 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52039 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
52041 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52042 f_charbig = 'updated by trigger'
52043 WHERE f_int1 = - old.f_int1;
52045 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
52046 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52048 # check trigger-6 success: 1
52049 DROP TRIGGER trg_1;
52050 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52051 f_int2 = CAST(f_char1 AS SIGNED INT),
52052 f_charbig = 'just inserted'
52053 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52055 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52056 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52057 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52058 'just inserted' FROM t0_template
52059 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52060 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
52062 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52063 f_charbig = 'updated by trigger'
52064 WHERE f_int1 = - old.f_int1;
52067 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52069 # check trigger-7 success: 1
52070 DROP TRIGGER trg_1;
52071 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52072 f_int2 = CAST(f_char1 AS SIGNED INT),
52073 f_charbig = 'just inserted'
52074 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52076 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52077 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52078 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52079 'just inserted' FROM t0_template
52080 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52081 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
52083 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52084 f_charbig = 'updated by trigger'
52085 WHERE f_int1 = - old.f_int1;
52088 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52090 # check trigger-8 success: 1
52091 DROP TRIGGER trg_1;
52092 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52093 f_int2 = CAST(f_char1 AS SIGNED INT),
52094 f_charbig = 'just inserted'
52095 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52097 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52099 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52100 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
52102 SET new.f_int1 = old.f_int1 + @max_row,
52103 new.f_int2 = old.f_int2 - @max_row,
52104 new.f_charbig = '####updated per update trigger####';
52107 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
52108 f_charbig = '####updated per update statement itself####';
52110 # check trigger-9 success: 1
52111 DROP TRIGGER trg_2;
52112 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52113 f_int2 = CAST(f_char1 AS SIGNED INT),
52114 f_charbig = CONCAT('===',f_char1,'===');
52115 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
52117 SET new.f_int1 = new.f_int1 + @max_row,
52118 new.f_int2 = new.f_int2 - @max_row,
52119 new.f_charbig = '####updated per update trigger####';
52122 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
52123 f_charbig = '####updated per update statement itself####';
52125 # check trigger-10 success: 1
52126 DROP TRIGGER trg_2;
52127 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52128 f_int2 = CAST(f_char1 AS SIGNED INT),
52129 f_charbig = CONCAT('===',f_char1,'===');
52130 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
52132 SET new.f_int1 = @my_max1 + @counter,
52133 new.f_int2 = @my_min2 - @counter,
52134 new.f_charbig = '####updated per insert trigger####';
52135 SET @counter = @counter + 1;
52138 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
52139 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52140 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
52141 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
52142 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
52144 DROP TRIGGER trg_3;
52146 # check trigger-11 success: 1
52148 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
52149 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
52150 AND f_charbig = '####updated per insert trigger####';
52151 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
52153 SET new.f_int1 = @my_max1 + @counter,
52154 new.f_int2 = @my_min2 - @counter,
52155 new.f_charbig = '####updated per insert trigger####';
52156 SET @counter = @counter + 1;
52159 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
52160 INSERT INTO t1 (f_char1, f_char2, f_charbig)
52161 SELECT CAST(f_int1 AS CHAR),
52162 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
52163 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
52165 DROP TRIGGER trg_3;
52167 # check trigger-12 success: 1
52169 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
52170 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
52171 AND f_charbig = '####updated per insert trigger####';
52173 Table Op Msg_type Msg_text
52174 test.t1 analyze status OK
52175 CHECK TABLE t1 EXTENDED;
52176 Table Op Msg_type Msg_text
52177 test.t1 check status OK
52178 CHECKSUM TABLE t1 EXTENDED;
52180 test.t1 <some_value>
52182 Table Op Msg_type Msg_text
52183 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
52184 test.t1 optimize status OK
52185 # check layout success: 1
52186 REPAIR TABLE t1 EXTENDED;
52187 Table Op Msg_type Msg_text
52188 test.t1 repair note The storage engine for the table doesn't support repair
52189 # check layout success: 1
52192 # check TRUNCATE success: 1
52193 # check layout success: 1
52194 # End usability test (inc/partition_check.inc)
52196 DROP TABLE IF EXISTS t1;
52202 f_charbig VARCHAR(1000)
52203 , UNIQUE INDEX uidx (f_int2,f_int1)
52205 PARTITION BY HASH(f_int1) PARTITIONS 2;
52206 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
52207 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
52208 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
52209 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
52210 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
52211 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
52212 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
52213 # Start usability test (inc/partition_check.inc)
52215 SHOW CREATE TABLE t1;
52217 t1 CREATE TABLE `t1` (
52218 `f_int1` mediumint(9) DEFAULT NULL,
52219 `f_int2` mediumint(9) DEFAULT NULL,
52220 `f_char1` char(20) DEFAULT NULL,
52221 `f_char2` char(20) DEFAULT NULL,
52222 `f_charbig` varchar(1000) DEFAULT NULL,
52223 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
52224 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
52225 /*!50100 PARTITION BY HASH (f_int1)
52228 # check prerequisites-1 success: 1
52229 # check COUNT(*) success: 1
52230 # check MIN/MAX(f_int1) success: 1
52231 # check MIN/MAX(f_int2) success: 1
52232 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52233 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
52234 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
52235 WHERE f_int1 IN (2,3);
52236 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
52237 # check prerequisites-3 success: 1
52238 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
52239 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52240 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
52241 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
52242 WHERE f_int1 IN (2,3);
52243 DELETE FROM t1 WHERE f_charbig = 'delete me';
52244 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52245 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
52246 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
52247 WHERE f_int1 IN (2,3);
52248 DELETE FROM t1 WHERE f_charbig = 'delete me';
52249 # check read via f_int1 success: 1
52250 # check read via f_int2 success: 1
52252 # check multiple-1 success: 1
52253 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
52255 # check multiple-2 success: 1
52256 INSERT INTO t1 SELECT * FROM t0_template
52257 WHERE MOD(f_int1,3) = 0;
52259 # check multiple-3 success: 1
52260 UPDATE t1 SET f_int1 = f_int1 + @max_row
52261 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
52262 AND @max_row_div2 + @max_row_div4;
52264 # check multiple-4 success: 1
52266 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
52267 AND @max_row_div2 + @max_row_div4 + @max_row;
52269 # check multiple-5 success: 1
52270 SELECT COUNT(*) INTO @try_count FROM t0_template
52271 WHERE MOD(f_int1,3) = 0
52272 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
52273 SELECT COUNT(*) INTO @clash_count
52274 FROM t1 INNER JOIN t0_template USING(f_int1)
52275 WHERE MOD(f_int1,3) = 0
52276 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
52277 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
52279 SET f_int1 = @cur_value , f_int2 = @cur_value,
52280 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
52281 f_charbig = '#SINGLE#';
52283 # check single-1 success: 1
52284 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
52286 SET f_int1 = @cur_value , f_int2 = @cur_value,
52287 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
52288 f_charbig = '#SINGLE#';
52290 # check single-2 success: 1
52291 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
52292 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
52293 UPDATE t1 SET f_int1 = @cur_value2
52294 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
52296 # check single-3 success: 1
52297 SET @cur_value1= -1;
52298 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
52299 UPDATE t1 SET f_int1 = @cur_value1
52300 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
52302 # check single-4 success: 1
52303 SELECT MAX(f_int1) INTO @cur_value FROM t1;
52304 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
52306 # check single-5 success: 1
52307 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
52309 # check single-6 success: 1
52310 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
52312 Warning 1264 Out of range value for column 'f_int1' at row 1
52313 Warning 1264 Out of range value for column 'f_int2' at row 1
52315 # check single-7 success: 1
52316 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
52317 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
52318 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
52319 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
52320 f_charbig = '#NULL#';
52322 SET f_int1 = NULL , f_int2 = -@max_row,
52323 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
52324 f_charbig = '#NULL#';
52325 # check null success: 1
52327 # check null-1 success: 1
52328 UPDATE t1 SET f_int1 = -@max_row
52329 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
52330 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
52332 # check null-2 success: 1
52333 UPDATE t1 SET f_int1 = NULL
52334 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
52335 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
52337 # check null-3 success: 1
52339 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
52340 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
52342 # check null-4 success: 1
52344 WHERE f_int1 = 0 AND f_int2 = 0
52345 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
52346 AND f_charbig = '#NULL#';
52347 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52348 SELECT f_int1, f_int1, '', '', 'was inserted'
52349 FROM t0_template source_tab
52350 WHERE MOD(f_int1,3) = 0
52351 AND f_int1 BETWEEN @max_row_div2 AND @max_row
52353 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
52354 f_int2 = 2 * @max_row + source_tab.f_int1,
52355 f_charbig = 'was updated';
52357 # check unique-1-a success: 1
52359 # check unique-1-b success: 1
52360 DELETE FROM t1 WHERE f_charbig = 'was inserted';
52361 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52362 f_int2 = CAST(f_char1 AS SIGNED INT),
52363 f_charbig = CONCAT('===',f_char1,'===')
52364 WHERE f_charbig = 'was updated';
52365 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52366 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
52367 FROM t0_template source_tab
52368 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
52370 # check replace success: 1
52372 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
52374 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
52375 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
52376 UPDATE t1 SET f_int2 = f_int1,
52377 f_char1 = CAST(f_int1 AS CHAR),
52378 f_char2 = CAST(f_int1 AS CHAR),
52379 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
52380 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
52382 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52383 SELECT f_int1, f_int1, '', '', 'was inserted'
52384 FROM t0_template source_tab
52385 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
52387 # check transactions-1 success: 1
52390 # check transactions-2 success: 1
52393 # check transactions-3 success: 1
52394 DELETE FROM t1 WHERE f_charbig = 'was inserted';
52398 # check transactions-4 success: 1
52399 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52400 SELECT f_int1, f_int1, '', '', 'was inserted'
52401 FROM t0_template source_tab
52402 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
52404 # check transactions-5 success: 1
52407 # check transactions-6 success: 1
52408 # INFO: Storage engine used for t1 seems to be transactional.
52411 # check transactions-7 success: 1
52412 DELETE FROM t1 WHERE f_charbig = 'was inserted';
52414 SET @@session.sql_mode = 'traditional';
52415 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
52416 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52417 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
52418 '', '', 'was inserted' FROM t0_template
52419 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
52420 ERROR 22012: Division by 0
52423 # check transactions-8 success: 1
52424 # INFO: Storage engine used for t1 seems to be able to revert
52425 # changes made by the failing statement.
52426 SET @@session.sql_mode = '';
52428 DELETE FROM t1 WHERE f_charbig = 'was inserted';
52430 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
52432 # check special-1 success: 1
52433 UPDATE t1 SET f_charbig = '';
52435 # check special-2 success: 1
52436 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
52437 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
52438 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
52439 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52440 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52441 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52442 'just inserted' FROM t0_template
52443 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52444 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
52446 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52447 f_charbig = 'updated by trigger'
52448 WHERE f_int1 = new.f_int1;
52450 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52451 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
52452 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52454 # check trigger-1 success: 1
52455 DROP TRIGGER trg_1;
52456 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52457 f_int2 = CAST(f_char1 AS SIGNED INT),
52458 f_charbig = 'just inserted'
52459 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52461 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52462 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52463 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52464 'just inserted' FROM t0_template
52465 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52466 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
52468 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52469 f_charbig = 'updated by trigger'
52470 WHERE f_int1 = new.f_int1;
52472 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52473 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
52474 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52476 # check trigger-2 success: 1
52477 DROP TRIGGER trg_1;
52478 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52479 f_int2 = CAST(f_char1 AS SIGNED INT),
52480 f_charbig = 'just inserted'
52481 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52483 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52484 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52485 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52486 'just inserted' FROM t0_template
52487 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52488 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
52490 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52491 f_charbig = 'updated by trigger'
52492 WHERE f_int1 = new.f_int1;
52494 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
52495 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52497 # check trigger-3 success: 1
52498 DROP TRIGGER trg_1;
52499 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52500 f_int2 = CAST(f_char1 AS SIGNED INT),
52501 f_charbig = 'just inserted'
52502 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52504 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52505 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52506 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52507 'just inserted' FROM t0_template
52508 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52509 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
52511 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52512 f_charbig = 'updated by trigger'
52513 WHERE f_int1 = - old.f_int1;
52515 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
52516 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52518 # check trigger-4 success: 1
52519 DROP TRIGGER trg_1;
52520 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52521 f_int2 = CAST(f_char1 AS SIGNED INT),
52522 f_charbig = 'just inserted'
52523 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52525 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52526 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52527 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52528 'just inserted' FROM t0_template
52529 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52530 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
52532 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52533 f_charbig = 'updated by trigger'
52534 WHERE f_int1 = new.f_int1;
52536 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
52537 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52539 # check trigger-5 success: 1
52540 DROP TRIGGER trg_1;
52541 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52542 f_int2 = CAST(f_char1 AS SIGNED INT),
52543 f_charbig = 'just inserted'
52544 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52546 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52547 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52548 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52549 'just inserted' FROM t0_template
52550 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52551 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
52553 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52554 f_charbig = 'updated by trigger'
52555 WHERE f_int1 = - old.f_int1;
52557 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
52558 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52560 # check trigger-6 success: 1
52561 DROP TRIGGER trg_1;
52562 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52563 f_int2 = CAST(f_char1 AS SIGNED INT),
52564 f_charbig = 'just inserted'
52565 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52567 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52568 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52569 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52570 'just inserted' FROM t0_template
52571 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52572 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
52574 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52575 f_charbig = 'updated by trigger'
52576 WHERE f_int1 = - old.f_int1;
52579 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52581 # check trigger-7 success: 1
52582 DROP TRIGGER trg_1;
52583 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52584 f_int2 = CAST(f_char1 AS SIGNED INT),
52585 f_charbig = 'just inserted'
52586 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52588 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52589 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52590 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52591 'just inserted' FROM t0_template
52592 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52593 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
52595 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52596 f_charbig = 'updated by trigger'
52597 WHERE f_int1 = - old.f_int1;
52600 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
52602 # check trigger-8 success: 1
52603 DROP TRIGGER trg_1;
52604 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52605 f_int2 = CAST(f_char1 AS SIGNED INT),
52606 f_charbig = 'just inserted'
52607 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52609 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52611 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52612 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
52614 SET new.f_int1 = old.f_int1 + @max_row,
52615 new.f_int2 = old.f_int2 - @max_row,
52616 new.f_charbig = '####updated per update trigger####';
52619 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
52620 f_charbig = '####updated per update statement itself####';
52622 # check trigger-9 success: 1
52623 DROP TRIGGER trg_2;
52624 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52625 f_int2 = CAST(f_char1 AS SIGNED INT),
52626 f_charbig = CONCAT('===',f_char1,'===');
52627 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
52629 SET new.f_int1 = new.f_int1 + @max_row,
52630 new.f_int2 = new.f_int2 - @max_row,
52631 new.f_charbig = '####updated per update trigger####';
52634 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
52635 f_charbig = '####updated per update statement itself####';
52637 # check trigger-10 success: 1
52638 DROP TRIGGER trg_2;
52639 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52640 f_int2 = CAST(f_char1 AS SIGNED INT),
52641 f_charbig = CONCAT('===',f_char1,'===');
52642 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
52644 SET new.f_int1 = @my_max1 + @counter,
52645 new.f_int2 = @my_min2 - @counter,
52646 new.f_charbig = '####updated per insert trigger####';
52647 SET @counter = @counter + 1;
52650 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
52651 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52652 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
52653 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
52654 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
52656 DROP TRIGGER trg_3;
52658 # check trigger-11 success: 1
52660 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
52661 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
52662 AND f_charbig = '####updated per insert trigger####';
52663 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
52665 SET new.f_int1 = @my_max1 + @counter,
52666 new.f_int2 = @my_min2 - @counter,
52667 new.f_charbig = '####updated per insert trigger####';
52668 SET @counter = @counter + 1;
52671 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
52672 INSERT INTO t1 (f_char1, f_char2, f_charbig)
52673 SELECT CAST(f_int1 AS CHAR),
52674 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
52675 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
52677 DROP TRIGGER trg_3;
52679 # check trigger-12 success: 1
52681 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
52682 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
52683 AND f_charbig = '####updated per insert trigger####';
52685 Table Op Msg_type Msg_text
52686 test.t1 analyze status OK
52687 CHECK TABLE t1 EXTENDED;
52688 Table Op Msg_type Msg_text
52689 test.t1 check status OK
52690 CHECKSUM TABLE t1 EXTENDED;
52692 test.t1 <some_value>
52694 Table Op Msg_type Msg_text
52695 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
52696 test.t1 optimize status OK
52697 # check layout success: 1
52698 REPAIR TABLE t1 EXTENDED;
52699 Table Op Msg_type Msg_text
52700 test.t1 repair note The storage engine for the table doesn't support repair
52701 # check layout success: 1
52704 # check TRUNCATE success: 1
52705 # check layout success: 1
52706 # End usability test (inc/partition_check.inc)
52713 f_charbig VARCHAR(1000)
52714 , UNIQUE INDEX uidx (f_int2,f_int1)
52716 PARTITION BY KEY(f_int1) PARTITIONS 5;
52717 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
52718 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
52719 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
52720 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
52721 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
52722 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
52723 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
52724 # Start usability test (inc/partition_check.inc)
52726 SHOW CREATE TABLE t1;
52728 t1 CREATE TABLE `t1` (
52729 `f_int1` mediumint(9) DEFAULT NULL,
52730 `f_int2` mediumint(9) DEFAULT NULL,
52731 `f_char1` char(20) DEFAULT NULL,
52732 `f_char2` char(20) DEFAULT NULL,
52733 `f_charbig` varchar(1000) DEFAULT NULL,
52734 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
52735 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
52736 /*!50100 PARTITION BY KEY (f_int1)
52739 # check prerequisites-1 success: 1
52740 # check COUNT(*) success: 1
52741 # check MIN/MAX(f_int1) success: 1
52742 # check MIN/MAX(f_int2) success: 1
52743 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52744 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
52745 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
52746 WHERE f_int1 IN (2,3);
52747 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
52748 # check prerequisites-3 success: 1
52749 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
52750 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52751 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
52752 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
52753 WHERE f_int1 IN (2,3);
52754 DELETE FROM t1 WHERE f_charbig = 'delete me';
52755 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52756 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
52757 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
52758 WHERE f_int1 IN (2,3);
52759 DELETE FROM t1 WHERE f_charbig = 'delete me';
52760 # check read via f_int1 success: 1
52761 # check read via f_int2 success: 1
52763 # check multiple-1 success: 1
52764 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
52766 # check multiple-2 success: 1
52767 INSERT INTO t1 SELECT * FROM t0_template
52768 WHERE MOD(f_int1,3) = 0;
52770 # check multiple-3 success: 1
52771 UPDATE t1 SET f_int1 = f_int1 + @max_row
52772 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
52773 AND @max_row_div2 + @max_row_div4;
52775 # check multiple-4 success: 1
52777 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
52778 AND @max_row_div2 + @max_row_div4 + @max_row;
52780 # check multiple-5 success: 1
52781 SELECT COUNT(*) INTO @try_count FROM t0_template
52782 WHERE MOD(f_int1,3) = 0
52783 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
52784 SELECT COUNT(*) INTO @clash_count
52785 FROM t1 INNER JOIN t0_template USING(f_int1)
52786 WHERE MOD(f_int1,3) = 0
52787 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
52788 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
52790 SET f_int1 = @cur_value , f_int2 = @cur_value,
52791 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
52792 f_charbig = '#SINGLE#';
52794 # check single-1 success: 1
52795 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
52797 SET f_int1 = @cur_value , f_int2 = @cur_value,
52798 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
52799 f_charbig = '#SINGLE#';
52801 # check single-2 success: 1
52802 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
52803 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
52804 UPDATE t1 SET f_int1 = @cur_value2
52805 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
52807 # check single-3 success: 1
52808 SET @cur_value1= -1;
52809 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
52810 UPDATE t1 SET f_int1 = @cur_value1
52811 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
52813 # check single-4 success: 1
52814 SELECT MAX(f_int1) INTO @cur_value FROM t1;
52815 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
52817 # check single-5 success: 1
52818 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
52820 # check single-6 success: 1
52821 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
52823 Warning 1264 Out of range value for column 'f_int1' at row 1
52824 Warning 1264 Out of range value for column 'f_int2' at row 1
52826 # check single-7 success: 1
52827 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
52828 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
52829 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
52830 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
52831 f_charbig = '#NULL#';
52833 SET f_int1 = NULL , f_int2 = -@max_row,
52834 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
52835 f_charbig = '#NULL#';
52836 # check null success: 1
52838 # check null-1 success: 1
52839 UPDATE t1 SET f_int1 = -@max_row
52840 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
52841 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
52843 # check null-2 success: 1
52844 UPDATE t1 SET f_int1 = NULL
52845 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
52846 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
52848 # check null-3 success: 1
52850 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
52851 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
52853 # check null-4 success: 1
52855 WHERE f_int1 = 0 AND f_int2 = 0
52856 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
52857 AND f_charbig = '#NULL#';
52858 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52859 SELECT f_int1, f_int1, '', '', 'was inserted'
52860 FROM t0_template source_tab
52861 WHERE MOD(f_int1,3) = 0
52862 AND f_int1 BETWEEN @max_row_div2 AND @max_row
52864 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
52865 f_int2 = 2 * @max_row + source_tab.f_int1,
52866 f_charbig = 'was updated';
52868 # check unique-1-a success: 1
52870 # check unique-1-b success: 1
52871 DELETE FROM t1 WHERE f_charbig = 'was inserted';
52872 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52873 f_int2 = CAST(f_char1 AS SIGNED INT),
52874 f_charbig = CONCAT('===',f_char1,'===')
52875 WHERE f_charbig = 'was updated';
52876 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52877 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
52878 FROM t0_template source_tab
52879 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
52881 # check replace success: 1
52883 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
52885 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
52886 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
52887 UPDATE t1 SET f_int2 = f_int1,
52888 f_char1 = CAST(f_int1 AS CHAR),
52889 f_char2 = CAST(f_int1 AS CHAR),
52890 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
52891 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
52893 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52894 SELECT f_int1, f_int1, '', '', 'was inserted'
52895 FROM t0_template source_tab
52896 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
52898 # check transactions-1 success: 1
52901 # check transactions-2 success: 1
52904 # check transactions-3 success: 1
52905 DELETE FROM t1 WHERE f_charbig = 'was inserted';
52909 # check transactions-4 success: 1
52910 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52911 SELECT f_int1, f_int1, '', '', 'was inserted'
52912 FROM t0_template source_tab
52913 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
52915 # check transactions-5 success: 1
52918 # check transactions-6 success: 1
52919 # INFO: Storage engine used for t1 seems to be transactional.
52922 # check transactions-7 success: 1
52923 DELETE FROM t1 WHERE f_charbig = 'was inserted';
52925 SET @@session.sql_mode = 'traditional';
52926 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
52927 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
52928 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
52929 '', '', 'was inserted' FROM t0_template
52930 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
52931 ERROR 22012: Division by 0
52934 # check transactions-8 success: 1
52935 # INFO: Storage engine used for t1 seems to be able to revert
52936 # changes made by the failing statement.
52937 SET @@session.sql_mode = '';
52939 DELETE FROM t1 WHERE f_charbig = 'was inserted';
52941 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
52943 # check special-1 success: 1
52944 UPDATE t1 SET f_charbig = '';
52946 # check special-2 success: 1
52947 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
52948 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
52949 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
52950 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52951 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52952 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52953 'just inserted' FROM t0_template
52954 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52955 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
52957 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52958 f_charbig = 'updated by trigger'
52959 WHERE f_int1 = new.f_int1;
52961 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52962 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
52963 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52965 # check trigger-1 success: 1
52966 DROP TRIGGER trg_1;
52967 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52968 f_int2 = CAST(f_char1 AS SIGNED INT),
52969 f_charbig = 'just inserted'
52970 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52972 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52973 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52974 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52975 'just inserted' FROM t0_template
52976 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52977 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
52979 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
52980 f_charbig = 'updated by trigger'
52981 WHERE f_int1 = new.f_int1;
52983 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52984 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
52985 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52987 # check trigger-2 success: 1
52988 DROP TRIGGER trg_1;
52989 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
52990 f_int2 = CAST(f_char1 AS SIGNED INT),
52991 f_charbig = 'just inserted'
52992 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
52994 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52995 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
52996 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
52997 'just inserted' FROM t0_template
52998 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
52999 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
53001 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53002 f_charbig = 'updated by trigger'
53003 WHERE f_int1 = new.f_int1;
53005 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
53006 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53008 # check trigger-3 success: 1
53009 DROP TRIGGER trg_1;
53010 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53011 f_int2 = CAST(f_char1 AS SIGNED INT),
53012 f_charbig = 'just inserted'
53013 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53015 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53016 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53017 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53018 'just inserted' FROM t0_template
53019 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53020 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
53022 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53023 f_charbig = 'updated by trigger'
53024 WHERE f_int1 = - old.f_int1;
53026 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
53027 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53029 # check trigger-4 success: 1
53030 DROP TRIGGER trg_1;
53031 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53032 f_int2 = CAST(f_char1 AS SIGNED INT),
53033 f_charbig = 'just inserted'
53034 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53036 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53037 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53038 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53039 'just inserted' FROM t0_template
53040 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53041 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
53043 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53044 f_charbig = 'updated by trigger'
53045 WHERE f_int1 = new.f_int1;
53047 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
53048 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53050 # check trigger-5 success: 1
53051 DROP TRIGGER trg_1;
53052 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53053 f_int2 = CAST(f_char1 AS SIGNED INT),
53054 f_charbig = 'just inserted'
53055 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53057 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53058 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53059 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53060 'just inserted' FROM t0_template
53061 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53062 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
53064 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53065 f_charbig = 'updated by trigger'
53066 WHERE f_int1 = - old.f_int1;
53068 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
53069 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53071 # check trigger-6 success: 1
53072 DROP TRIGGER trg_1;
53073 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53074 f_int2 = CAST(f_char1 AS SIGNED INT),
53075 f_charbig = 'just inserted'
53076 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53078 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53079 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53080 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53081 'just inserted' FROM t0_template
53082 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53083 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
53085 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53086 f_charbig = 'updated by trigger'
53087 WHERE f_int1 = - old.f_int1;
53090 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53092 # check trigger-7 success: 1
53093 DROP TRIGGER trg_1;
53094 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53095 f_int2 = CAST(f_char1 AS SIGNED INT),
53096 f_charbig = 'just inserted'
53097 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53099 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53100 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53101 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53102 'just inserted' FROM t0_template
53103 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53104 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
53106 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53107 f_charbig = 'updated by trigger'
53108 WHERE f_int1 = - old.f_int1;
53111 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53113 # check trigger-8 success: 1
53114 DROP TRIGGER trg_1;
53115 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53116 f_int2 = CAST(f_char1 AS SIGNED INT),
53117 f_charbig = 'just inserted'
53118 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53120 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53122 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53123 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
53125 SET new.f_int1 = old.f_int1 + @max_row,
53126 new.f_int2 = old.f_int2 - @max_row,
53127 new.f_charbig = '####updated per update trigger####';
53130 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
53131 f_charbig = '####updated per update statement itself####';
53133 # check trigger-9 success: 1
53134 DROP TRIGGER trg_2;
53135 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53136 f_int2 = CAST(f_char1 AS SIGNED INT),
53137 f_charbig = CONCAT('===',f_char1,'===');
53138 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
53140 SET new.f_int1 = new.f_int1 + @max_row,
53141 new.f_int2 = new.f_int2 - @max_row,
53142 new.f_charbig = '####updated per update trigger####';
53145 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
53146 f_charbig = '####updated per update statement itself####';
53148 # check trigger-10 success: 1
53149 DROP TRIGGER trg_2;
53150 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53151 f_int2 = CAST(f_char1 AS SIGNED INT),
53152 f_charbig = CONCAT('===',f_char1,'===');
53153 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
53155 SET new.f_int1 = @my_max1 + @counter,
53156 new.f_int2 = @my_min2 - @counter,
53157 new.f_charbig = '####updated per insert trigger####';
53158 SET @counter = @counter + 1;
53161 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
53162 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53163 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
53164 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
53165 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
53167 DROP TRIGGER trg_3;
53169 # check trigger-11 success: 1
53171 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
53172 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
53173 AND f_charbig = '####updated per insert trigger####';
53174 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
53176 SET new.f_int1 = @my_max1 + @counter,
53177 new.f_int2 = @my_min2 - @counter,
53178 new.f_charbig = '####updated per insert trigger####';
53179 SET @counter = @counter + 1;
53182 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
53183 INSERT INTO t1 (f_char1, f_char2, f_charbig)
53184 SELECT CAST(f_int1 AS CHAR),
53185 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
53186 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
53188 DROP TRIGGER trg_3;
53190 # check trigger-12 success: 1
53192 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
53193 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
53194 AND f_charbig = '####updated per insert trigger####';
53196 Table Op Msg_type Msg_text
53197 test.t1 analyze status OK
53198 CHECK TABLE t1 EXTENDED;
53199 Table Op Msg_type Msg_text
53200 test.t1 check status OK
53201 CHECKSUM TABLE t1 EXTENDED;
53203 test.t1 <some_value>
53205 Table Op Msg_type Msg_text
53206 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
53207 test.t1 optimize status OK
53208 # check layout success: 1
53209 REPAIR TABLE t1 EXTENDED;
53210 Table Op Msg_type Msg_text
53211 test.t1 repair note The storage engine for the table doesn't support repair
53212 # check layout success: 1
53215 # check TRUNCATE success: 1
53216 # check layout success: 1
53217 # End usability test (inc/partition_check.inc)
53224 f_charbig VARCHAR(1000)
53225 , UNIQUE INDEX uidx (f_int2,f_int1)
53227 PARTITION BY LIST(MOD(f_int1,4))
53228 (PARTITION part_3 VALUES IN (-3),
53229 PARTITION part_2 VALUES IN (-2),
53230 PARTITION part_1 VALUES IN (-1),
53231 PARTITION part_N VALUES IN (NULL),
53232 PARTITION part0 VALUES IN (0),
53233 PARTITION part1 VALUES IN (1),
53234 PARTITION part2 VALUES IN (2),
53235 PARTITION part3 VALUES IN (3));
53236 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
53237 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
53238 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
53239 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
53240 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
53241 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
53242 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
53243 # Start usability test (inc/partition_check.inc)
53245 SHOW CREATE TABLE t1;
53247 t1 CREATE TABLE `t1` (
53248 `f_int1` mediumint(9) DEFAULT NULL,
53249 `f_int2` mediumint(9) DEFAULT NULL,
53250 `f_char1` char(20) DEFAULT NULL,
53251 `f_char2` char(20) DEFAULT NULL,
53252 `f_charbig` varchar(1000) DEFAULT NULL,
53253 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
53254 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
53255 /*!50100 PARTITION BY LIST (MOD(f_int1,4))
53256 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
53257 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
53258 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
53259 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
53260 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
53261 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
53262 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
53263 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
53265 # check prerequisites-1 success: 1
53266 # check COUNT(*) success: 1
53267 # check MIN/MAX(f_int1) success: 1
53268 # check MIN/MAX(f_int2) success: 1
53269 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53270 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
53271 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
53272 WHERE f_int1 IN (2,3);
53273 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
53274 # check prerequisites-3 success: 1
53275 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
53276 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53277 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
53278 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
53279 WHERE f_int1 IN (2,3);
53280 DELETE FROM t1 WHERE f_charbig = 'delete me';
53281 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53282 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
53283 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
53284 WHERE f_int1 IN (2,3);
53285 DELETE FROM t1 WHERE f_charbig = 'delete me';
53286 # check read via f_int1 success: 1
53287 # check read via f_int2 success: 1
53289 # check multiple-1 success: 1
53290 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
53292 # check multiple-2 success: 1
53293 INSERT INTO t1 SELECT * FROM t0_template
53294 WHERE MOD(f_int1,3) = 0;
53296 # check multiple-3 success: 1
53297 UPDATE t1 SET f_int1 = f_int1 + @max_row
53298 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
53299 AND @max_row_div2 + @max_row_div4;
53301 # check multiple-4 success: 1
53303 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
53304 AND @max_row_div2 + @max_row_div4 + @max_row;
53306 # check multiple-5 success: 1
53307 SELECT COUNT(*) INTO @try_count FROM t0_template
53308 WHERE MOD(f_int1,3) = 0
53309 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
53310 SELECT COUNT(*) INTO @clash_count
53311 FROM t1 INNER JOIN t0_template USING(f_int1)
53312 WHERE MOD(f_int1,3) = 0
53313 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
53314 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
53316 SET f_int1 = @cur_value , f_int2 = @cur_value,
53317 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
53318 f_charbig = '#SINGLE#';
53320 # check single-1 success: 1
53321 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
53323 SET f_int1 = @cur_value , f_int2 = @cur_value,
53324 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
53325 f_charbig = '#SINGLE#';
53327 # check single-2 success: 1
53328 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
53329 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
53330 UPDATE t1 SET f_int1 = @cur_value2
53331 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
53333 # check single-3 success: 1
53334 SET @cur_value1= -1;
53335 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
53336 UPDATE t1 SET f_int1 = @cur_value1
53337 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
53339 # check single-4 success: 1
53340 SELECT MAX(f_int1) INTO @cur_value FROM t1;
53341 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
53343 # check single-5 success: 1
53344 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
53346 # check single-6 success: 1
53347 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
53349 Warning 1264 Out of range value for column 'f_int1' at row 1
53350 Warning 1264 Out of range value for column 'f_int2' at row 1
53352 # check single-7 success: 1
53353 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
53354 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
53355 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
53356 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
53357 f_charbig = '#NULL#';
53359 SET f_int1 = NULL , f_int2 = -@max_row,
53360 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
53361 f_charbig = '#NULL#';
53362 # check null success: 1
53364 # check null-1 success: 1
53365 UPDATE t1 SET f_int1 = -@max_row
53366 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
53367 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
53369 # check null-2 success: 1
53370 UPDATE t1 SET f_int1 = NULL
53371 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
53372 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
53374 # check null-3 success: 1
53376 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
53377 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
53379 # check null-4 success: 1
53381 WHERE f_int1 = 0 AND f_int2 = 0
53382 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
53383 AND f_charbig = '#NULL#';
53384 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53385 SELECT f_int1, f_int1, '', '', 'was inserted'
53386 FROM t0_template source_tab
53387 WHERE MOD(f_int1,3) = 0
53388 AND f_int1 BETWEEN @max_row_div2 AND @max_row
53390 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
53391 f_int2 = 2 * @max_row + source_tab.f_int1,
53392 f_charbig = 'was updated';
53394 # check unique-1-a success: 1
53396 # check unique-1-b success: 1
53397 DELETE FROM t1 WHERE f_charbig = 'was inserted';
53398 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53399 f_int2 = CAST(f_char1 AS SIGNED INT),
53400 f_charbig = CONCAT('===',f_char1,'===')
53401 WHERE f_charbig = 'was updated';
53402 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53403 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
53404 FROM t0_template source_tab
53405 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
53407 # check replace success: 1
53409 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
53411 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
53412 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
53413 UPDATE t1 SET f_int2 = f_int1,
53414 f_char1 = CAST(f_int1 AS CHAR),
53415 f_char2 = CAST(f_int1 AS CHAR),
53416 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
53417 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
53419 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53420 SELECT f_int1, f_int1, '', '', 'was inserted'
53421 FROM t0_template source_tab
53422 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
53424 # check transactions-1 success: 1
53427 # check transactions-2 success: 1
53430 # check transactions-3 success: 1
53431 DELETE FROM t1 WHERE f_charbig = 'was inserted';
53435 # check transactions-4 success: 1
53436 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53437 SELECT f_int1, f_int1, '', '', 'was inserted'
53438 FROM t0_template source_tab
53439 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
53441 # check transactions-5 success: 1
53444 # check transactions-6 success: 1
53445 # INFO: Storage engine used for t1 seems to be transactional.
53448 # check transactions-7 success: 1
53449 DELETE FROM t1 WHERE f_charbig = 'was inserted';
53451 SET @@session.sql_mode = 'traditional';
53452 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
53453 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53454 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
53455 '', '', 'was inserted' FROM t0_template
53456 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
53457 ERROR 22012: Division by 0
53460 # check transactions-8 success: 1
53461 # INFO: Storage engine used for t1 seems to be able to revert
53462 # changes made by the failing statement.
53463 SET @@session.sql_mode = '';
53465 DELETE FROM t1 WHERE f_charbig = 'was inserted';
53467 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
53469 # check special-1 success: 1
53470 UPDATE t1 SET f_charbig = '';
53472 # check special-2 success: 1
53473 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
53474 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
53475 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
53476 WHERE 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 BEFORE INSERT ON t0_aux FOR EACH ROW
53483 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53484 f_charbig = 'updated by trigger'
53485 WHERE f_int1 = new.f_int1;
53487 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53488 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
53489 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53491 # check trigger-1 success: 1
53492 DROP TRIGGER trg_1;
53493 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53494 f_int2 = CAST(f_char1 AS SIGNED INT),
53495 f_charbig = 'just inserted'
53496 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53498 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53499 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53500 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53501 'just inserted' FROM t0_template
53502 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53503 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
53505 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53506 f_charbig = 'updated by trigger'
53507 WHERE f_int1 = new.f_int1;
53509 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53510 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
53511 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53513 # check trigger-2 success: 1
53514 DROP TRIGGER trg_1;
53515 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53516 f_int2 = CAST(f_char1 AS SIGNED INT),
53517 f_charbig = 'just inserted'
53518 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53520 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53521 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53522 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53523 'just inserted' FROM t0_template
53524 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53525 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
53527 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53528 f_charbig = 'updated by trigger'
53529 WHERE f_int1 = new.f_int1;
53531 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
53532 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53534 # check trigger-3 success: 1
53535 DROP TRIGGER trg_1;
53536 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53537 f_int2 = CAST(f_char1 AS SIGNED INT),
53538 f_charbig = 'just inserted'
53539 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53541 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53542 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53543 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53544 'just inserted' FROM t0_template
53545 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53546 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
53548 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53549 f_charbig = 'updated by trigger'
53550 WHERE f_int1 = - old.f_int1;
53552 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
53553 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53555 # check trigger-4 success: 1
53556 DROP TRIGGER trg_1;
53557 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53558 f_int2 = CAST(f_char1 AS SIGNED INT),
53559 f_charbig = 'just inserted'
53560 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53562 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53563 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53564 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53565 'just inserted' FROM t0_template
53566 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53567 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
53569 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53570 f_charbig = 'updated by trigger'
53571 WHERE f_int1 = new.f_int1;
53573 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
53574 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53576 # check trigger-5 success: 1
53577 DROP TRIGGER trg_1;
53578 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53579 f_int2 = CAST(f_char1 AS SIGNED INT),
53580 f_charbig = 'just inserted'
53581 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53583 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53584 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53585 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53586 'just inserted' FROM t0_template
53587 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53588 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
53590 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53591 f_charbig = 'updated by trigger'
53592 WHERE f_int1 = - old.f_int1;
53594 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
53595 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53597 # check trigger-6 success: 1
53598 DROP TRIGGER trg_1;
53599 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53600 f_int2 = CAST(f_char1 AS SIGNED INT),
53601 f_charbig = 'just inserted'
53602 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53604 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53605 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53606 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53607 'just inserted' FROM t0_template
53608 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53609 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
53611 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53612 f_charbig = 'updated by trigger'
53613 WHERE f_int1 = - old.f_int1;
53616 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53618 # check trigger-7 success: 1
53619 DROP TRIGGER trg_1;
53620 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53621 f_int2 = CAST(f_char1 AS SIGNED INT),
53622 f_charbig = 'just inserted'
53623 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53625 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53626 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
53627 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
53628 'just inserted' FROM t0_template
53629 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53630 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
53632 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
53633 f_charbig = 'updated by trigger'
53634 WHERE f_int1 = - old.f_int1;
53637 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
53639 # check trigger-8 success: 1
53640 DROP TRIGGER trg_1;
53641 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53642 f_int2 = CAST(f_char1 AS SIGNED INT),
53643 f_charbig = 'just inserted'
53644 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
53646 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53648 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53649 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
53651 SET new.f_int1 = old.f_int1 + @max_row,
53652 new.f_int2 = old.f_int2 - @max_row,
53653 new.f_charbig = '####updated per update trigger####';
53656 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
53657 f_charbig = '####updated per update statement itself####';
53659 # check trigger-9 success: 1
53660 DROP TRIGGER trg_2;
53661 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53662 f_int2 = CAST(f_char1 AS SIGNED INT),
53663 f_charbig = CONCAT('===',f_char1,'===');
53664 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
53666 SET new.f_int1 = new.f_int1 + @max_row,
53667 new.f_int2 = new.f_int2 - @max_row,
53668 new.f_charbig = '####updated per update trigger####';
53671 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
53672 f_charbig = '####updated per update statement itself####';
53674 # check trigger-10 success: 1
53675 DROP TRIGGER trg_2;
53676 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53677 f_int2 = CAST(f_char1 AS SIGNED INT),
53678 f_charbig = CONCAT('===',f_char1,'===');
53679 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
53681 SET new.f_int1 = @my_max1 + @counter,
53682 new.f_int2 = @my_min2 - @counter,
53683 new.f_charbig = '####updated per insert trigger####';
53684 SET @counter = @counter + 1;
53687 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
53688 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53689 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
53690 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
53691 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
53693 DROP TRIGGER trg_3;
53695 # check trigger-11 success: 1
53697 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
53698 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
53699 AND f_charbig = '####updated per insert trigger####';
53700 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
53702 SET new.f_int1 = @my_max1 + @counter,
53703 new.f_int2 = @my_min2 - @counter,
53704 new.f_charbig = '####updated per insert trigger####';
53705 SET @counter = @counter + 1;
53708 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
53709 INSERT INTO t1 (f_char1, f_char2, f_charbig)
53710 SELECT CAST(f_int1 AS CHAR),
53711 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
53712 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
53714 DROP TRIGGER trg_3;
53716 # check trigger-12 success: 1
53718 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
53719 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
53720 AND f_charbig = '####updated per insert trigger####';
53722 Table Op Msg_type Msg_text
53723 test.t1 analyze status OK
53724 CHECK TABLE t1 EXTENDED;
53725 Table Op Msg_type Msg_text
53726 test.t1 check status OK
53727 CHECKSUM TABLE t1 EXTENDED;
53729 test.t1 <some_value>
53731 Table Op Msg_type Msg_text
53732 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
53733 test.t1 optimize status OK
53734 # check layout success: 1
53735 REPAIR TABLE t1 EXTENDED;
53736 Table Op Msg_type Msg_text
53737 test.t1 repair note The storage engine for the table doesn't support repair
53738 # check layout success: 1
53741 # check TRUNCATE success: 1
53742 # check layout success: 1
53743 # End usability test (inc/partition_check.inc)
53750 f_charbig VARCHAR(1000)
53751 , UNIQUE INDEX uidx (f_int2,f_int1)
53753 PARTITION BY RANGE(f_int1)
53754 (PARTITION parta VALUES LESS THAN (0),
53755 PARTITION partb VALUES LESS THAN (5),
53756 PARTITION partc VALUES LESS THAN (10),
53757 PARTITION partd VALUES LESS THAN (10 + 5),
53758 PARTITION parte VALUES LESS THAN (20),
53759 PARTITION partf VALUES LESS THAN (2147483646));
53760 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
53761 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
53762 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
53763 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
53764 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
53765 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
53766 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
53767 # Start usability test (inc/partition_check.inc)
53769 SHOW CREATE TABLE t1;
53771 t1 CREATE TABLE `t1` (
53772 `f_int1` mediumint(9) DEFAULT NULL,
53773 `f_int2` mediumint(9) DEFAULT NULL,
53774 `f_char1` char(20) DEFAULT NULL,
53775 `f_char2` char(20) DEFAULT NULL,
53776 `f_charbig` varchar(1000) DEFAULT NULL,
53777 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
53778 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
53779 /*!50100 PARTITION BY RANGE (f_int1)
53780 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
53781 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
53782 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
53783 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
53784 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
53785 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
53787 # check prerequisites-1 success: 1
53788 # check COUNT(*) success: 1
53789 # check MIN/MAX(f_int1) success: 1
53790 # check MIN/MAX(f_int2) success: 1
53791 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53792 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
53793 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
53794 WHERE f_int1 IN (2,3);
53795 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
53796 # check prerequisites-3 success: 1
53797 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
53798 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53799 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
53800 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
53801 WHERE f_int1 IN (2,3);
53802 DELETE FROM t1 WHERE f_charbig = 'delete me';
53803 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53804 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
53805 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
53806 WHERE f_int1 IN (2,3);
53807 DELETE FROM t1 WHERE f_charbig = 'delete me';
53808 # check read via f_int1 success: 1
53809 # check read via f_int2 success: 1
53811 # check multiple-1 success: 1
53812 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
53814 # check multiple-2 success: 1
53815 INSERT INTO t1 SELECT * FROM t0_template
53816 WHERE MOD(f_int1,3) = 0;
53818 # check multiple-3 success: 1
53819 UPDATE t1 SET f_int1 = f_int1 + @max_row
53820 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
53821 AND @max_row_div2 + @max_row_div4;
53823 # check multiple-4 success: 1
53825 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
53826 AND @max_row_div2 + @max_row_div4 + @max_row;
53828 # check multiple-5 success: 1
53829 SELECT COUNT(*) INTO @try_count FROM t0_template
53830 WHERE MOD(f_int1,3) = 0
53831 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
53832 SELECT COUNT(*) INTO @clash_count
53833 FROM t1 INNER JOIN t0_template USING(f_int1)
53834 WHERE MOD(f_int1,3) = 0
53835 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
53836 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
53838 SET f_int1 = @cur_value , f_int2 = @cur_value,
53839 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
53840 f_charbig = '#SINGLE#';
53842 # check single-1 success: 1
53843 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
53845 SET f_int1 = @cur_value , f_int2 = @cur_value,
53846 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
53847 f_charbig = '#SINGLE#';
53849 # check single-2 success: 1
53850 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
53851 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
53852 UPDATE t1 SET f_int1 = @cur_value2
53853 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
53855 # check single-3 success: 1
53856 SET @cur_value1= -1;
53857 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
53858 UPDATE t1 SET f_int1 = @cur_value1
53859 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
53861 # check single-4 success: 1
53862 SELECT MAX(f_int1) INTO @cur_value FROM t1;
53863 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
53865 # check single-5 success: 1
53866 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
53868 # check single-6 success: 1
53869 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
53871 Warning 1264 Out of range value for column 'f_int1' at row 1
53872 Warning 1264 Out of range value for column 'f_int2' at row 1
53874 # check single-7 success: 1
53875 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
53876 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
53877 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
53878 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
53879 f_charbig = '#NULL#';
53881 SET f_int1 = NULL , f_int2 = -@max_row,
53882 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
53883 f_charbig = '#NULL#';
53884 # check null success: 1
53886 # check null-1 success: 1
53887 UPDATE t1 SET f_int1 = -@max_row
53888 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
53889 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
53891 # check null-2 success: 1
53892 UPDATE t1 SET f_int1 = NULL
53893 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
53894 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
53896 # check null-3 success: 1
53898 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
53899 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
53901 # check null-4 success: 1
53903 WHERE f_int1 = 0 AND f_int2 = 0
53904 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
53905 AND f_charbig = '#NULL#';
53906 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53907 SELECT f_int1, f_int1, '', '', 'was inserted'
53908 FROM t0_template source_tab
53909 WHERE MOD(f_int1,3) = 0
53910 AND f_int1 BETWEEN @max_row_div2 AND @max_row
53912 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
53913 f_int2 = 2 * @max_row + source_tab.f_int1,
53914 f_charbig = 'was updated';
53916 # check unique-1-a success: 1
53918 # check unique-1-b success: 1
53919 DELETE FROM t1 WHERE f_charbig = 'was inserted';
53920 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
53921 f_int2 = CAST(f_char1 AS SIGNED INT),
53922 f_charbig = CONCAT('===',f_char1,'===')
53923 WHERE f_charbig = 'was updated';
53924 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53925 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
53926 FROM t0_template source_tab
53927 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
53929 # check replace success: 1
53931 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
53933 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
53934 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
53935 UPDATE t1 SET f_int2 = f_int1,
53936 f_char1 = CAST(f_int1 AS CHAR),
53937 f_char2 = CAST(f_int1 AS CHAR),
53938 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
53939 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
53941 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53942 SELECT f_int1, f_int1, '', '', 'was inserted'
53943 FROM t0_template source_tab
53944 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
53946 # check transactions-1 success: 1
53949 # check transactions-2 success: 1
53952 # check transactions-3 success: 1
53953 DELETE FROM t1 WHERE f_charbig = 'was inserted';
53957 # check transactions-4 success: 1
53958 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53959 SELECT f_int1, f_int1, '', '', 'was inserted'
53960 FROM t0_template source_tab
53961 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
53963 # check transactions-5 success: 1
53966 # check transactions-6 success: 1
53967 # INFO: Storage engine used for t1 seems to be transactional.
53970 # check transactions-7 success: 1
53971 DELETE FROM t1 WHERE f_charbig = 'was inserted';
53973 SET @@session.sql_mode = 'traditional';
53974 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
53975 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
53976 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
53977 '', '', 'was inserted' FROM t0_template
53978 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
53979 ERROR 22012: Division by 0
53982 # check transactions-8 success: 1
53983 # INFO: Storage engine used for t1 seems to be able to revert
53984 # changes made by the failing statement.
53985 SET @@session.sql_mode = '';
53987 DELETE FROM t1 WHERE f_charbig = 'was inserted';
53989 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
53991 # check special-1 success: 1
53992 UPDATE t1 SET f_charbig = '';
53994 # check special-2 success: 1
53995 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
53996 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
53997 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
53998 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
53999 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54000 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54001 'just inserted' FROM t0_template
54002 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54003 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
54005 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54006 f_charbig = 'updated by trigger'
54007 WHERE f_int1 = new.f_int1;
54009 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54010 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
54011 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54013 # check trigger-1 success: 1
54014 DROP TRIGGER trg_1;
54015 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54016 f_int2 = CAST(f_char1 AS SIGNED INT),
54017 f_charbig = 'just inserted'
54018 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54020 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54021 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54022 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54023 'just inserted' FROM t0_template
54024 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54025 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
54027 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54028 f_charbig = 'updated by trigger'
54029 WHERE f_int1 = new.f_int1;
54031 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54032 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
54033 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54035 # check trigger-2 success: 1
54036 DROP TRIGGER trg_1;
54037 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54038 f_int2 = CAST(f_char1 AS SIGNED INT),
54039 f_charbig = 'just inserted'
54040 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54042 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54043 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54044 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54045 'just inserted' FROM t0_template
54046 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54047 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
54049 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54050 f_charbig = 'updated by trigger'
54051 WHERE f_int1 = new.f_int1;
54053 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
54054 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54056 # check trigger-3 success: 1
54057 DROP TRIGGER trg_1;
54058 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54059 f_int2 = CAST(f_char1 AS SIGNED INT),
54060 f_charbig = 'just inserted'
54061 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54063 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54064 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54065 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54066 'just inserted' FROM t0_template
54067 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54068 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
54070 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54071 f_charbig = 'updated by trigger'
54072 WHERE f_int1 = - old.f_int1;
54074 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
54075 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54077 # check trigger-4 success: 1
54078 DROP TRIGGER trg_1;
54079 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54080 f_int2 = CAST(f_char1 AS SIGNED INT),
54081 f_charbig = 'just inserted'
54082 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54084 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54085 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54086 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54087 'just inserted' FROM t0_template
54088 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54089 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
54091 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54092 f_charbig = 'updated by trigger'
54093 WHERE f_int1 = new.f_int1;
54095 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
54096 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54098 # check trigger-5 success: 1
54099 DROP TRIGGER trg_1;
54100 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54101 f_int2 = CAST(f_char1 AS SIGNED INT),
54102 f_charbig = 'just inserted'
54103 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54105 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54106 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54107 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54108 'just inserted' FROM t0_template
54109 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54110 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
54112 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54113 f_charbig = 'updated by trigger'
54114 WHERE f_int1 = - old.f_int1;
54116 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
54117 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54119 # check trigger-6 success: 1
54120 DROP TRIGGER trg_1;
54121 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54122 f_int2 = CAST(f_char1 AS SIGNED INT),
54123 f_charbig = 'just inserted'
54124 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54126 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54127 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54128 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54129 'just inserted' FROM t0_template
54130 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54131 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
54133 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54134 f_charbig = 'updated by trigger'
54135 WHERE f_int1 = - old.f_int1;
54138 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54140 # check trigger-7 success: 1
54141 DROP TRIGGER trg_1;
54142 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54143 f_int2 = CAST(f_char1 AS SIGNED INT),
54144 f_charbig = 'just inserted'
54145 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54147 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54148 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54149 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54150 'just inserted' FROM t0_template
54151 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54152 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
54154 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54155 f_charbig = 'updated by trigger'
54156 WHERE f_int1 = - old.f_int1;
54159 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54161 # check trigger-8 success: 1
54162 DROP TRIGGER trg_1;
54163 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54164 f_int2 = CAST(f_char1 AS SIGNED INT),
54165 f_charbig = 'just inserted'
54166 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54168 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54170 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54171 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
54173 SET new.f_int1 = old.f_int1 + @max_row,
54174 new.f_int2 = old.f_int2 - @max_row,
54175 new.f_charbig = '####updated per update trigger####';
54178 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
54179 f_charbig = '####updated per update statement itself####';
54181 # check trigger-9 success: 1
54182 DROP TRIGGER trg_2;
54183 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54184 f_int2 = CAST(f_char1 AS SIGNED INT),
54185 f_charbig = CONCAT('===',f_char1,'===');
54186 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
54188 SET new.f_int1 = new.f_int1 + @max_row,
54189 new.f_int2 = new.f_int2 - @max_row,
54190 new.f_charbig = '####updated per update trigger####';
54193 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
54194 f_charbig = '####updated per update statement itself####';
54196 # check trigger-10 success: 1
54197 DROP TRIGGER trg_2;
54198 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54199 f_int2 = CAST(f_char1 AS SIGNED INT),
54200 f_charbig = CONCAT('===',f_char1,'===');
54201 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
54203 SET new.f_int1 = @my_max1 + @counter,
54204 new.f_int2 = @my_min2 - @counter,
54205 new.f_charbig = '####updated per insert trigger####';
54206 SET @counter = @counter + 1;
54209 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
54210 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54211 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
54212 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
54213 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
54215 DROP TRIGGER trg_3;
54217 # check trigger-11 success: 1
54219 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
54220 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
54221 AND f_charbig = '####updated per insert trigger####';
54222 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
54224 SET new.f_int1 = @my_max1 + @counter,
54225 new.f_int2 = @my_min2 - @counter,
54226 new.f_charbig = '####updated per insert trigger####';
54227 SET @counter = @counter + 1;
54230 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
54231 INSERT INTO t1 (f_char1, f_char2, f_charbig)
54232 SELECT CAST(f_int1 AS CHAR),
54233 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
54234 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
54236 DROP TRIGGER trg_3;
54238 # check trigger-12 success: 1
54240 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
54241 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
54242 AND f_charbig = '####updated per insert trigger####';
54244 Table Op Msg_type Msg_text
54245 test.t1 analyze status OK
54246 CHECK TABLE t1 EXTENDED;
54247 Table Op Msg_type Msg_text
54248 test.t1 check status OK
54249 CHECKSUM TABLE t1 EXTENDED;
54251 test.t1 <some_value>
54253 Table Op Msg_type Msg_text
54254 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
54255 test.t1 optimize status OK
54256 # check layout success: 1
54257 REPAIR TABLE t1 EXTENDED;
54258 Table Op Msg_type Msg_text
54259 test.t1 repair note The storage engine for the table doesn't support repair
54260 # check layout success: 1
54263 # check TRUNCATE success: 1
54264 # check layout success: 1
54265 # End usability test (inc/partition_check.inc)
54272 f_charbig VARCHAR(1000)
54273 , UNIQUE INDEX uidx (f_int2,f_int1)
54275 PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
54276 (PARTITION parta VALUES LESS THAN (0),
54277 PARTITION partb VALUES LESS THAN (5),
54278 PARTITION partc VALUES LESS THAN (10),
54279 PARTITION partd VALUES LESS THAN (2147483646));
54280 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
54281 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
54282 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
54283 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
54284 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
54285 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
54286 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
54287 # Start usability test (inc/partition_check.inc)
54289 SHOW CREATE TABLE t1;
54291 t1 CREATE TABLE `t1` (
54292 `f_int1` mediumint(9) DEFAULT NULL,
54293 `f_int2` mediumint(9) DEFAULT NULL,
54294 `f_char1` char(20) DEFAULT NULL,
54295 `f_char2` char(20) DEFAULT NULL,
54296 `f_charbig` varchar(1000) DEFAULT NULL,
54297 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
54298 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
54299 /*!50100 PARTITION BY RANGE (f_int1 DIV 2)
54300 SUBPARTITION BY HASH (f_int1)
54302 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
54303 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
54304 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
54305 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
54307 # check prerequisites-1 success: 1
54308 # check COUNT(*) success: 1
54309 # check MIN/MAX(f_int1) success: 1
54310 # check MIN/MAX(f_int2) success: 1
54311 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54312 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
54313 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
54314 WHERE f_int1 IN (2,3);
54315 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
54316 # check prerequisites-3 success: 1
54317 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
54318 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54319 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
54320 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
54321 WHERE f_int1 IN (2,3);
54322 DELETE FROM t1 WHERE f_charbig = 'delete me';
54323 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54324 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
54325 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
54326 WHERE f_int1 IN (2,3);
54327 DELETE FROM t1 WHERE f_charbig = 'delete me';
54328 # check read via f_int1 success: 1
54329 # check read via f_int2 success: 1
54331 # check multiple-1 success: 1
54332 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
54334 # check multiple-2 success: 1
54335 INSERT INTO t1 SELECT * FROM t0_template
54336 WHERE MOD(f_int1,3) = 0;
54338 # check multiple-3 success: 1
54339 UPDATE t1 SET f_int1 = f_int1 + @max_row
54340 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
54341 AND @max_row_div2 + @max_row_div4;
54343 # check multiple-4 success: 1
54345 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
54346 AND @max_row_div2 + @max_row_div4 + @max_row;
54348 # check multiple-5 success: 1
54349 SELECT COUNT(*) INTO @try_count FROM t0_template
54350 WHERE MOD(f_int1,3) = 0
54351 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
54352 SELECT COUNT(*) INTO @clash_count
54353 FROM t1 INNER JOIN t0_template USING(f_int1)
54354 WHERE MOD(f_int1,3) = 0
54355 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
54356 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
54358 SET f_int1 = @cur_value , f_int2 = @cur_value,
54359 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
54360 f_charbig = '#SINGLE#';
54362 # check single-1 success: 1
54363 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
54365 SET f_int1 = @cur_value , f_int2 = @cur_value,
54366 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
54367 f_charbig = '#SINGLE#';
54369 # check single-2 success: 1
54370 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
54371 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
54372 UPDATE t1 SET f_int1 = @cur_value2
54373 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
54375 # check single-3 success: 1
54376 SET @cur_value1= -1;
54377 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
54378 UPDATE t1 SET f_int1 = @cur_value1
54379 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
54381 # check single-4 success: 1
54382 SELECT MAX(f_int1) INTO @cur_value FROM t1;
54383 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
54385 # check single-5 success: 1
54386 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
54388 # check single-6 success: 1
54389 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
54391 Warning 1264 Out of range value for column 'f_int1' at row 1
54392 Warning 1264 Out of range value for column 'f_int2' at row 1
54394 # check single-7 success: 1
54395 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
54396 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
54397 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
54398 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
54399 f_charbig = '#NULL#';
54401 SET f_int1 = NULL , f_int2 = -@max_row,
54402 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
54403 f_charbig = '#NULL#';
54404 # check null success: 1
54406 # check null-1 success: 1
54407 UPDATE t1 SET f_int1 = -@max_row
54408 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
54409 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
54411 # check null-2 success: 1
54412 UPDATE t1 SET f_int1 = NULL
54413 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
54414 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
54416 # check null-3 success: 1
54418 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
54419 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
54421 # check null-4 success: 1
54423 WHERE f_int1 = 0 AND f_int2 = 0
54424 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
54425 AND f_charbig = '#NULL#';
54426 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54427 SELECT f_int1, f_int1, '', '', 'was inserted'
54428 FROM t0_template source_tab
54429 WHERE MOD(f_int1,3) = 0
54430 AND f_int1 BETWEEN @max_row_div2 AND @max_row
54432 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
54433 f_int2 = 2 * @max_row + source_tab.f_int1,
54434 f_charbig = 'was updated';
54436 # check unique-1-a success: 1
54438 # check unique-1-b success: 1
54439 DELETE FROM t1 WHERE f_charbig = 'was inserted';
54440 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54441 f_int2 = CAST(f_char1 AS SIGNED INT),
54442 f_charbig = CONCAT('===',f_char1,'===')
54443 WHERE f_charbig = 'was updated';
54444 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54445 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
54446 FROM t0_template source_tab
54447 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
54449 # check replace success: 1
54451 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
54453 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
54454 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
54455 UPDATE t1 SET f_int2 = f_int1,
54456 f_char1 = CAST(f_int1 AS CHAR),
54457 f_char2 = CAST(f_int1 AS CHAR),
54458 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
54459 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
54461 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54462 SELECT f_int1, f_int1, '', '', 'was inserted'
54463 FROM t0_template source_tab
54464 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
54466 # check transactions-1 success: 1
54469 # check transactions-2 success: 1
54472 # check transactions-3 success: 1
54473 DELETE FROM t1 WHERE f_charbig = 'was inserted';
54477 # check transactions-4 success: 1
54478 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54479 SELECT f_int1, f_int1, '', '', 'was inserted'
54480 FROM t0_template source_tab
54481 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
54483 # check transactions-5 success: 1
54486 # check transactions-6 success: 1
54487 # INFO: Storage engine used for t1 seems to be transactional.
54490 # check transactions-7 success: 1
54491 DELETE FROM t1 WHERE f_charbig = 'was inserted';
54493 SET @@session.sql_mode = 'traditional';
54494 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
54495 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54496 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
54497 '', '', 'was inserted' FROM t0_template
54498 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
54499 ERROR 22012: Division by 0
54502 # check transactions-8 success: 1
54503 # INFO: Storage engine used for t1 seems to be able to revert
54504 # changes made by the failing statement.
54505 SET @@session.sql_mode = '';
54507 DELETE FROM t1 WHERE f_charbig = 'was inserted';
54509 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
54511 # check special-1 success: 1
54512 UPDATE t1 SET f_charbig = '';
54514 # check special-2 success: 1
54515 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
54516 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
54517 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
54518 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54519 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54520 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54521 'just inserted' FROM t0_template
54522 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54523 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
54525 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54526 f_charbig = 'updated by trigger'
54527 WHERE f_int1 = new.f_int1;
54529 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54530 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
54531 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54533 # check trigger-1 success: 1
54534 DROP TRIGGER trg_1;
54535 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54536 f_int2 = CAST(f_char1 AS SIGNED INT),
54537 f_charbig = 'just inserted'
54538 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54540 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54541 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54542 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54543 'just inserted' FROM t0_template
54544 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54545 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
54547 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54548 f_charbig = 'updated by trigger'
54549 WHERE f_int1 = new.f_int1;
54551 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54552 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
54553 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54555 # check trigger-2 success: 1
54556 DROP TRIGGER trg_1;
54557 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54558 f_int2 = CAST(f_char1 AS SIGNED INT),
54559 f_charbig = 'just inserted'
54560 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54562 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54563 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54564 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54565 'just inserted' FROM t0_template
54566 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54567 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
54569 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54570 f_charbig = 'updated by trigger'
54571 WHERE f_int1 = new.f_int1;
54573 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
54574 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54576 # check trigger-3 success: 1
54577 DROP TRIGGER trg_1;
54578 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54579 f_int2 = CAST(f_char1 AS SIGNED INT),
54580 f_charbig = 'just inserted'
54581 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54583 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54584 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54585 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54586 'just inserted' FROM t0_template
54587 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54588 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
54590 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54591 f_charbig = 'updated by trigger'
54592 WHERE f_int1 = - old.f_int1;
54594 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
54595 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54597 # check trigger-4 success: 1
54598 DROP TRIGGER trg_1;
54599 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54600 f_int2 = CAST(f_char1 AS SIGNED INT),
54601 f_charbig = 'just inserted'
54602 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54604 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54605 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54606 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54607 'just inserted' FROM t0_template
54608 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54609 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
54611 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54612 f_charbig = 'updated by trigger'
54613 WHERE f_int1 = new.f_int1;
54615 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
54616 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54618 # check trigger-5 success: 1
54619 DROP TRIGGER trg_1;
54620 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54621 f_int2 = CAST(f_char1 AS SIGNED INT),
54622 f_charbig = 'just inserted'
54623 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54625 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54626 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54627 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54628 'just inserted' FROM t0_template
54629 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54630 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
54632 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54633 f_charbig = 'updated by trigger'
54634 WHERE f_int1 = - old.f_int1;
54636 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
54637 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54639 # check trigger-6 success: 1
54640 DROP TRIGGER trg_1;
54641 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54642 f_int2 = CAST(f_char1 AS SIGNED INT),
54643 f_charbig = 'just inserted'
54644 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54646 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54647 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54648 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54649 'just inserted' FROM t0_template
54650 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54651 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
54653 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54654 f_charbig = 'updated by trigger'
54655 WHERE f_int1 = - old.f_int1;
54658 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54660 # check trigger-7 success: 1
54661 DROP TRIGGER trg_1;
54662 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54663 f_int2 = CAST(f_char1 AS SIGNED INT),
54664 f_charbig = 'just inserted'
54665 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54667 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54668 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
54669 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
54670 'just inserted' FROM t0_template
54671 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54672 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
54674 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
54675 f_charbig = 'updated by trigger'
54676 WHERE f_int1 = - old.f_int1;
54679 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
54681 # check trigger-8 success: 1
54682 DROP TRIGGER trg_1;
54683 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54684 f_int2 = CAST(f_char1 AS SIGNED INT),
54685 f_charbig = 'just inserted'
54686 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
54688 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54690 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
54691 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
54693 SET new.f_int1 = old.f_int1 + @max_row,
54694 new.f_int2 = old.f_int2 - @max_row,
54695 new.f_charbig = '####updated per update trigger####';
54698 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
54699 f_charbig = '####updated per update statement itself####';
54701 # check trigger-9 success: 1
54702 DROP TRIGGER trg_2;
54703 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54704 f_int2 = CAST(f_char1 AS SIGNED INT),
54705 f_charbig = CONCAT('===',f_char1,'===');
54706 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
54708 SET new.f_int1 = new.f_int1 + @max_row,
54709 new.f_int2 = new.f_int2 - @max_row,
54710 new.f_charbig = '####updated per update trigger####';
54713 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
54714 f_charbig = '####updated per update statement itself####';
54716 # check trigger-10 success: 1
54717 DROP TRIGGER trg_2;
54718 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54719 f_int2 = CAST(f_char1 AS SIGNED INT),
54720 f_charbig = CONCAT('===',f_char1,'===');
54721 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
54723 SET new.f_int1 = @my_max1 + @counter,
54724 new.f_int2 = @my_min2 - @counter,
54725 new.f_charbig = '####updated per insert trigger####';
54726 SET @counter = @counter + 1;
54729 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
54730 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54731 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
54732 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
54733 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
54735 DROP TRIGGER trg_3;
54737 # check trigger-11 success: 1
54739 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
54740 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
54741 AND f_charbig = '####updated per insert trigger####';
54742 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
54744 SET new.f_int1 = @my_max1 + @counter,
54745 new.f_int2 = @my_min2 - @counter,
54746 new.f_charbig = '####updated per insert trigger####';
54747 SET @counter = @counter + 1;
54750 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
54751 INSERT INTO t1 (f_char1, f_char2, f_charbig)
54752 SELECT CAST(f_int1 AS CHAR),
54753 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
54754 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
54756 DROP TRIGGER trg_3;
54758 # check trigger-12 success: 1
54760 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
54761 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
54762 AND f_charbig = '####updated per insert trigger####';
54764 Table Op Msg_type Msg_text
54765 test.t1 analyze status OK
54766 CHECK TABLE t1 EXTENDED;
54767 Table Op Msg_type Msg_text
54768 test.t1 check status OK
54769 CHECKSUM TABLE t1 EXTENDED;
54771 test.t1 <some_value>
54773 Table Op Msg_type Msg_text
54774 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
54775 test.t1 optimize status OK
54776 # check layout success: 1
54777 REPAIR TABLE t1 EXTENDED;
54778 Table Op Msg_type Msg_text
54779 test.t1 repair note The storage engine for the table doesn't support repair
54780 # check layout success: 1
54783 # check TRUNCATE success: 1
54784 # check layout success: 1
54785 # End usability test (inc/partition_check.inc)
54792 f_charbig VARCHAR(1000)
54793 , UNIQUE INDEX uidx (f_int2,f_int1)
54795 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
54796 (PARTITION part1 VALUES LESS THAN (0)
54797 (SUBPARTITION subpart11, SUBPARTITION subpart12),
54798 PARTITION part2 VALUES LESS THAN (5)
54799 (SUBPARTITION subpart21, SUBPARTITION subpart22),
54800 PARTITION part3 VALUES LESS THAN (10)
54801 (SUBPARTITION subpart31, SUBPARTITION subpart32),
54802 PARTITION part4 VALUES LESS THAN (2147483646)
54803 (SUBPARTITION subpart41, SUBPARTITION subpart42));
54804 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
54805 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
54806 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
54807 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
54808 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
54809 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
54810 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
54811 # Start usability test (inc/partition_check.inc)
54813 SHOW CREATE TABLE t1;
54815 t1 CREATE TABLE `t1` (
54816 `f_int1` mediumint(9) DEFAULT NULL,
54817 `f_int2` mediumint(9) DEFAULT NULL,
54818 `f_char1` char(20) DEFAULT NULL,
54819 `f_char2` char(20) DEFAULT NULL,
54820 `f_charbig` varchar(1000) DEFAULT NULL,
54821 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
54822 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
54823 /*!50100 PARTITION BY RANGE (f_int1)
54824 SUBPARTITION BY KEY (f_int1)
54825 (PARTITION part1 VALUES LESS THAN (0)
54826 (SUBPARTITION subpart11 ENGINE = InnoDB,
54827 SUBPARTITION subpart12 ENGINE = InnoDB),
54828 PARTITION part2 VALUES LESS THAN (5)
54829 (SUBPARTITION subpart21 ENGINE = InnoDB,
54830 SUBPARTITION subpart22 ENGINE = InnoDB),
54831 PARTITION part3 VALUES LESS THAN (10)
54832 (SUBPARTITION subpart31 ENGINE = InnoDB,
54833 SUBPARTITION subpart32 ENGINE = InnoDB),
54834 PARTITION part4 VALUES LESS THAN (2147483646)
54835 (SUBPARTITION subpart41 ENGINE = InnoDB,
54836 SUBPARTITION subpart42 ENGINE = InnoDB)) */
54838 # check prerequisites-1 success: 1
54839 # check COUNT(*) success: 1
54840 # check MIN/MAX(f_int1) success: 1
54841 # check MIN/MAX(f_int2) success: 1
54842 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54843 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
54844 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
54845 WHERE f_int1 IN (2,3);
54846 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
54847 # check prerequisites-3 success: 1
54848 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
54849 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54850 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
54851 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
54852 WHERE f_int1 IN (2,3);
54853 DELETE FROM t1 WHERE f_charbig = 'delete me';
54854 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54855 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
54856 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
54857 WHERE f_int1 IN (2,3);
54858 DELETE FROM t1 WHERE f_charbig = 'delete me';
54859 # check read via f_int1 success: 1
54860 # check read via f_int2 success: 1
54862 # check multiple-1 success: 1
54863 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
54865 # check multiple-2 success: 1
54866 INSERT INTO t1 SELECT * FROM t0_template
54867 WHERE MOD(f_int1,3) = 0;
54869 # check multiple-3 success: 1
54870 UPDATE t1 SET f_int1 = f_int1 + @max_row
54871 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
54872 AND @max_row_div2 + @max_row_div4;
54874 # check multiple-4 success: 1
54876 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
54877 AND @max_row_div2 + @max_row_div4 + @max_row;
54879 # check multiple-5 success: 1
54880 SELECT COUNT(*) INTO @try_count FROM t0_template
54881 WHERE MOD(f_int1,3) = 0
54882 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
54883 SELECT COUNT(*) INTO @clash_count
54884 FROM t1 INNER JOIN t0_template USING(f_int1)
54885 WHERE MOD(f_int1,3) = 0
54886 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
54887 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
54889 SET f_int1 = @cur_value , f_int2 = @cur_value,
54890 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
54891 f_charbig = '#SINGLE#';
54893 # check single-1 success: 1
54894 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
54896 SET f_int1 = @cur_value , f_int2 = @cur_value,
54897 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
54898 f_charbig = '#SINGLE#';
54900 # check single-2 success: 1
54901 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
54902 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
54903 UPDATE t1 SET f_int1 = @cur_value2
54904 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
54906 # check single-3 success: 1
54907 SET @cur_value1= -1;
54908 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
54909 UPDATE t1 SET f_int1 = @cur_value1
54910 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
54912 # check single-4 success: 1
54913 SELECT MAX(f_int1) INTO @cur_value FROM t1;
54914 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
54916 # check single-5 success: 1
54917 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
54919 # check single-6 success: 1
54920 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
54922 Warning 1264 Out of range value for column 'f_int1' at row 1
54923 Warning 1264 Out of range value for column 'f_int2' at row 1
54925 # check single-7 success: 1
54926 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
54927 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
54928 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
54929 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
54930 f_charbig = '#NULL#';
54932 SET f_int1 = NULL , f_int2 = -@max_row,
54933 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
54934 f_charbig = '#NULL#';
54935 # check null success: 1
54937 # check null-1 success: 1
54938 UPDATE t1 SET f_int1 = -@max_row
54939 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
54940 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
54942 # check null-2 success: 1
54943 UPDATE t1 SET f_int1 = NULL
54944 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
54945 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
54947 # check null-3 success: 1
54949 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
54950 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
54952 # check null-4 success: 1
54954 WHERE f_int1 = 0 AND f_int2 = 0
54955 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
54956 AND f_charbig = '#NULL#';
54957 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54958 SELECT f_int1, f_int1, '', '', 'was inserted'
54959 FROM t0_template source_tab
54960 WHERE MOD(f_int1,3) = 0
54961 AND f_int1 BETWEEN @max_row_div2 AND @max_row
54963 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
54964 f_int2 = 2 * @max_row + source_tab.f_int1,
54965 f_charbig = 'was updated';
54967 # check unique-1-a success: 1
54969 # check unique-1-b success: 1
54970 DELETE FROM t1 WHERE f_charbig = 'was inserted';
54971 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
54972 f_int2 = CAST(f_char1 AS SIGNED INT),
54973 f_charbig = CONCAT('===',f_char1,'===')
54974 WHERE f_charbig = 'was updated';
54975 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54976 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
54977 FROM t0_template source_tab
54978 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
54980 # check replace success: 1
54982 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
54984 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
54985 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
54986 UPDATE t1 SET f_int2 = f_int1,
54987 f_char1 = CAST(f_int1 AS CHAR),
54988 f_char2 = CAST(f_int1 AS CHAR),
54989 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
54990 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
54992 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
54993 SELECT f_int1, f_int1, '', '', 'was inserted'
54994 FROM t0_template source_tab
54995 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
54997 # check transactions-1 success: 1
55000 # check transactions-2 success: 1
55003 # check transactions-3 success: 1
55004 DELETE FROM t1 WHERE f_charbig = 'was inserted';
55008 # check transactions-4 success: 1
55009 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55010 SELECT f_int1, f_int1, '', '', 'was inserted'
55011 FROM t0_template source_tab
55012 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
55014 # check transactions-5 success: 1
55017 # check transactions-6 success: 1
55018 # INFO: Storage engine used for t1 seems to be transactional.
55021 # check transactions-7 success: 1
55022 DELETE FROM t1 WHERE f_charbig = 'was inserted';
55024 SET @@session.sql_mode = 'traditional';
55025 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
55026 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55027 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
55028 '', '', 'was inserted' FROM t0_template
55029 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
55030 ERROR 22012: Division by 0
55033 # check transactions-8 success: 1
55034 # INFO: Storage engine used for t1 seems to be able to revert
55035 # changes made by the failing statement.
55036 SET @@session.sql_mode = '';
55038 DELETE FROM t1 WHERE f_charbig = 'was inserted';
55040 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
55042 # check special-1 success: 1
55043 UPDATE t1 SET f_charbig = '';
55045 # check special-2 success: 1
55046 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
55047 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
55048 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
55049 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55050 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55051 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55052 'just inserted' FROM t0_template
55053 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55054 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
55056 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55057 f_charbig = 'updated by trigger'
55058 WHERE f_int1 = new.f_int1;
55060 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55061 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
55062 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55064 # check trigger-1 success: 1
55065 DROP TRIGGER trg_1;
55066 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55067 f_int2 = CAST(f_char1 AS SIGNED INT),
55068 f_charbig = 'just inserted'
55069 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55071 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55072 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55073 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55074 'just inserted' FROM t0_template
55075 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55076 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
55078 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55079 f_charbig = 'updated by trigger'
55080 WHERE f_int1 = new.f_int1;
55082 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55083 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
55084 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55086 # check trigger-2 success: 1
55087 DROP TRIGGER trg_1;
55088 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55089 f_int2 = CAST(f_char1 AS SIGNED INT),
55090 f_charbig = 'just inserted'
55091 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55093 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55094 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55095 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55096 'just inserted' FROM t0_template
55097 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55098 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
55100 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55101 f_charbig = 'updated by trigger'
55102 WHERE f_int1 = new.f_int1;
55104 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
55105 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55107 # check trigger-3 success: 1
55108 DROP TRIGGER trg_1;
55109 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55110 f_int2 = CAST(f_char1 AS SIGNED INT),
55111 f_charbig = 'just inserted'
55112 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55114 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55115 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55116 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55117 'just inserted' FROM t0_template
55118 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55119 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
55121 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55122 f_charbig = 'updated by trigger'
55123 WHERE f_int1 = - old.f_int1;
55125 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
55126 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55128 # check trigger-4 success: 1
55129 DROP TRIGGER trg_1;
55130 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55131 f_int2 = CAST(f_char1 AS SIGNED INT),
55132 f_charbig = 'just inserted'
55133 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55135 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55136 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55137 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55138 'just inserted' FROM t0_template
55139 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55140 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
55142 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55143 f_charbig = 'updated by trigger'
55144 WHERE f_int1 = new.f_int1;
55146 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
55147 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55149 # check trigger-5 success: 1
55150 DROP TRIGGER trg_1;
55151 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55152 f_int2 = CAST(f_char1 AS SIGNED INT),
55153 f_charbig = 'just inserted'
55154 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55156 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55157 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55158 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55159 'just inserted' FROM t0_template
55160 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55161 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
55163 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55164 f_charbig = 'updated by trigger'
55165 WHERE f_int1 = - old.f_int1;
55167 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
55168 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55170 # check trigger-6 success: 1
55171 DROP TRIGGER trg_1;
55172 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55173 f_int2 = CAST(f_char1 AS SIGNED INT),
55174 f_charbig = 'just inserted'
55175 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55177 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55178 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55179 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55180 'just inserted' FROM t0_template
55181 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55182 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
55184 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55185 f_charbig = 'updated by trigger'
55186 WHERE f_int1 = - old.f_int1;
55189 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55191 # check trigger-7 success: 1
55192 DROP TRIGGER trg_1;
55193 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55194 f_int2 = CAST(f_char1 AS SIGNED INT),
55195 f_charbig = 'just inserted'
55196 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55198 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55199 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55200 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55201 'just inserted' FROM t0_template
55202 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55203 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
55205 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55206 f_charbig = 'updated by trigger'
55207 WHERE f_int1 = - old.f_int1;
55210 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55212 # check trigger-8 success: 1
55213 DROP TRIGGER trg_1;
55214 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55215 f_int2 = CAST(f_char1 AS SIGNED INT),
55216 f_charbig = 'just inserted'
55217 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55219 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55221 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55222 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
55224 SET new.f_int1 = old.f_int1 + @max_row,
55225 new.f_int2 = old.f_int2 - @max_row,
55226 new.f_charbig = '####updated per update trigger####';
55229 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
55230 f_charbig = '####updated per update statement itself####';
55232 # check trigger-9 success: 1
55233 DROP TRIGGER trg_2;
55234 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55235 f_int2 = CAST(f_char1 AS SIGNED INT),
55236 f_charbig = CONCAT('===',f_char1,'===');
55237 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
55239 SET new.f_int1 = new.f_int1 + @max_row,
55240 new.f_int2 = new.f_int2 - @max_row,
55241 new.f_charbig = '####updated per update trigger####';
55244 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
55245 f_charbig = '####updated per update statement itself####';
55247 # check trigger-10 success: 1
55248 DROP TRIGGER trg_2;
55249 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55250 f_int2 = CAST(f_char1 AS SIGNED INT),
55251 f_charbig = CONCAT('===',f_char1,'===');
55252 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
55254 SET new.f_int1 = @my_max1 + @counter,
55255 new.f_int2 = @my_min2 - @counter,
55256 new.f_charbig = '####updated per insert trigger####';
55257 SET @counter = @counter + 1;
55260 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
55261 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55262 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
55263 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
55264 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
55266 DROP TRIGGER trg_3;
55268 # check trigger-11 success: 1
55270 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
55271 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
55272 AND f_charbig = '####updated per insert trigger####';
55273 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
55275 SET new.f_int1 = @my_max1 + @counter,
55276 new.f_int2 = @my_min2 - @counter,
55277 new.f_charbig = '####updated per insert trigger####';
55278 SET @counter = @counter + 1;
55281 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
55282 INSERT INTO t1 (f_char1, f_char2, f_charbig)
55283 SELECT CAST(f_int1 AS CHAR),
55284 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
55285 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
55287 DROP TRIGGER trg_3;
55289 # check trigger-12 success: 1
55291 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
55292 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
55293 AND f_charbig = '####updated per insert trigger####';
55295 Table Op Msg_type Msg_text
55296 test.t1 analyze status OK
55297 CHECK TABLE t1 EXTENDED;
55298 Table Op Msg_type Msg_text
55299 test.t1 check status OK
55300 CHECKSUM TABLE t1 EXTENDED;
55302 test.t1 <some_value>
55304 Table Op Msg_type Msg_text
55305 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
55306 test.t1 optimize status OK
55307 # check layout success: 1
55308 REPAIR TABLE t1 EXTENDED;
55309 Table Op Msg_type Msg_text
55310 test.t1 repair note The storage engine for the table doesn't support repair
55311 # check layout success: 1
55314 # check TRUNCATE success: 1
55315 # check layout success: 1
55316 # End usability test (inc/partition_check.inc)
55323 f_charbig VARCHAR(1000)
55324 , UNIQUE INDEX uidx (f_int2,f_int1)
55326 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
55327 (PARTITION part1 VALUES IN (0)
55328 (SUBPARTITION sp11, SUBPARTITION sp12),
55329 PARTITION part2 VALUES IN (1)
55330 (SUBPARTITION sp21, SUBPARTITION sp22),
55331 PARTITION part3 VALUES IN (2)
55332 (SUBPARTITION sp31, SUBPARTITION sp32),
55333 PARTITION part4 VALUES IN (NULL)
55334 (SUBPARTITION sp41, SUBPARTITION sp42));
55335 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
55336 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
55337 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
55338 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
55339 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
55340 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
55341 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
55342 # Start usability test (inc/partition_check.inc)
55344 SHOW CREATE TABLE t1;
55346 t1 CREATE TABLE `t1` (
55347 `f_int1` mediumint(9) DEFAULT NULL,
55348 `f_int2` mediumint(9) DEFAULT NULL,
55349 `f_char1` char(20) DEFAULT NULL,
55350 `f_char2` char(20) DEFAULT NULL,
55351 `f_charbig` varchar(1000) DEFAULT NULL,
55352 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
55353 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
55354 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
55355 SUBPARTITION BY HASH (f_int1 + 1)
55356 (PARTITION part1 VALUES IN (0)
55357 (SUBPARTITION sp11 ENGINE = InnoDB,
55358 SUBPARTITION sp12 ENGINE = InnoDB),
55359 PARTITION part2 VALUES IN (1)
55360 (SUBPARTITION sp21 ENGINE = InnoDB,
55361 SUBPARTITION sp22 ENGINE = InnoDB),
55362 PARTITION part3 VALUES IN (2)
55363 (SUBPARTITION sp31 ENGINE = InnoDB,
55364 SUBPARTITION sp32 ENGINE = InnoDB),
55365 PARTITION part4 VALUES IN (NULL)
55366 (SUBPARTITION sp41 ENGINE = InnoDB,
55367 SUBPARTITION sp42 ENGINE = InnoDB)) */
55369 # check prerequisites-1 success: 1
55370 # check COUNT(*) success: 1
55371 # check MIN/MAX(f_int1) success: 1
55372 # check MIN/MAX(f_int2) success: 1
55373 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55374 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
55375 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
55376 WHERE f_int1 IN (2,3);
55377 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
55378 # check prerequisites-3 success: 1
55379 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
55380 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55381 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
55382 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
55383 WHERE f_int1 IN (2,3);
55384 DELETE FROM t1 WHERE f_charbig = 'delete me';
55385 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55386 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
55387 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
55388 WHERE f_int1 IN (2,3);
55389 DELETE FROM t1 WHERE f_charbig = 'delete me';
55390 # check read via f_int1 success: 1
55391 # check read via f_int2 success: 1
55393 # check multiple-1 success: 1
55394 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
55396 # check multiple-2 success: 1
55397 INSERT INTO t1 SELECT * FROM t0_template
55398 WHERE MOD(f_int1,3) = 0;
55400 # check multiple-3 success: 1
55401 UPDATE t1 SET f_int1 = f_int1 + @max_row
55402 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
55403 AND @max_row_div2 + @max_row_div4;
55405 # check multiple-4 success: 1
55407 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
55408 AND @max_row_div2 + @max_row_div4 + @max_row;
55410 # check multiple-5 success: 1
55411 SELECT COUNT(*) INTO @try_count FROM t0_template
55412 WHERE MOD(f_int1,3) = 0
55413 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
55414 SELECT COUNT(*) INTO @clash_count
55415 FROM t1 INNER JOIN t0_template USING(f_int1)
55416 WHERE MOD(f_int1,3) = 0
55417 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
55418 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
55420 SET f_int1 = @cur_value , f_int2 = @cur_value,
55421 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
55422 f_charbig = '#SINGLE#';
55424 # check single-1 success: 1
55425 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
55427 SET f_int1 = @cur_value , f_int2 = @cur_value,
55428 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
55429 f_charbig = '#SINGLE#';
55431 # check single-2 success: 1
55432 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
55433 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
55434 UPDATE t1 SET f_int1 = @cur_value2
55435 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
55437 # check single-3 success: 1
55438 SET @cur_value1= -1;
55439 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
55440 UPDATE t1 SET f_int1 = @cur_value1
55441 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
55443 # check single-4 success: 1
55444 SELECT MAX(f_int1) INTO @cur_value FROM t1;
55445 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
55447 # check single-5 success: 1
55448 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
55450 # check single-6 success: 1
55451 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
55453 Warning 1264 Out of range value for column 'f_int1' at row 1
55454 Warning 1264 Out of range value for column 'f_int2' at row 1
55456 # check single-7 success: 1
55457 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
55458 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
55459 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
55460 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
55461 f_charbig = '#NULL#';
55463 SET f_int1 = NULL , f_int2 = -@max_row,
55464 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
55465 f_charbig = '#NULL#';
55466 # check null success: 1
55468 # check null-1 success: 1
55469 UPDATE t1 SET f_int1 = -@max_row
55470 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
55471 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
55473 # check null-2 success: 1
55474 UPDATE t1 SET f_int1 = NULL
55475 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
55476 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
55478 # check null-3 success: 1
55480 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
55481 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
55483 # check null-4 success: 1
55485 WHERE f_int1 = 0 AND f_int2 = 0
55486 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
55487 AND f_charbig = '#NULL#';
55488 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55489 SELECT f_int1, f_int1, '', '', 'was inserted'
55490 FROM t0_template source_tab
55491 WHERE MOD(f_int1,3) = 0
55492 AND f_int1 BETWEEN @max_row_div2 AND @max_row
55494 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
55495 f_int2 = 2 * @max_row + source_tab.f_int1,
55496 f_charbig = 'was updated';
55498 # check unique-1-a success: 1
55500 # check unique-1-b success: 1
55501 DELETE FROM t1 WHERE f_charbig = 'was inserted';
55502 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55503 f_int2 = CAST(f_char1 AS SIGNED INT),
55504 f_charbig = CONCAT('===',f_char1,'===')
55505 WHERE f_charbig = 'was updated';
55506 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55507 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
55508 FROM t0_template source_tab
55509 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
55511 # check replace success: 1
55513 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
55515 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
55516 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
55517 UPDATE t1 SET f_int2 = f_int1,
55518 f_char1 = CAST(f_int1 AS CHAR),
55519 f_char2 = CAST(f_int1 AS CHAR),
55520 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
55521 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
55523 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55524 SELECT f_int1, f_int1, '', '', 'was inserted'
55525 FROM t0_template source_tab
55526 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
55528 # check transactions-1 success: 1
55531 # check transactions-2 success: 1
55534 # check transactions-3 success: 1
55535 DELETE FROM t1 WHERE f_charbig = 'was inserted';
55539 # check transactions-4 success: 1
55540 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55541 SELECT f_int1, f_int1, '', '', 'was inserted'
55542 FROM t0_template source_tab
55543 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
55545 # check transactions-5 success: 1
55548 # check transactions-6 success: 1
55549 # INFO: Storage engine used for t1 seems to be transactional.
55552 # check transactions-7 success: 1
55553 DELETE FROM t1 WHERE f_charbig = 'was inserted';
55555 SET @@session.sql_mode = 'traditional';
55556 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
55557 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55558 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
55559 '', '', 'was inserted' FROM t0_template
55560 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
55561 ERROR 22012: Division by 0
55564 # check transactions-8 success: 1
55565 # INFO: Storage engine used for t1 seems to be able to revert
55566 # changes made by the failing statement.
55567 SET @@session.sql_mode = '';
55569 DELETE FROM t1 WHERE f_charbig = 'was inserted';
55571 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
55573 # check special-1 success: 1
55574 UPDATE t1 SET f_charbig = '';
55576 # check special-2 success: 1
55577 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
55578 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
55579 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
55580 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55581 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55582 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55583 'just inserted' FROM t0_template
55584 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55585 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
55587 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55588 f_charbig = 'updated by trigger'
55589 WHERE f_int1 = new.f_int1;
55591 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55592 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
55593 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55595 # check trigger-1 success: 1
55596 DROP TRIGGER trg_1;
55597 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55598 f_int2 = CAST(f_char1 AS SIGNED INT),
55599 f_charbig = 'just inserted'
55600 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55602 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55603 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55604 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55605 'just inserted' FROM t0_template
55606 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55607 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
55609 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55610 f_charbig = 'updated by trigger'
55611 WHERE f_int1 = new.f_int1;
55613 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55614 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
55615 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55617 # check trigger-2 success: 1
55618 DROP TRIGGER trg_1;
55619 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55620 f_int2 = CAST(f_char1 AS SIGNED INT),
55621 f_charbig = 'just inserted'
55622 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55624 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55625 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55626 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55627 'just inserted' FROM t0_template
55628 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55629 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
55631 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55632 f_charbig = 'updated by trigger'
55633 WHERE f_int1 = new.f_int1;
55635 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
55636 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55638 # check trigger-3 success: 1
55639 DROP TRIGGER trg_1;
55640 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55641 f_int2 = CAST(f_char1 AS SIGNED INT),
55642 f_charbig = 'just inserted'
55643 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55645 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55646 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55647 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55648 'just inserted' FROM t0_template
55649 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55650 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
55652 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55653 f_charbig = 'updated by trigger'
55654 WHERE f_int1 = - old.f_int1;
55656 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
55657 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55659 # check trigger-4 success: 1
55660 DROP TRIGGER trg_1;
55661 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55662 f_int2 = CAST(f_char1 AS SIGNED INT),
55663 f_charbig = 'just inserted'
55664 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55666 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55667 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55668 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55669 'just inserted' FROM t0_template
55670 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55671 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
55673 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55674 f_charbig = 'updated by trigger'
55675 WHERE f_int1 = new.f_int1;
55677 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
55678 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55680 # check trigger-5 success: 1
55681 DROP TRIGGER trg_1;
55682 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55683 f_int2 = CAST(f_char1 AS SIGNED INT),
55684 f_charbig = 'just inserted'
55685 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55687 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55688 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55689 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55690 'just inserted' FROM t0_template
55691 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55692 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
55694 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55695 f_charbig = 'updated by trigger'
55696 WHERE f_int1 = - old.f_int1;
55698 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
55699 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55701 # check trigger-6 success: 1
55702 DROP TRIGGER trg_1;
55703 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55704 f_int2 = CAST(f_char1 AS SIGNED INT),
55705 f_charbig = 'just inserted'
55706 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55708 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55709 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55710 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55711 'just inserted' FROM t0_template
55712 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55713 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
55715 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55716 f_charbig = 'updated by trigger'
55717 WHERE f_int1 = - old.f_int1;
55720 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55722 # check trigger-7 success: 1
55723 DROP TRIGGER trg_1;
55724 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55725 f_int2 = CAST(f_char1 AS SIGNED INT),
55726 f_charbig = 'just inserted'
55727 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55729 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55730 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
55731 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
55732 'just inserted' FROM t0_template
55733 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55734 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
55736 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
55737 f_charbig = 'updated by trigger'
55738 WHERE f_int1 = - old.f_int1;
55741 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
55743 # check trigger-8 success: 1
55744 DROP TRIGGER trg_1;
55745 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55746 f_int2 = CAST(f_char1 AS SIGNED INT),
55747 f_charbig = 'just inserted'
55748 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
55750 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55752 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
55753 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
55755 SET new.f_int1 = old.f_int1 + @max_row,
55756 new.f_int2 = old.f_int2 - @max_row,
55757 new.f_charbig = '####updated per update trigger####';
55760 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
55761 f_charbig = '####updated per update statement itself####';
55763 # check trigger-9 success: 1
55764 DROP TRIGGER trg_2;
55765 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55766 f_int2 = CAST(f_char1 AS SIGNED INT),
55767 f_charbig = CONCAT('===',f_char1,'===');
55768 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
55770 SET new.f_int1 = new.f_int1 + @max_row,
55771 new.f_int2 = new.f_int2 - @max_row,
55772 new.f_charbig = '####updated per update trigger####';
55775 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
55776 f_charbig = '####updated per update statement itself####';
55778 # check trigger-10 success: 1
55779 DROP TRIGGER trg_2;
55780 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
55781 f_int2 = CAST(f_char1 AS SIGNED INT),
55782 f_charbig = CONCAT('===',f_char1,'===');
55783 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
55785 SET new.f_int1 = @my_max1 + @counter,
55786 new.f_int2 = @my_min2 - @counter,
55787 new.f_charbig = '####updated per insert trigger####';
55788 SET @counter = @counter + 1;
55791 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
55792 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55793 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
55794 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
55795 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
55797 DROP TRIGGER trg_3;
55799 # check trigger-11 success: 1
55801 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
55802 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
55803 AND f_charbig = '####updated per insert trigger####';
55804 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
55806 SET new.f_int1 = @my_max1 + @counter,
55807 new.f_int2 = @my_min2 - @counter,
55808 new.f_charbig = '####updated per insert trigger####';
55809 SET @counter = @counter + 1;
55812 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
55813 INSERT INTO t1 (f_char1, f_char2, f_charbig)
55814 SELECT CAST(f_int1 AS CHAR),
55815 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
55816 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
55818 DROP TRIGGER trg_3;
55820 # check trigger-12 success: 1
55822 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
55823 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
55824 AND f_charbig = '####updated per insert trigger####';
55826 Table Op Msg_type Msg_text
55827 test.t1 analyze status OK
55828 CHECK TABLE t1 EXTENDED;
55829 Table Op Msg_type Msg_text
55830 test.t1 check status OK
55831 CHECKSUM TABLE t1 EXTENDED;
55833 test.t1 <some_value>
55835 Table Op Msg_type Msg_text
55836 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
55837 test.t1 optimize status OK
55838 # check layout success: 1
55839 REPAIR TABLE t1 EXTENDED;
55840 Table Op Msg_type Msg_text
55841 test.t1 repair note The storage engine for the table doesn't support repair
55842 # check layout success: 1
55845 # check TRUNCATE success: 1
55846 # check layout success: 1
55847 # End usability test (inc/partition_check.inc)
55854 f_charbig VARCHAR(1000)
55855 , UNIQUE INDEX uidx (f_int2,f_int1)
55857 PARTITION BY LIST(ABS(MOD(f_int1,2)))
55858 SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
55859 (PARTITION part1 VALUES IN (0),
55860 PARTITION part2 VALUES IN (1),
55861 PARTITION part3 VALUES IN (NULL));
55862 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
55863 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
55864 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
55865 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
55866 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
55867 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
55868 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
55869 # Start usability test (inc/partition_check.inc)
55871 SHOW CREATE TABLE t1;
55873 t1 CREATE TABLE `t1` (
55874 `f_int1` mediumint(9) DEFAULT NULL,
55875 `f_int2` mediumint(9) DEFAULT NULL,
55876 `f_char1` char(20) DEFAULT NULL,
55877 `f_char2` char(20) DEFAULT NULL,
55878 `f_charbig` varchar(1000) DEFAULT NULL,
55879 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
55880 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
55881 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
55882 SUBPARTITION BY KEY (f_int1)
55884 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
55885 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
55886 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
55888 # check prerequisites-1 success: 1
55889 # check COUNT(*) success: 1
55890 # check MIN/MAX(f_int1) success: 1
55891 # check MIN/MAX(f_int2) success: 1
55892 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55893 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
55894 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
55895 WHERE f_int1 IN (2,3);
55896 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
55897 # check prerequisites-3 success: 1
55898 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
55899 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55900 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
55901 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
55902 WHERE f_int1 IN (2,3);
55903 DELETE FROM t1 WHERE f_charbig = 'delete me';
55904 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
55905 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
55906 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
55907 WHERE f_int1 IN (2,3);
55908 DELETE FROM t1 WHERE f_charbig = 'delete me';
55909 # check read via f_int1 success: 1
55910 # check read via f_int2 success: 1
55912 # check multiple-1 success: 1
55913 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
55915 # check multiple-2 success: 1
55916 INSERT INTO t1 SELECT * FROM t0_template
55917 WHERE MOD(f_int1,3) = 0;
55919 # check multiple-3 success: 1
55920 UPDATE t1 SET f_int1 = f_int1 + @max_row
55921 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
55922 AND @max_row_div2 + @max_row_div4;
55924 # check multiple-4 success: 1
55926 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
55927 AND @max_row_div2 + @max_row_div4 + @max_row;
55929 # check multiple-5 success: 1
55930 SELECT COUNT(*) INTO @try_count FROM t0_template
55931 WHERE MOD(f_int1,3) = 0
55932 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
55933 SELECT COUNT(*) INTO @clash_count
55934 FROM t1 INNER JOIN t0_template USING(f_int1)
55935 WHERE MOD(f_int1,3) = 0
55936 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
55937 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
55939 SET f_int1 = @cur_value , f_int2 = @cur_value,
55940 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
55941 f_charbig = '#SINGLE#';
55943 # check single-1 success: 1
55944 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
55946 SET f_int1 = @cur_value , f_int2 = @cur_value,
55947 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
55948 f_charbig = '#SINGLE#';
55950 # check single-2 success: 1
55951 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
55952 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
55953 UPDATE t1 SET f_int1 = @cur_value2
55954 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
55956 # check single-3 success: 1
55957 SET @cur_value1= -1;
55958 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
55959 UPDATE t1 SET f_int1 = @cur_value1
55960 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
55962 # check single-4 success: 1
55963 SELECT MAX(f_int1) INTO @cur_value FROM t1;
55964 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
55966 # check single-5 success: 1
55967 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
55969 # check single-6 success: 1
55970 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
55972 Warning 1264 Out of range value for column 'f_int1' at row 1
55973 Warning 1264 Out of range value for column 'f_int2' at row 1
55975 # check single-7 success: 1
55976 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
55977 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
55978 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
55979 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
55980 f_charbig = '#NULL#';
55982 SET f_int1 = NULL , f_int2 = -@max_row,
55983 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
55984 f_charbig = '#NULL#';
55985 # check null success: 1
55987 # check null-1 success: 1
55988 UPDATE t1 SET f_int1 = -@max_row
55989 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
55990 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
55992 # check null-2 success: 1
55993 UPDATE t1 SET f_int1 = NULL
55994 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
55995 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
55997 # check null-3 success: 1
55999 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
56000 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
56002 # check null-4 success: 1
56004 WHERE f_int1 = 0 AND f_int2 = 0
56005 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
56006 AND f_charbig = '#NULL#';
56007 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56008 SELECT f_int1, f_int1, '', '', 'was inserted'
56009 FROM t0_template source_tab
56010 WHERE MOD(f_int1,3) = 0
56011 AND f_int1 BETWEEN @max_row_div2 AND @max_row
56013 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
56014 f_int2 = 2 * @max_row + source_tab.f_int1,
56015 f_charbig = 'was updated';
56017 # check unique-1-a success: 1
56019 # check unique-1-b success: 1
56020 DELETE FROM t1 WHERE f_charbig = 'was inserted';
56021 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56022 f_int2 = CAST(f_char1 AS SIGNED INT),
56023 f_charbig = CONCAT('===',f_char1,'===')
56024 WHERE f_charbig = 'was updated';
56025 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56026 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
56027 FROM t0_template source_tab
56028 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
56030 # check replace success: 1
56032 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
56034 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
56035 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
56036 UPDATE t1 SET f_int2 = f_int1,
56037 f_char1 = CAST(f_int1 AS CHAR),
56038 f_char2 = CAST(f_int1 AS CHAR),
56039 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
56040 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
56042 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56043 SELECT f_int1, f_int1, '', '', 'was inserted'
56044 FROM t0_template source_tab
56045 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
56047 # check transactions-1 success: 1
56050 # check transactions-2 success: 1
56053 # check transactions-3 success: 1
56054 DELETE FROM t1 WHERE f_charbig = 'was inserted';
56058 # check transactions-4 success: 1
56059 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56060 SELECT f_int1, f_int1, '', '', 'was inserted'
56061 FROM t0_template source_tab
56062 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
56064 # check transactions-5 success: 1
56067 # check transactions-6 success: 1
56068 # INFO: Storage engine used for t1 seems to be transactional.
56071 # check transactions-7 success: 1
56072 DELETE FROM t1 WHERE f_charbig = 'was inserted';
56074 SET @@session.sql_mode = 'traditional';
56075 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
56076 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56077 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
56078 '', '', 'was inserted' FROM t0_template
56079 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
56080 ERROR 22012: Division by 0
56083 # check transactions-8 success: 1
56084 # INFO: Storage engine used for t1 seems to be able to revert
56085 # changes made by the failing statement.
56086 SET @@session.sql_mode = '';
56088 DELETE FROM t1 WHERE f_charbig = 'was inserted';
56090 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
56092 # check special-1 success: 1
56093 UPDATE t1 SET f_charbig = '';
56095 # check special-2 success: 1
56096 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
56097 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
56098 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
56099 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56100 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56101 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56102 'just inserted' FROM t0_template
56103 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56104 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
56106 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56107 f_charbig = 'updated by trigger'
56108 WHERE f_int1 = new.f_int1;
56110 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56111 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
56112 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56114 # check trigger-1 success: 1
56115 DROP TRIGGER trg_1;
56116 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56117 f_int2 = CAST(f_char1 AS SIGNED INT),
56118 f_charbig = 'just inserted'
56119 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56121 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56122 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56123 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56124 'just inserted' FROM t0_template
56125 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56126 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
56128 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56129 f_charbig = 'updated by trigger'
56130 WHERE f_int1 = new.f_int1;
56132 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56133 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
56134 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56136 # check trigger-2 success: 1
56137 DROP TRIGGER trg_1;
56138 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56139 f_int2 = CAST(f_char1 AS SIGNED INT),
56140 f_charbig = 'just inserted'
56141 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56143 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56144 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56145 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56146 'just inserted' FROM t0_template
56147 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56148 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
56150 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56151 f_charbig = 'updated by trigger'
56152 WHERE f_int1 = new.f_int1;
56154 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
56155 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56157 # check trigger-3 success: 1
56158 DROP TRIGGER trg_1;
56159 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56160 f_int2 = CAST(f_char1 AS SIGNED INT),
56161 f_charbig = 'just inserted'
56162 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56164 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56165 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56166 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56167 'just inserted' FROM t0_template
56168 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56169 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
56171 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56172 f_charbig = 'updated by trigger'
56173 WHERE f_int1 = - old.f_int1;
56175 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
56176 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56178 # check trigger-4 success: 1
56179 DROP TRIGGER trg_1;
56180 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56181 f_int2 = CAST(f_char1 AS SIGNED INT),
56182 f_charbig = 'just inserted'
56183 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56185 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56186 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56187 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56188 'just inserted' FROM t0_template
56189 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56190 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
56192 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56193 f_charbig = 'updated by trigger'
56194 WHERE f_int1 = new.f_int1;
56196 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
56197 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56199 # check trigger-5 success: 1
56200 DROP TRIGGER trg_1;
56201 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56202 f_int2 = CAST(f_char1 AS SIGNED INT),
56203 f_charbig = 'just inserted'
56204 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56206 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56207 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56208 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56209 'just inserted' FROM t0_template
56210 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56211 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
56213 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56214 f_charbig = 'updated by trigger'
56215 WHERE f_int1 = - old.f_int1;
56217 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
56218 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56220 # check trigger-6 success: 1
56221 DROP TRIGGER trg_1;
56222 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56223 f_int2 = CAST(f_char1 AS SIGNED INT),
56224 f_charbig = 'just inserted'
56225 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56227 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56228 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56229 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56230 'just inserted' FROM t0_template
56231 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56232 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
56234 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56235 f_charbig = 'updated by trigger'
56236 WHERE f_int1 = - old.f_int1;
56239 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56241 # check trigger-7 success: 1
56242 DROP TRIGGER trg_1;
56243 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56244 f_int2 = CAST(f_char1 AS SIGNED INT),
56245 f_charbig = 'just inserted'
56246 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56248 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56249 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56250 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56251 'just inserted' FROM t0_template
56252 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56253 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
56255 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56256 f_charbig = 'updated by trigger'
56257 WHERE f_int1 = - old.f_int1;
56260 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56262 # check trigger-8 success: 1
56263 DROP TRIGGER trg_1;
56264 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56265 f_int2 = CAST(f_char1 AS SIGNED INT),
56266 f_charbig = 'just inserted'
56267 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56269 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56271 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56272 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
56274 SET new.f_int1 = old.f_int1 + @max_row,
56275 new.f_int2 = old.f_int2 - @max_row,
56276 new.f_charbig = '####updated per update trigger####';
56279 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
56280 f_charbig = '####updated per update statement itself####';
56282 # check trigger-9 success: 1
56283 DROP TRIGGER trg_2;
56284 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56285 f_int2 = CAST(f_char1 AS SIGNED INT),
56286 f_charbig = CONCAT('===',f_char1,'===');
56287 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
56289 SET new.f_int1 = new.f_int1 + @max_row,
56290 new.f_int2 = new.f_int2 - @max_row,
56291 new.f_charbig = '####updated per update trigger####';
56294 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
56295 f_charbig = '####updated per update statement itself####';
56297 # check trigger-10 success: 1
56298 DROP TRIGGER trg_2;
56299 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56300 f_int2 = CAST(f_char1 AS SIGNED INT),
56301 f_charbig = CONCAT('===',f_char1,'===');
56302 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
56304 SET new.f_int1 = @my_max1 + @counter,
56305 new.f_int2 = @my_min2 - @counter,
56306 new.f_charbig = '####updated per insert trigger####';
56307 SET @counter = @counter + 1;
56310 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
56311 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56312 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
56313 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
56314 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
56316 DROP TRIGGER trg_3;
56318 # check trigger-11 success: 1
56320 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
56321 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
56322 AND f_charbig = '####updated per insert trigger####';
56323 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
56325 SET new.f_int1 = @my_max1 + @counter,
56326 new.f_int2 = @my_min2 - @counter,
56327 new.f_charbig = '####updated per insert trigger####';
56328 SET @counter = @counter + 1;
56331 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
56332 INSERT INTO t1 (f_char1, f_char2, f_charbig)
56333 SELECT CAST(f_int1 AS CHAR),
56334 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
56335 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
56337 DROP TRIGGER trg_3;
56339 # check trigger-12 success: 1
56341 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
56342 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
56343 AND f_charbig = '####updated per insert trigger####';
56345 Table Op Msg_type Msg_text
56346 test.t1 analyze status OK
56347 CHECK TABLE t1 EXTENDED;
56348 Table Op Msg_type Msg_text
56349 test.t1 check status OK
56350 CHECKSUM TABLE t1 EXTENDED;
56352 test.t1 <some_value>
56354 Table Op Msg_type Msg_text
56355 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
56356 test.t1 optimize status OK
56357 # check layout success: 1
56358 REPAIR TABLE t1 EXTENDED;
56359 Table Op Msg_type Msg_text
56360 test.t1 repair note The storage engine for the table doesn't support repair
56361 # check layout success: 1
56364 # check TRUNCATE success: 1
56365 # check layout success: 1
56366 # End usability test (inc/partition_check.inc)
56368 DROP TABLE IF EXISTS t1;
56374 f_charbig VARCHAR(1000)
56375 , UNIQUE INDEX uidx (f_int2,f_int1)
56377 PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
56378 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
56379 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
56380 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
56381 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
56382 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
56383 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
56384 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
56385 # Start usability test (inc/partition_check.inc)
56387 SHOW CREATE TABLE t1;
56389 t1 CREATE TABLE `t1` (
56390 `f_int1` mediumint(9) DEFAULT NULL,
56391 `f_int2` mediumint(9) DEFAULT NULL,
56392 `f_char1` char(20) DEFAULT NULL,
56393 `f_char2` char(20) DEFAULT NULL,
56394 `f_charbig` varchar(1000) DEFAULT NULL,
56395 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
56396 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
56397 /*!50100 PARTITION BY HASH (f_int1 + f_int2)
56400 # check prerequisites-1 success: 1
56401 # check COUNT(*) success: 1
56402 # check MIN/MAX(f_int1) success: 1
56403 # check MIN/MAX(f_int2) success: 1
56404 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56405 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
56406 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
56407 WHERE f_int1 IN (2,3);
56408 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
56409 # check prerequisites-3 success: 1
56410 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
56411 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56412 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
56413 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
56414 WHERE f_int1 IN (2,3);
56415 DELETE FROM t1 WHERE f_charbig = 'delete me';
56416 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56417 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
56418 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
56419 WHERE f_int1 IN (2,3);
56420 DELETE FROM t1 WHERE f_charbig = 'delete me';
56421 # check read via f_int1 success: 1
56422 # check read via f_int2 success: 1
56424 # check multiple-1 success: 1
56425 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
56427 # check multiple-2 success: 1
56428 INSERT INTO t1 SELECT * FROM t0_template
56429 WHERE MOD(f_int1,3) = 0;
56431 # check multiple-3 success: 1
56432 UPDATE t1 SET f_int1 = f_int1 + @max_row
56433 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
56434 AND @max_row_div2 + @max_row_div4;
56436 # check multiple-4 success: 1
56438 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
56439 AND @max_row_div2 + @max_row_div4 + @max_row;
56441 # check multiple-5 success: 1
56442 SELECT COUNT(*) INTO @try_count FROM t0_template
56443 WHERE MOD(f_int1,3) = 0
56444 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
56445 SELECT COUNT(*) INTO @clash_count
56446 FROM t1 INNER JOIN t0_template USING(f_int1)
56447 WHERE MOD(f_int1,3) = 0
56448 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
56449 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
56451 SET f_int1 = @cur_value , f_int2 = @cur_value,
56452 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
56453 f_charbig = '#SINGLE#';
56455 # check single-1 success: 1
56456 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
56458 SET f_int1 = @cur_value , f_int2 = @cur_value,
56459 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
56460 f_charbig = '#SINGLE#';
56462 # check single-2 success: 1
56463 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
56464 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
56465 UPDATE t1 SET f_int1 = @cur_value2
56466 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
56468 # check single-3 success: 1
56469 SET @cur_value1= -1;
56470 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
56471 UPDATE t1 SET f_int1 = @cur_value1
56472 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
56474 # check single-4 success: 1
56475 SELECT MAX(f_int1) INTO @cur_value FROM t1;
56476 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
56478 # check single-5 success: 1
56479 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
56481 # check single-6 success: 1
56482 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
56484 Warning 1264 Out of range value for column 'f_int1' at row 1
56485 Warning 1264 Out of range value for column 'f_int2' at row 1
56487 # check single-7 success: 1
56488 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
56489 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
56490 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
56491 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
56492 f_charbig = '#NULL#';
56494 SET f_int1 = NULL , f_int2 = -@max_row,
56495 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
56496 f_charbig = '#NULL#';
56497 # check null success: 1
56499 # check null-1 success: 1
56500 UPDATE t1 SET f_int1 = -@max_row
56501 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
56502 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
56504 # check null-2 success: 1
56505 UPDATE t1 SET f_int1 = NULL
56506 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
56507 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
56509 # check null-3 success: 1
56511 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
56512 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
56514 # check null-4 success: 1
56516 WHERE f_int1 = 0 AND f_int2 = 0
56517 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
56518 AND f_charbig = '#NULL#';
56519 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56520 SELECT f_int1, f_int1, '', '', 'was inserted'
56521 FROM t0_template source_tab
56522 WHERE MOD(f_int1,3) = 0
56523 AND f_int1 BETWEEN @max_row_div2 AND @max_row
56525 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
56526 f_int2 = 2 * @max_row + source_tab.f_int1,
56527 f_charbig = 'was updated';
56529 # check unique-1-a success: 1
56531 # check unique-1-b success: 1
56532 DELETE FROM t1 WHERE f_charbig = 'was inserted';
56533 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56534 f_int2 = CAST(f_char1 AS SIGNED INT),
56535 f_charbig = CONCAT('===',f_char1,'===')
56536 WHERE f_charbig = 'was updated';
56537 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56538 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
56539 FROM t0_template source_tab
56540 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
56542 # check replace success: 1
56544 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
56546 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
56547 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
56548 UPDATE t1 SET f_int2 = f_int1,
56549 f_char1 = CAST(f_int1 AS CHAR),
56550 f_char2 = CAST(f_int1 AS CHAR),
56551 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
56552 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
56554 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56555 SELECT f_int1, f_int1, '', '', 'was inserted'
56556 FROM t0_template source_tab
56557 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
56559 # check transactions-1 success: 1
56562 # check transactions-2 success: 1
56565 # check transactions-3 success: 1
56566 DELETE FROM t1 WHERE f_charbig = 'was inserted';
56570 # check transactions-4 success: 1
56571 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56572 SELECT f_int1, f_int1, '', '', 'was inserted'
56573 FROM t0_template source_tab
56574 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
56576 # check transactions-5 success: 1
56579 # check transactions-6 success: 1
56580 # INFO: Storage engine used for t1 seems to be transactional.
56583 # check transactions-7 success: 1
56584 DELETE FROM t1 WHERE f_charbig = 'was inserted';
56586 SET @@session.sql_mode = 'traditional';
56587 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
56588 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56589 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
56590 '', '', 'was inserted' FROM t0_template
56591 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
56592 ERROR 22012: Division by 0
56595 # check transactions-8 success: 1
56596 # INFO: Storage engine used for t1 seems to be able to revert
56597 # changes made by the failing statement.
56598 SET @@session.sql_mode = '';
56600 DELETE FROM t1 WHERE f_charbig = 'was inserted';
56602 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
56604 # check special-1 success: 1
56605 UPDATE t1 SET f_charbig = '';
56607 # check special-2 success: 1
56608 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
56609 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
56610 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
56611 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56612 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56613 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56614 'just inserted' FROM t0_template
56615 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56616 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
56618 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56619 f_charbig = 'updated by trigger'
56620 WHERE f_int1 = new.f_int1;
56622 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56623 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
56624 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56626 # check trigger-1 success: 1
56627 DROP TRIGGER trg_1;
56628 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56629 f_int2 = CAST(f_char1 AS SIGNED INT),
56630 f_charbig = 'just inserted'
56631 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56633 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56634 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56635 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56636 'just inserted' FROM t0_template
56637 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56638 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
56640 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56641 f_charbig = 'updated by trigger'
56642 WHERE f_int1 = new.f_int1;
56644 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56645 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
56646 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56648 # check trigger-2 success: 1
56649 DROP TRIGGER trg_1;
56650 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56651 f_int2 = CAST(f_char1 AS SIGNED INT),
56652 f_charbig = 'just inserted'
56653 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56655 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56656 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56657 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56658 'just inserted' FROM t0_template
56659 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56660 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
56662 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56663 f_charbig = 'updated by trigger'
56664 WHERE f_int1 = new.f_int1;
56666 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
56667 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56669 # check trigger-3 success: 1
56670 DROP TRIGGER trg_1;
56671 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56672 f_int2 = CAST(f_char1 AS SIGNED INT),
56673 f_charbig = 'just inserted'
56674 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56676 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56677 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56678 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56679 'just inserted' FROM t0_template
56680 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56681 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
56683 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56684 f_charbig = 'updated by trigger'
56685 WHERE f_int1 = - old.f_int1;
56687 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
56688 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56690 # check trigger-4 success: 1
56691 DROP TRIGGER trg_1;
56692 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56693 f_int2 = CAST(f_char1 AS SIGNED INT),
56694 f_charbig = 'just inserted'
56695 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56697 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56698 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56699 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56700 'just inserted' FROM t0_template
56701 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56702 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
56704 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56705 f_charbig = 'updated by trigger'
56706 WHERE f_int1 = new.f_int1;
56708 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
56709 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56711 # check trigger-5 success: 1
56712 DROP TRIGGER trg_1;
56713 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56714 f_int2 = CAST(f_char1 AS SIGNED INT),
56715 f_charbig = 'just inserted'
56716 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56718 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56719 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56720 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56721 'just inserted' FROM t0_template
56722 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56723 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
56725 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56726 f_charbig = 'updated by trigger'
56727 WHERE f_int1 = - old.f_int1;
56729 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
56730 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56732 # check trigger-6 success: 1
56733 DROP TRIGGER trg_1;
56734 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56735 f_int2 = CAST(f_char1 AS SIGNED INT),
56736 f_charbig = 'just inserted'
56737 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56739 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56740 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56741 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56742 'just inserted' FROM t0_template
56743 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56744 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
56746 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56747 f_charbig = 'updated by trigger'
56748 WHERE f_int1 = - old.f_int1;
56751 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56753 # check trigger-7 success: 1
56754 DROP TRIGGER trg_1;
56755 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56756 f_int2 = CAST(f_char1 AS SIGNED INT),
56757 f_charbig = 'just inserted'
56758 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56760 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56761 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
56762 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
56763 'just inserted' FROM t0_template
56764 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56765 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
56767 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
56768 f_charbig = 'updated by trigger'
56769 WHERE f_int1 = - old.f_int1;
56772 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
56774 # check trigger-8 success: 1
56775 DROP TRIGGER trg_1;
56776 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56777 f_int2 = CAST(f_char1 AS SIGNED INT),
56778 f_charbig = 'just inserted'
56779 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
56781 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56783 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
56784 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
56786 SET new.f_int1 = old.f_int1 + @max_row,
56787 new.f_int2 = old.f_int2 - @max_row,
56788 new.f_charbig = '####updated per update trigger####';
56791 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
56792 f_charbig = '####updated per update statement itself####';
56794 # check trigger-9 success: 1
56795 DROP TRIGGER trg_2;
56796 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56797 f_int2 = CAST(f_char1 AS SIGNED INT),
56798 f_charbig = CONCAT('===',f_char1,'===');
56799 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
56801 SET new.f_int1 = new.f_int1 + @max_row,
56802 new.f_int2 = new.f_int2 - @max_row,
56803 new.f_charbig = '####updated per update trigger####';
56806 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
56807 f_charbig = '####updated per update statement itself####';
56809 # check trigger-10 success: 1
56810 DROP TRIGGER trg_2;
56811 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
56812 f_int2 = CAST(f_char1 AS SIGNED INT),
56813 f_charbig = CONCAT('===',f_char1,'===');
56814 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
56816 SET new.f_int1 = @my_max1 + @counter,
56817 new.f_int2 = @my_min2 - @counter,
56818 new.f_charbig = '####updated per insert trigger####';
56819 SET @counter = @counter + 1;
56822 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
56823 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56824 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
56825 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
56826 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
56828 DROP TRIGGER trg_3;
56830 # check trigger-11 success: 1
56832 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
56833 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
56834 AND f_charbig = '####updated per insert trigger####';
56835 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
56837 SET new.f_int1 = @my_max1 + @counter,
56838 new.f_int2 = @my_min2 - @counter,
56839 new.f_charbig = '####updated per insert trigger####';
56840 SET @counter = @counter + 1;
56843 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
56844 INSERT INTO t1 (f_char1, f_char2, f_charbig)
56845 SELECT CAST(f_int1 AS CHAR),
56846 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
56847 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
56849 DROP TRIGGER trg_3;
56851 # check trigger-12 success: 1
56853 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
56854 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
56855 AND f_charbig = '####updated per insert trigger####';
56857 Table Op Msg_type Msg_text
56858 test.t1 analyze status OK
56859 CHECK TABLE t1 EXTENDED;
56860 Table Op Msg_type Msg_text
56861 test.t1 check status OK
56862 CHECKSUM TABLE t1 EXTENDED;
56864 test.t1 <some_value>
56866 Table Op Msg_type Msg_text
56867 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
56868 test.t1 optimize status OK
56869 # check layout success: 1
56870 REPAIR TABLE t1 EXTENDED;
56871 Table Op Msg_type Msg_text
56872 test.t1 repair note The storage engine for the table doesn't support repair
56873 # check layout success: 1
56876 # check TRUNCATE success: 1
56877 # check layout success: 1
56878 # End usability test (inc/partition_check.inc)
56885 f_charbig VARCHAR(1000)
56886 , UNIQUE INDEX uidx (f_int2,f_int1)
56888 PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
56889 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
56890 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
56891 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
56892 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
56893 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
56894 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
56895 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
56896 # Start usability test (inc/partition_check.inc)
56898 SHOW CREATE TABLE t1;
56900 t1 CREATE TABLE `t1` (
56901 `f_int1` mediumint(9) DEFAULT NULL,
56902 `f_int2` mediumint(9) DEFAULT NULL,
56903 `f_char1` char(20) DEFAULT NULL,
56904 `f_char2` char(20) DEFAULT NULL,
56905 `f_charbig` varchar(1000) DEFAULT NULL,
56906 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
56907 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
56908 /*!50100 PARTITION BY KEY (f_int1,f_int2)
56911 # check prerequisites-1 success: 1
56912 # check COUNT(*) success: 1
56913 # check MIN/MAX(f_int1) success: 1
56914 # check MIN/MAX(f_int2) success: 1
56915 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56916 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
56917 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
56918 WHERE f_int1 IN (2,3);
56919 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
56920 # check prerequisites-3 success: 1
56921 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
56922 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56923 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
56924 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
56925 WHERE f_int1 IN (2,3);
56926 DELETE FROM t1 WHERE f_charbig = 'delete me';
56927 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
56928 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
56929 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
56930 WHERE f_int1 IN (2,3);
56931 DELETE FROM t1 WHERE f_charbig = 'delete me';
56932 # check read via f_int1 success: 1
56933 # check read via f_int2 success: 1
56935 # check multiple-1 success: 1
56936 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
56938 # check multiple-2 success: 1
56939 INSERT INTO t1 SELECT * FROM t0_template
56940 WHERE MOD(f_int1,3) = 0;
56942 # check multiple-3 success: 1
56943 UPDATE t1 SET f_int1 = f_int1 + @max_row
56944 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
56945 AND @max_row_div2 + @max_row_div4;
56947 # check multiple-4 success: 1
56949 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
56950 AND @max_row_div2 + @max_row_div4 + @max_row;
56952 # check multiple-5 success: 1
56953 SELECT COUNT(*) INTO @try_count FROM t0_template
56954 WHERE MOD(f_int1,3) = 0
56955 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
56956 SELECT COUNT(*) INTO @clash_count
56957 FROM t1 INNER JOIN t0_template USING(f_int1)
56958 WHERE MOD(f_int1,3) = 0
56959 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
56960 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
56962 SET f_int1 = @cur_value , f_int2 = @cur_value,
56963 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
56964 f_charbig = '#SINGLE#';
56966 # check single-1 success: 1
56967 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
56969 SET f_int1 = @cur_value , f_int2 = @cur_value,
56970 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
56971 f_charbig = '#SINGLE#';
56973 # check single-2 success: 1
56974 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
56975 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
56976 UPDATE t1 SET f_int1 = @cur_value2
56977 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
56979 # check single-3 success: 1
56980 SET @cur_value1= -1;
56981 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
56982 UPDATE t1 SET f_int1 = @cur_value1
56983 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
56985 # check single-4 success: 1
56986 SELECT MAX(f_int1) INTO @cur_value FROM t1;
56987 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
56989 # check single-5 success: 1
56990 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
56992 # check single-6 success: 1
56993 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
56995 Warning 1264 Out of range value for column 'f_int1' at row 1
56996 Warning 1264 Out of range value for column 'f_int2' at row 1
56998 # check single-7 success: 1
56999 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
57000 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
57001 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
57002 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
57003 f_charbig = '#NULL#';
57005 SET f_int1 = NULL , f_int2 = -@max_row,
57006 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
57007 f_charbig = '#NULL#';
57008 # check null success: 1
57010 # check null-1 success: 1
57011 UPDATE t1 SET f_int1 = -@max_row
57012 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
57013 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
57015 # check null-2 success: 1
57016 UPDATE t1 SET f_int1 = NULL
57017 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
57018 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
57020 # check null-3 success: 1
57022 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
57023 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
57025 # check null-4 success: 1
57027 WHERE f_int1 = 0 AND f_int2 = 0
57028 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
57029 AND f_charbig = '#NULL#';
57030 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57031 SELECT f_int1, f_int1, '', '', 'was inserted'
57032 FROM t0_template source_tab
57033 WHERE MOD(f_int1,3) = 0
57034 AND f_int1 BETWEEN @max_row_div2 AND @max_row
57036 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
57037 f_int2 = 2 * @max_row + source_tab.f_int1,
57038 f_charbig = 'was updated';
57040 # check unique-1-a success: 1
57042 # check unique-1-b success: 1
57043 DELETE FROM t1 WHERE f_charbig = 'was inserted';
57044 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57045 f_int2 = CAST(f_char1 AS SIGNED INT),
57046 f_charbig = CONCAT('===',f_char1,'===')
57047 WHERE f_charbig = 'was updated';
57048 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57049 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
57050 FROM t0_template source_tab
57051 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
57053 # check replace success: 1
57055 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
57057 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
57058 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
57059 UPDATE t1 SET f_int2 = f_int1,
57060 f_char1 = CAST(f_int1 AS CHAR),
57061 f_char2 = CAST(f_int1 AS CHAR),
57062 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
57063 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
57065 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57066 SELECT f_int1, f_int1, '', '', 'was inserted'
57067 FROM t0_template source_tab
57068 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
57070 # check transactions-1 success: 1
57073 # check transactions-2 success: 1
57076 # check transactions-3 success: 1
57077 DELETE FROM t1 WHERE f_charbig = 'was inserted';
57081 # check transactions-4 success: 1
57082 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57083 SELECT f_int1, f_int1, '', '', 'was inserted'
57084 FROM t0_template source_tab
57085 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
57087 # check transactions-5 success: 1
57090 # check transactions-6 success: 1
57091 # INFO: Storage engine used for t1 seems to be transactional.
57094 # check transactions-7 success: 1
57095 DELETE FROM t1 WHERE f_charbig = 'was inserted';
57097 SET @@session.sql_mode = 'traditional';
57098 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
57099 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57100 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
57101 '', '', 'was inserted' FROM t0_template
57102 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
57103 ERROR 22012: Division by 0
57106 # check transactions-8 success: 1
57107 # INFO: Storage engine used for t1 seems to be able to revert
57108 # changes made by the failing statement.
57109 SET @@session.sql_mode = '';
57111 DELETE FROM t1 WHERE f_charbig = 'was inserted';
57113 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
57115 # check special-1 success: 1
57116 UPDATE t1 SET f_charbig = '';
57118 # check special-2 success: 1
57119 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
57120 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
57121 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
57122 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57123 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57124 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57125 'just inserted' FROM t0_template
57126 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57127 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
57129 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57130 f_charbig = 'updated by trigger'
57131 WHERE f_int1 = new.f_int1;
57133 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57134 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
57135 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57137 # check trigger-1 success: 1
57138 DROP TRIGGER trg_1;
57139 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57140 f_int2 = CAST(f_char1 AS SIGNED INT),
57141 f_charbig = 'just inserted'
57142 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57144 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57145 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57146 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57147 'just inserted' FROM t0_template
57148 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57149 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
57151 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57152 f_charbig = 'updated by trigger'
57153 WHERE f_int1 = new.f_int1;
57155 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57156 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
57157 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57159 # check trigger-2 success: 1
57160 DROP TRIGGER trg_1;
57161 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57162 f_int2 = CAST(f_char1 AS SIGNED INT),
57163 f_charbig = 'just inserted'
57164 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57166 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57167 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57168 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57169 'just inserted' FROM t0_template
57170 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57171 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
57173 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57174 f_charbig = 'updated by trigger'
57175 WHERE f_int1 = new.f_int1;
57177 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
57178 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57180 # check trigger-3 success: 1
57181 DROP TRIGGER trg_1;
57182 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57183 f_int2 = CAST(f_char1 AS SIGNED INT),
57184 f_charbig = 'just inserted'
57185 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57187 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57188 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57189 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57190 'just inserted' FROM t0_template
57191 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57192 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
57194 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57195 f_charbig = 'updated by trigger'
57196 WHERE f_int1 = - old.f_int1;
57198 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
57199 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57201 # check trigger-4 success: 1
57202 DROP TRIGGER trg_1;
57203 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57204 f_int2 = CAST(f_char1 AS SIGNED INT),
57205 f_charbig = 'just inserted'
57206 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57208 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57209 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57210 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57211 'just inserted' FROM t0_template
57212 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57213 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
57215 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57216 f_charbig = 'updated by trigger'
57217 WHERE f_int1 = new.f_int1;
57219 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
57220 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57222 # check trigger-5 success: 1
57223 DROP TRIGGER trg_1;
57224 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57225 f_int2 = CAST(f_char1 AS SIGNED INT),
57226 f_charbig = 'just inserted'
57227 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57229 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57230 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57231 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57232 'just inserted' FROM t0_template
57233 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57234 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
57236 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57237 f_charbig = 'updated by trigger'
57238 WHERE f_int1 = - old.f_int1;
57240 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
57241 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57243 # check trigger-6 success: 1
57244 DROP TRIGGER trg_1;
57245 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57246 f_int2 = CAST(f_char1 AS SIGNED INT),
57247 f_charbig = 'just inserted'
57248 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57250 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57251 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57252 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57253 'just inserted' FROM t0_template
57254 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57255 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
57257 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57258 f_charbig = 'updated by trigger'
57259 WHERE f_int1 = - old.f_int1;
57262 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57264 # check trigger-7 success: 1
57265 DROP TRIGGER trg_1;
57266 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57267 f_int2 = CAST(f_char1 AS SIGNED INT),
57268 f_charbig = 'just inserted'
57269 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57271 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57272 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57273 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57274 'just inserted' FROM t0_template
57275 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57276 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
57278 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57279 f_charbig = 'updated by trigger'
57280 WHERE f_int1 = - old.f_int1;
57283 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57285 # check trigger-8 success: 1
57286 DROP TRIGGER trg_1;
57287 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57288 f_int2 = CAST(f_char1 AS SIGNED INT),
57289 f_charbig = 'just inserted'
57290 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57292 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57294 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57295 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
57297 SET new.f_int1 = old.f_int1 + @max_row,
57298 new.f_int2 = old.f_int2 - @max_row,
57299 new.f_charbig = '####updated per update trigger####';
57302 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
57303 f_charbig = '####updated per update statement itself####';
57305 # check trigger-9 success: 1
57306 DROP TRIGGER trg_2;
57307 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57308 f_int2 = CAST(f_char1 AS SIGNED INT),
57309 f_charbig = CONCAT('===',f_char1,'===');
57310 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
57312 SET new.f_int1 = new.f_int1 + @max_row,
57313 new.f_int2 = new.f_int2 - @max_row,
57314 new.f_charbig = '####updated per update trigger####';
57317 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
57318 f_charbig = '####updated per update statement itself####';
57320 # check trigger-10 success: 1
57321 DROP TRIGGER trg_2;
57322 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57323 f_int2 = CAST(f_char1 AS SIGNED INT),
57324 f_charbig = CONCAT('===',f_char1,'===');
57325 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
57327 SET new.f_int1 = @my_max1 + @counter,
57328 new.f_int2 = @my_min2 - @counter,
57329 new.f_charbig = '####updated per insert trigger####';
57330 SET @counter = @counter + 1;
57333 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
57334 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57335 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
57336 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
57337 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
57339 DROP TRIGGER trg_3;
57341 # check trigger-11 success: 1
57343 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
57344 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
57345 AND f_charbig = '####updated per insert trigger####';
57346 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
57348 SET new.f_int1 = @my_max1 + @counter,
57349 new.f_int2 = @my_min2 - @counter,
57350 new.f_charbig = '####updated per insert trigger####';
57351 SET @counter = @counter + 1;
57354 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
57355 INSERT INTO t1 (f_char1, f_char2, f_charbig)
57356 SELECT CAST(f_int1 AS CHAR),
57357 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
57358 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
57360 DROP TRIGGER trg_3;
57362 # check trigger-12 success: 1
57364 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
57365 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
57366 AND f_charbig = '####updated per insert trigger####';
57368 Table Op Msg_type Msg_text
57369 test.t1 analyze status OK
57370 CHECK TABLE t1 EXTENDED;
57371 Table Op Msg_type Msg_text
57372 test.t1 check status OK
57373 CHECKSUM TABLE t1 EXTENDED;
57375 test.t1 <some_value>
57377 Table Op Msg_type Msg_text
57378 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
57379 test.t1 optimize status OK
57380 # check layout success: 1
57381 REPAIR TABLE t1 EXTENDED;
57382 Table Op Msg_type Msg_text
57383 test.t1 repair note The storage engine for the table doesn't support repair
57384 # check layout success: 1
57387 # check TRUNCATE success: 1
57388 # check layout success: 1
57389 # End usability test (inc/partition_check.inc)
57396 f_charbig VARCHAR(1000)
57397 , UNIQUE INDEX uidx (f_int2,f_int1)
57399 PARTITION BY LIST(MOD(f_int1 + f_int2,4))
57400 (PARTITION part_3 VALUES IN (-3),
57401 PARTITION part_2 VALUES IN (-2),
57402 PARTITION part_1 VALUES IN (-1),
57403 PARTITION part_N VALUES IN (NULL),
57404 PARTITION part0 VALUES IN (0),
57405 PARTITION part1 VALUES IN (1),
57406 PARTITION part2 VALUES IN (2),
57407 PARTITION part3 VALUES IN (3));
57408 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
57409 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
57410 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
57411 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
57412 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
57413 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
57414 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
57415 # Start usability test (inc/partition_check.inc)
57417 SHOW CREATE TABLE t1;
57419 t1 CREATE TABLE `t1` (
57420 `f_int1` mediumint(9) DEFAULT NULL,
57421 `f_int2` mediumint(9) DEFAULT NULL,
57422 `f_char1` char(20) DEFAULT NULL,
57423 `f_char2` char(20) DEFAULT NULL,
57424 `f_charbig` varchar(1000) DEFAULT NULL,
57425 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
57426 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
57427 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
57428 (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
57429 PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
57430 PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
57431 PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
57432 PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
57433 PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
57434 PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
57435 PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
57437 # check prerequisites-1 success: 1
57438 # check COUNT(*) success: 1
57439 # check MIN/MAX(f_int1) success: 1
57440 # check MIN/MAX(f_int2) success: 1
57441 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57442 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
57443 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
57444 WHERE f_int1 IN (2,3);
57445 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
57446 # check prerequisites-3 success: 1
57447 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
57448 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57449 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
57450 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
57451 WHERE f_int1 IN (2,3);
57452 DELETE FROM t1 WHERE f_charbig = 'delete me';
57453 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57454 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
57455 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
57456 WHERE f_int1 IN (2,3);
57457 DELETE FROM t1 WHERE f_charbig = 'delete me';
57458 # check read via f_int1 success: 1
57459 # check read via f_int2 success: 1
57461 # check multiple-1 success: 1
57462 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
57464 # check multiple-2 success: 1
57465 INSERT INTO t1 SELECT * FROM t0_template
57466 WHERE MOD(f_int1,3) = 0;
57468 # check multiple-3 success: 1
57469 UPDATE t1 SET f_int1 = f_int1 + @max_row
57470 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
57471 AND @max_row_div2 + @max_row_div4;
57473 # check multiple-4 success: 1
57475 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
57476 AND @max_row_div2 + @max_row_div4 + @max_row;
57478 # check multiple-5 success: 1
57479 SELECT COUNT(*) INTO @try_count FROM t0_template
57480 WHERE MOD(f_int1,3) = 0
57481 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
57482 SELECT COUNT(*) INTO @clash_count
57483 FROM t1 INNER JOIN t0_template USING(f_int1)
57484 WHERE MOD(f_int1,3) = 0
57485 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
57486 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
57488 SET f_int1 = @cur_value , f_int2 = @cur_value,
57489 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
57490 f_charbig = '#SINGLE#';
57492 # check single-1 success: 1
57493 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
57495 SET f_int1 = @cur_value , f_int2 = @cur_value,
57496 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
57497 f_charbig = '#SINGLE#';
57499 # check single-2 success: 1
57500 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
57501 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
57502 UPDATE t1 SET f_int1 = @cur_value2
57503 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
57505 # check single-3 success: 1
57506 SET @cur_value1= -1;
57507 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
57508 UPDATE t1 SET f_int1 = @cur_value1
57509 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
57511 # check single-4 success: 1
57512 SELECT MAX(f_int1) INTO @cur_value FROM t1;
57513 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
57515 # check single-5 success: 1
57516 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
57518 # check single-6 success: 1
57519 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
57521 Warning 1264 Out of range value for column 'f_int1' at row 1
57522 Warning 1264 Out of range value for column 'f_int2' at row 1
57524 # check single-7 success: 1
57525 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
57526 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
57527 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
57528 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
57529 f_charbig = '#NULL#';
57531 SET f_int1 = NULL , f_int2 = -@max_row,
57532 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
57533 f_charbig = '#NULL#';
57534 # check null success: 1
57536 # check null-1 success: 1
57537 UPDATE t1 SET f_int1 = -@max_row
57538 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
57539 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
57541 # check null-2 success: 1
57542 UPDATE t1 SET f_int1 = NULL
57543 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
57544 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
57546 # check null-3 success: 1
57548 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
57549 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
57551 # check null-4 success: 1
57553 WHERE f_int1 = 0 AND f_int2 = 0
57554 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
57555 AND f_charbig = '#NULL#';
57556 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57557 SELECT f_int1, f_int1, '', '', 'was inserted'
57558 FROM t0_template source_tab
57559 WHERE MOD(f_int1,3) = 0
57560 AND f_int1 BETWEEN @max_row_div2 AND @max_row
57562 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
57563 f_int2 = 2 * @max_row + source_tab.f_int1,
57564 f_charbig = 'was updated';
57566 # check unique-1-a success: 1
57568 # check unique-1-b success: 1
57569 DELETE FROM t1 WHERE f_charbig = 'was inserted';
57570 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57571 f_int2 = CAST(f_char1 AS SIGNED INT),
57572 f_charbig = CONCAT('===',f_char1,'===')
57573 WHERE f_charbig = 'was updated';
57574 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57575 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
57576 FROM t0_template source_tab
57577 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
57579 # check replace success: 1
57581 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
57583 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
57584 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
57585 UPDATE t1 SET f_int2 = f_int1,
57586 f_char1 = CAST(f_int1 AS CHAR),
57587 f_char2 = CAST(f_int1 AS CHAR),
57588 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
57589 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
57591 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57592 SELECT f_int1, f_int1, '', '', 'was inserted'
57593 FROM t0_template source_tab
57594 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
57596 # check transactions-1 success: 1
57599 # check transactions-2 success: 1
57602 # check transactions-3 success: 1
57603 DELETE FROM t1 WHERE f_charbig = 'was inserted';
57607 # check transactions-4 success: 1
57608 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57609 SELECT f_int1, f_int1, '', '', 'was inserted'
57610 FROM t0_template source_tab
57611 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
57613 # check transactions-5 success: 1
57616 # check transactions-6 success: 1
57617 # INFO: Storage engine used for t1 seems to be transactional.
57620 # check transactions-7 success: 1
57621 DELETE FROM t1 WHERE f_charbig = 'was inserted';
57623 SET @@session.sql_mode = 'traditional';
57624 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
57625 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57626 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
57627 '', '', 'was inserted' FROM t0_template
57628 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
57629 ERROR 22012: Division by 0
57632 # check transactions-8 success: 1
57633 # INFO: Storage engine used for t1 seems to be able to revert
57634 # changes made by the failing statement.
57635 SET @@session.sql_mode = '';
57637 DELETE FROM t1 WHERE f_charbig = 'was inserted';
57639 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
57641 # check special-1 success: 1
57642 UPDATE t1 SET f_charbig = '';
57644 # check special-2 success: 1
57645 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
57646 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
57647 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
57648 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57649 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57650 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57651 'just inserted' FROM t0_template
57652 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57653 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
57655 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57656 f_charbig = 'updated by trigger'
57657 WHERE f_int1 = new.f_int1;
57659 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57660 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
57661 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57663 # check trigger-1 success: 1
57664 DROP TRIGGER trg_1;
57665 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57666 f_int2 = CAST(f_char1 AS SIGNED INT),
57667 f_charbig = 'just inserted'
57668 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57670 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57671 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57672 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57673 'just inserted' FROM t0_template
57674 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57675 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
57677 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57678 f_charbig = 'updated by trigger'
57679 WHERE f_int1 = new.f_int1;
57681 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57682 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
57683 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57685 # check trigger-2 success: 1
57686 DROP TRIGGER trg_1;
57687 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57688 f_int2 = CAST(f_char1 AS SIGNED INT),
57689 f_charbig = 'just inserted'
57690 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57692 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57693 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57694 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57695 'just inserted' FROM t0_template
57696 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57697 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
57699 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57700 f_charbig = 'updated by trigger'
57701 WHERE f_int1 = new.f_int1;
57703 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
57704 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57706 # check trigger-3 success: 1
57707 DROP TRIGGER trg_1;
57708 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57709 f_int2 = CAST(f_char1 AS SIGNED INT),
57710 f_charbig = 'just inserted'
57711 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57713 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57714 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57715 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57716 'just inserted' FROM t0_template
57717 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57718 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
57720 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57721 f_charbig = 'updated by trigger'
57722 WHERE f_int1 = - old.f_int1;
57724 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
57725 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57727 # check trigger-4 success: 1
57728 DROP TRIGGER trg_1;
57729 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57730 f_int2 = CAST(f_char1 AS SIGNED INT),
57731 f_charbig = 'just inserted'
57732 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57734 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57735 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57736 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57737 'just inserted' FROM t0_template
57738 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57739 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
57741 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57742 f_charbig = 'updated by trigger'
57743 WHERE f_int1 = new.f_int1;
57745 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
57746 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57748 # check trigger-5 success: 1
57749 DROP TRIGGER trg_1;
57750 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57751 f_int2 = CAST(f_char1 AS SIGNED INT),
57752 f_charbig = 'just inserted'
57753 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57755 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57756 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57757 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57758 'just inserted' FROM t0_template
57759 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57760 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
57762 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57763 f_charbig = 'updated by trigger'
57764 WHERE f_int1 = - old.f_int1;
57766 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
57767 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57769 # check trigger-6 success: 1
57770 DROP TRIGGER trg_1;
57771 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57772 f_int2 = CAST(f_char1 AS SIGNED INT),
57773 f_charbig = 'just inserted'
57774 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57776 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57777 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57778 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57779 'just inserted' FROM t0_template
57780 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57781 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
57783 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57784 f_charbig = 'updated by trigger'
57785 WHERE f_int1 = - old.f_int1;
57788 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57790 # check trigger-7 success: 1
57791 DROP TRIGGER trg_1;
57792 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57793 f_int2 = CAST(f_char1 AS SIGNED INT),
57794 f_charbig = 'just inserted'
57795 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57797 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57798 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
57799 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
57800 'just inserted' FROM t0_template
57801 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57802 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
57804 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
57805 f_charbig = 'updated by trigger'
57806 WHERE f_int1 = - old.f_int1;
57809 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
57811 # check trigger-8 success: 1
57812 DROP TRIGGER trg_1;
57813 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57814 f_int2 = CAST(f_char1 AS SIGNED INT),
57815 f_charbig = 'just inserted'
57816 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
57818 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57820 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
57821 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
57823 SET new.f_int1 = old.f_int1 + @max_row,
57824 new.f_int2 = old.f_int2 - @max_row,
57825 new.f_charbig = '####updated per update trigger####';
57828 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
57829 f_charbig = '####updated per update statement itself####';
57831 # check trigger-9 success: 1
57832 DROP TRIGGER trg_2;
57833 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57834 f_int2 = CAST(f_char1 AS SIGNED INT),
57835 f_charbig = CONCAT('===',f_char1,'===');
57836 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
57838 SET new.f_int1 = new.f_int1 + @max_row,
57839 new.f_int2 = new.f_int2 - @max_row,
57840 new.f_charbig = '####updated per update trigger####';
57843 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
57844 f_charbig = '####updated per update statement itself####';
57846 # check trigger-10 success: 1
57847 DROP TRIGGER trg_2;
57848 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
57849 f_int2 = CAST(f_char1 AS SIGNED INT),
57850 f_charbig = CONCAT('===',f_char1,'===');
57851 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
57853 SET new.f_int1 = @my_max1 + @counter,
57854 new.f_int2 = @my_min2 - @counter,
57855 new.f_charbig = '####updated per insert trigger####';
57856 SET @counter = @counter + 1;
57859 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
57860 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57861 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
57862 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
57863 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
57865 DROP TRIGGER trg_3;
57867 # check trigger-11 success: 1
57869 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
57870 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
57871 AND f_charbig = '####updated per insert trigger####';
57872 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
57874 SET new.f_int1 = @my_max1 + @counter,
57875 new.f_int2 = @my_min2 - @counter,
57876 new.f_charbig = '####updated per insert trigger####';
57877 SET @counter = @counter + 1;
57880 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
57881 INSERT INTO t1 (f_char1, f_char2, f_charbig)
57882 SELECT CAST(f_int1 AS CHAR),
57883 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
57884 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
57886 DROP TRIGGER trg_3;
57888 # check trigger-12 success: 1
57890 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
57891 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
57892 AND f_charbig = '####updated per insert trigger####';
57894 Table Op Msg_type Msg_text
57895 test.t1 analyze status OK
57896 CHECK TABLE t1 EXTENDED;
57897 Table Op Msg_type Msg_text
57898 test.t1 check status OK
57899 CHECKSUM TABLE t1 EXTENDED;
57901 test.t1 <some_value>
57903 Table Op Msg_type Msg_text
57904 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
57905 test.t1 optimize status OK
57906 # check layout success: 1
57907 REPAIR TABLE t1 EXTENDED;
57908 Table Op Msg_type Msg_text
57909 test.t1 repair note The storage engine for the table doesn't support repair
57910 # check layout success: 1
57913 # check TRUNCATE success: 1
57914 # check layout success: 1
57915 # End usability test (inc/partition_check.inc)
57922 f_charbig VARCHAR(1000)
57923 , UNIQUE INDEX uidx (f_int2,f_int1)
57925 PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
57926 (PARTITION parta VALUES LESS THAN (0),
57927 PARTITION partb VALUES LESS THAN (5),
57928 PARTITION partc VALUES LESS THAN (10),
57929 PARTITION partd VALUES LESS THAN (10 + 5),
57930 PARTITION parte VALUES LESS THAN (20),
57931 PARTITION partf VALUES LESS THAN (2147483646));
57932 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
57933 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
57934 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
57935 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
57936 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
57937 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
57938 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
57939 # Start usability test (inc/partition_check.inc)
57941 SHOW CREATE TABLE t1;
57943 t1 CREATE TABLE `t1` (
57944 `f_int1` mediumint(9) DEFAULT NULL,
57945 `f_int2` mediumint(9) DEFAULT NULL,
57946 `f_char1` char(20) DEFAULT NULL,
57947 `f_char2` char(20) DEFAULT NULL,
57948 `f_charbig` varchar(1000) DEFAULT NULL,
57949 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
57950 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
57951 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
57952 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
57953 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
57954 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
57955 PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
57956 PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
57957 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
57959 # check prerequisites-1 success: 1
57960 # check COUNT(*) success: 1
57961 # check MIN/MAX(f_int1) success: 1
57962 # check MIN/MAX(f_int2) success: 1
57963 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57964 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
57965 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
57966 WHERE f_int1 IN (2,3);
57967 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
57968 # check prerequisites-3 success: 1
57969 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
57970 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57971 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
57972 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
57973 WHERE f_int1 IN (2,3);
57974 DELETE FROM t1 WHERE f_charbig = 'delete me';
57975 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
57976 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
57977 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
57978 WHERE f_int1 IN (2,3);
57979 DELETE FROM t1 WHERE f_charbig = 'delete me';
57980 # check read via f_int1 success: 1
57981 # check read via f_int2 success: 1
57983 # check multiple-1 success: 1
57984 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
57986 # check multiple-2 success: 1
57987 INSERT INTO t1 SELECT * FROM t0_template
57988 WHERE MOD(f_int1,3) = 0;
57990 # check multiple-3 success: 1
57991 UPDATE t1 SET f_int1 = f_int1 + @max_row
57992 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
57993 AND @max_row_div2 + @max_row_div4;
57995 # check multiple-4 success: 1
57997 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
57998 AND @max_row_div2 + @max_row_div4 + @max_row;
58000 # check multiple-5 success: 1
58001 SELECT COUNT(*) INTO @try_count FROM t0_template
58002 WHERE MOD(f_int1,3) = 0
58003 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
58004 SELECT COUNT(*) INTO @clash_count
58005 FROM t1 INNER JOIN t0_template USING(f_int1)
58006 WHERE MOD(f_int1,3) = 0
58007 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
58008 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
58010 SET f_int1 = @cur_value , f_int2 = @cur_value,
58011 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
58012 f_charbig = '#SINGLE#';
58014 # check single-1 success: 1
58015 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
58017 SET f_int1 = @cur_value , f_int2 = @cur_value,
58018 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
58019 f_charbig = '#SINGLE#';
58021 # check single-2 success: 1
58022 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
58023 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
58024 UPDATE t1 SET f_int1 = @cur_value2
58025 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
58027 # check single-3 success: 1
58028 SET @cur_value1= -1;
58029 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
58030 UPDATE t1 SET f_int1 = @cur_value1
58031 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
58033 # check single-4 success: 1
58034 SELECT MAX(f_int1) INTO @cur_value FROM t1;
58035 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
58037 # check single-5 success: 1
58038 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
58040 # check single-6 success: 1
58041 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
58043 Warning 1264 Out of range value for column 'f_int1' at row 1
58044 Warning 1264 Out of range value for column 'f_int2' at row 1
58046 # check single-7 success: 1
58047 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
58048 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
58049 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
58050 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
58051 f_charbig = '#NULL#';
58053 SET f_int1 = NULL , f_int2 = -@max_row,
58054 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
58055 f_charbig = '#NULL#';
58056 # check null success: 1
58058 # check null-1 success: 1
58059 UPDATE t1 SET f_int1 = -@max_row
58060 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
58061 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
58063 # check null-2 success: 1
58064 UPDATE t1 SET f_int1 = NULL
58065 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
58066 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
58068 # check null-3 success: 1
58070 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
58071 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
58073 # check null-4 success: 1
58075 WHERE f_int1 = 0 AND f_int2 = 0
58076 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
58077 AND f_charbig = '#NULL#';
58078 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58079 SELECT f_int1, f_int1, '', '', 'was inserted'
58080 FROM t0_template source_tab
58081 WHERE MOD(f_int1,3) = 0
58082 AND f_int1 BETWEEN @max_row_div2 AND @max_row
58084 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
58085 f_int2 = 2 * @max_row + source_tab.f_int1,
58086 f_charbig = 'was updated';
58088 # check unique-1-a success: 1
58090 # check unique-1-b success: 1
58091 DELETE FROM t1 WHERE f_charbig = 'was inserted';
58092 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58093 f_int2 = CAST(f_char1 AS SIGNED INT),
58094 f_charbig = CONCAT('===',f_char1,'===')
58095 WHERE f_charbig = 'was updated';
58096 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58097 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
58098 FROM t0_template source_tab
58099 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
58101 # check replace success: 1
58103 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
58105 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
58106 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
58107 UPDATE t1 SET f_int2 = f_int1,
58108 f_char1 = CAST(f_int1 AS CHAR),
58109 f_char2 = CAST(f_int1 AS CHAR),
58110 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
58111 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
58113 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58114 SELECT f_int1, f_int1, '', '', 'was inserted'
58115 FROM t0_template source_tab
58116 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
58118 # check transactions-1 success: 1
58121 # check transactions-2 success: 1
58124 # check transactions-3 success: 1
58125 DELETE FROM t1 WHERE f_charbig = 'was inserted';
58129 # check transactions-4 success: 1
58130 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58131 SELECT f_int1, f_int1, '', '', 'was inserted'
58132 FROM t0_template source_tab
58133 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
58135 # check transactions-5 success: 1
58138 # check transactions-6 success: 1
58139 # INFO: Storage engine used for t1 seems to be transactional.
58142 # check transactions-7 success: 1
58143 DELETE FROM t1 WHERE f_charbig = 'was inserted';
58145 SET @@session.sql_mode = 'traditional';
58146 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
58147 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58148 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
58149 '', '', 'was inserted' FROM t0_template
58150 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
58151 ERROR 22012: Division by 0
58154 # check transactions-8 success: 1
58155 # INFO: Storage engine used for t1 seems to be able to revert
58156 # changes made by the failing statement.
58157 SET @@session.sql_mode = '';
58159 DELETE FROM t1 WHERE f_charbig = 'was inserted';
58161 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
58163 # check special-1 success: 1
58164 UPDATE t1 SET f_charbig = '';
58166 # check special-2 success: 1
58167 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
58168 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
58169 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
58170 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58171 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58172 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58173 'just inserted' FROM t0_template
58174 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58175 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
58177 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58178 f_charbig = 'updated by trigger'
58179 WHERE f_int1 = new.f_int1;
58181 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58182 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
58183 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58185 # check trigger-1 success: 1
58186 DROP TRIGGER trg_1;
58187 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58188 f_int2 = CAST(f_char1 AS SIGNED INT),
58189 f_charbig = 'just inserted'
58190 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58192 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58193 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58194 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58195 'just inserted' FROM t0_template
58196 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58197 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
58199 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58200 f_charbig = 'updated by trigger'
58201 WHERE f_int1 = new.f_int1;
58203 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58204 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
58205 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58207 # check trigger-2 success: 1
58208 DROP TRIGGER trg_1;
58209 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58210 f_int2 = CAST(f_char1 AS SIGNED INT),
58211 f_charbig = 'just inserted'
58212 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58214 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58215 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58216 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58217 'just inserted' FROM t0_template
58218 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58219 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
58221 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58222 f_charbig = 'updated by trigger'
58223 WHERE f_int1 = new.f_int1;
58225 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
58226 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58228 # check trigger-3 success: 1
58229 DROP TRIGGER trg_1;
58230 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58231 f_int2 = CAST(f_char1 AS SIGNED INT),
58232 f_charbig = 'just inserted'
58233 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58235 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58236 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58237 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58238 'just inserted' FROM t0_template
58239 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58240 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
58242 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58243 f_charbig = 'updated by trigger'
58244 WHERE f_int1 = - old.f_int1;
58246 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
58247 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58249 # check trigger-4 success: 1
58250 DROP TRIGGER trg_1;
58251 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58252 f_int2 = CAST(f_char1 AS SIGNED INT),
58253 f_charbig = 'just inserted'
58254 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58256 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58257 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58258 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58259 'just inserted' FROM t0_template
58260 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58261 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
58263 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58264 f_charbig = 'updated by trigger'
58265 WHERE f_int1 = new.f_int1;
58267 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
58268 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58270 # check trigger-5 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);
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 UPDATE ON t0_aux FOR EACH ROW
58284 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58285 f_charbig = 'updated by trigger'
58286 WHERE f_int1 = - old.f_int1;
58288 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
58289 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58291 # check trigger-6 success: 1
58292 DROP TRIGGER trg_1;
58293 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58294 f_int2 = CAST(f_char1 AS SIGNED INT),
58295 f_charbig = 'just inserted'
58296 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58298 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58299 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58300 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58301 'just inserted' FROM t0_template
58302 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58303 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
58305 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58306 f_charbig = 'updated by trigger'
58307 WHERE f_int1 = - old.f_int1;
58310 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58312 # check trigger-7 success: 1
58313 DROP TRIGGER trg_1;
58314 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58315 f_int2 = CAST(f_char1 AS SIGNED INT),
58316 f_charbig = 'just inserted'
58317 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58319 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58320 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58321 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58322 'just inserted' FROM t0_template
58323 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58324 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
58326 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58327 f_charbig = 'updated by trigger'
58328 WHERE f_int1 = - old.f_int1;
58331 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58333 # check trigger-8 success: 1
58334 DROP TRIGGER trg_1;
58335 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58336 f_int2 = CAST(f_char1 AS SIGNED INT),
58337 f_charbig = 'just inserted'
58338 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58340 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58342 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58343 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
58345 SET new.f_int1 = old.f_int1 + @max_row,
58346 new.f_int2 = old.f_int2 - @max_row,
58347 new.f_charbig = '####updated per update trigger####';
58350 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
58351 f_charbig = '####updated per update statement itself####';
58353 # check trigger-9 success: 1
58354 DROP TRIGGER trg_2;
58355 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58356 f_int2 = CAST(f_char1 AS SIGNED INT),
58357 f_charbig = CONCAT('===',f_char1,'===');
58358 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
58360 SET new.f_int1 = new.f_int1 + @max_row,
58361 new.f_int2 = new.f_int2 - @max_row,
58362 new.f_charbig = '####updated per update trigger####';
58365 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
58366 f_charbig = '####updated per update statement itself####';
58368 # check trigger-10 success: 1
58369 DROP TRIGGER trg_2;
58370 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58371 f_int2 = CAST(f_char1 AS SIGNED INT),
58372 f_charbig = CONCAT('===',f_char1,'===');
58373 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
58375 SET new.f_int1 = @my_max1 + @counter,
58376 new.f_int2 = @my_min2 - @counter,
58377 new.f_charbig = '####updated per insert trigger####';
58378 SET @counter = @counter + 1;
58381 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
58382 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58383 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
58384 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
58385 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
58387 DROP TRIGGER trg_3;
58389 # check trigger-11 success: 1
58391 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
58392 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
58393 AND f_charbig = '####updated per insert trigger####';
58394 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
58396 SET new.f_int1 = @my_max1 + @counter,
58397 new.f_int2 = @my_min2 - @counter,
58398 new.f_charbig = '####updated per insert trigger####';
58399 SET @counter = @counter + 1;
58402 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
58403 INSERT INTO t1 (f_char1, f_char2, f_charbig)
58404 SELECT CAST(f_int1 AS CHAR),
58405 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
58406 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
58408 DROP TRIGGER trg_3;
58410 # check trigger-12 success: 1
58412 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
58413 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
58414 AND f_charbig = '####updated per insert trigger####';
58416 Table Op Msg_type Msg_text
58417 test.t1 analyze status OK
58418 CHECK TABLE t1 EXTENDED;
58419 Table Op Msg_type Msg_text
58420 test.t1 check status OK
58421 CHECKSUM TABLE t1 EXTENDED;
58423 test.t1 <some_value>
58425 Table Op Msg_type Msg_text
58426 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
58427 test.t1 optimize status OK
58428 # check layout success: 1
58429 REPAIR TABLE t1 EXTENDED;
58430 Table Op Msg_type Msg_text
58431 test.t1 repair note The storage engine for the table doesn't support repair
58432 # check layout success: 1
58435 # check TRUNCATE success: 1
58436 # check layout success: 1
58437 # End usability test (inc/partition_check.inc)
58444 f_charbig VARCHAR(1000)
58445 , UNIQUE INDEX uidx (f_int2,f_int1)
58447 PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
58448 (PARTITION parta VALUES LESS THAN (0),
58449 PARTITION partb VALUES LESS THAN (5),
58450 PARTITION partc VALUES LESS THAN (10),
58451 PARTITION partd VALUES LESS THAN (2147483646));
58452 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
58453 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
58454 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
58455 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
58456 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
58457 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
58458 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
58459 # Start usability test (inc/partition_check.inc)
58461 SHOW CREATE TABLE t1;
58463 t1 CREATE TABLE `t1` (
58464 `f_int1` mediumint(9) DEFAULT NULL,
58465 `f_int2` mediumint(9) DEFAULT NULL,
58466 `f_char1` char(20) DEFAULT NULL,
58467 `f_char2` char(20) DEFAULT NULL,
58468 `f_charbig` varchar(1000) DEFAULT NULL,
58469 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
58470 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
58471 /*!50100 PARTITION BY RANGE (f_int1)
58472 SUBPARTITION BY HASH (f_int2)
58474 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
58475 PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
58476 PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
58477 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
58479 # check prerequisites-1 success: 1
58480 # check COUNT(*) success: 1
58481 # check MIN/MAX(f_int1) success: 1
58482 # check MIN/MAX(f_int2) success: 1
58483 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58484 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
58485 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
58486 WHERE f_int1 IN (2,3);
58487 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
58488 # check prerequisites-3 success: 1
58489 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
58490 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58491 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
58492 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
58493 WHERE f_int1 IN (2,3);
58494 DELETE FROM t1 WHERE f_charbig = 'delete me';
58495 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58496 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
58497 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
58498 WHERE f_int1 IN (2,3);
58499 DELETE FROM t1 WHERE f_charbig = 'delete me';
58500 # check read via f_int1 success: 1
58501 # check read via f_int2 success: 1
58503 # check multiple-1 success: 1
58504 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
58506 # check multiple-2 success: 1
58507 INSERT INTO t1 SELECT * FROM t0_template
58508 WHERE MOD(f_int1,3) = 0;
58510 # check multiple-3 success: 1
58511 UPDATE t1 SET f_int1 = f_int1 + @max_row
58512 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
58513 AND @max_row_div2 + @max_row_div4;
58515 # check multiple-4 success: 1
58517 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
58518 AND @max_row_div2 + @max_row_div4 + @max_row;
58520 # check multiple-5 success: 1
58521 SELECT COUNT(*) INTO @try_count FROM t0_template
58522 WHERE MOD(f_int1,3) = 0
58523 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
58524 SELECT COUNT(*) INTO @clash_count
58525 FROM t1 INNER JOIN t0_template USING(f_int1)
58526 WHERE MOD(f_int1,3) = 0
58527 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
58528 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
58530 SET f_int1 = @cur_value , f_int2 = @cur_value,
58531 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
58532 f_charbig = '#SINGLE#';
58534 # check single-1 success: 1
58535 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
58537 SET f_int1 = @cur_value , f_int2 = @cur_value,
58538 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
58539 f_charbig = '#SINGLE#';
58541 # check single-2 success: 1
58542 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
58543 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
58544 UPDATE t1 SET f_int1 = @cur_value2
58545 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
58547 # check single-3 success: 1
58548 SET @cur_value1= -1;
58549 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
58550 UPDATE t1 SET f_int1 = @cur_value1
58551 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
58553 # check single-4 success: 1
58554 SELECT MAX(f_int1) INTO @cur_value FROM t1;
58555 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
58557 # check single-5 success: 1
58558 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
58560 # check single-6 success: 1
58561 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
58563 Warning 1264 Out of range value for column 'f_int1' at row 1
58564 Warning 1264 Out of range value for column 'f_int2' at row 1
58566 # check single-7 success: 1
58567 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
58568 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
58569 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
58570 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
58571 f_charbig = '#NULL#';
58573 SET f_int1 = NULL , f_int2 = -@max_row,
58574 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
58575 f_charbig = '#NULL#';
58576 # check null success: 1
58578 # check null-1 success: 1
58579 UPDATE t1 SET f_int1 = -@max_row
58580 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
58581 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
58583 # check null-2 success: 1
58584 UPDATE t1 SET f_int1 = NULL
58585 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
58586 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
58588 # check null-3 success: 1
58590 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
58591 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
58593 # check null-4 success: 1
58595 WHERE f_int1 = 0 AND f_int2 = 0
58596 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
58597 AND f_charbig = '#NULL#';
58598 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58599 SELECT f_int1, f_int1, '', '', 'was inserted'
58600 FROM t0_template source_tab
58601 WHERE MOD(f_int1,3) = 0
58602 AND f_int1 BETWEEN @max_row_div2 AND @max_row
58604 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
58605 f_int2 = 2 * @max_row + source_tab.f_int1,
58606 f_charbig = 'was updated';
58608 # check unique-1-a success: 1
58610 # check unique-1-b success: 1
58611 DELETE FROM t1 WHERE f_charbig = 'was inserted';
58612 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58613 f_int2 = CAST(f_char1 AS SIGNED INT),
58614 f_charbig = CONCAT('===',f_char1,'===')
58615 WHERE f_charbig = 'was updated';
58616 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58617 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
58618 FROM t0_template source_tab
58619 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
58621 # check replace success: 1
58623 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
58625 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
58626 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
58627 UPDATE t1 SET f_int2 = f_int1,
58628 f_char1 = CAST(f_int1 AS CHAR),
58629 f_char2 = CAST(f_int1 AS CHAR),
58630 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
58631 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
58633 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58634 SELECT f_int1, f_int1, '', '', 'was inserted'
58635 FROM t0_template source_tab
58636 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
58638 # check transactions-1 success: 1
58641 # check transactions-2 success: 1
58644 # check transactions-3 success: 1
58645 DELETE FROM t1 WHERE f_charbig = 'was inserted';
58649 # check transactions-4 success: 1
58650 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58651 SELECT f_int1, f_int1, '', '', 'was inserted'
58652 FROM t0_template source_tab
58653 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
58655 # check transactions-5 success: 1
58658 # check transactions-6 success: 1
58659 # INFO: Storage engine used for t1 seems to be transactional.
58662 # check transactions-7 success: 1
58663 DELETE FROM t1 WHERE f_charbig = 'was inserted';
58665 SET @@session.sql_mode = 'traditional';
58666 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
58667 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58668 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
58669 '', '', 'was inserted' FROM t0_template
58670 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
58671 ERROR 22012: Division by 0
58674 # check transactions-8 success: 1
58675 # INFO: Storage engine used for t1 seems to be able to revert
58676 # changes made by the failing statement.
58677 SET @@session.sql_mode = '';
58679 DELETE FROM t1 WHERE f_charbig = 'was inserted';
58681 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
58683 # check special-1 success: 1
58684 UPDATE t1 SET f_charbig = '';
58686 # check special-2 success: 1
58687 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
58688 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
58689 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
58690 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58691 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58692 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58693 'just inserted' FROM t0_template
58694 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58695 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
58697 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58698 f_charbig = 'updated by trigger'
58699 WHERE f_int1 = new.f_int1;
58701 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58702 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
58703 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58705 # check trigger-1 success: 1
58706 DROP TRIGGER trg_1;
58707 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58708 f_int2 = CAST(f_char1 AS SIGNED INT),
58709 f_charbig = 'just inserted'
58710 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58712 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58713 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58714 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58715 'just inserted' FROM t0_template
58716 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58717 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
58719 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58720 f_charbig = 'updated by trigger'
58721 WHERE f_int1 = new.f_int1;
58723 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58724 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
58725 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58727 # check trigger-2 success: 1
58728 DROP TRIGGER trg_1;
58729 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58730 f_int2 = CAST(f_char1 AS SIGNED INT),
58731 f_charbig = 'just inserted'
58732 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58734 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58735 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58736 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58737 'just inserted' FROM t0_template
58738 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58739 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
58741 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58742 f_charbig = 'updated by trigger'
58743 WHERE f_int1 = new.f_int1;
58745 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
58746 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58748 # check trigger-3 success: 1
58749 DROP TRIGGER trg_1;
58750 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58751 f_int2 = CAST(f_char1 AS SIGNED INT),
58752 f_charbig = 'just inserted'
58753 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58755 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58756 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58757 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58758 'just inserted' FROM t0_template
58759 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58760 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
58762 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58763 f_charbig = 'updated by trigger'
58764 WHERE f_int1 = - old.f_int1;
58766 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
58767 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58769 # check trigger-4 success: 1
58770 DROP TRIGGER trg_1;
58771 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58772 f_int2 = CAST(f_char1 AS SIGNED INT),
58773 f_charbig = 'just inserted'
58774 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58776 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58777 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58778 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58779 'just inserted' FROM t0_template
58780 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58781 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
58783 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58784 f_charbig = 'updated by trigger'
58785 WHERE f_int1 = new.f_int1;
58787 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
58788 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58790 # check trigger-5 success: 1
58791 DROP TRIGGER trg_1;
58792 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58793 f_int2 = CAST(f_char1 AS SIGNED INT),
58794 f_charbig = 'just inserted'
58795 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58797 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58798 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58799 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58800 'just inserted' FROM t0_template
58801 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58802 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
58804 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58805 f_charbig = 'updated by trigger'
58806 WHERE f_int1 = - old.f_int1;
58808 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
58809 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58811 # check trigger-6 success: 1
58812 DROP TRIGGER trg_1;
58813 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58814 f_int2 = CAST(f_char1 AS SIGNED INT),
58815 f_charbig = 'just inserted'
58816 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58818 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58819 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58820 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58821 'just inserted' FROM t0_template
58822 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58823 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
58825 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58826 f_charbig = 'updated by trigger'
58827 WHERE f_int1 = - old.f_int1;
58830 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58832 # check trigger-7 success: 1
58833 DROP TRIGGER trg_1;
58834 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58835 f_int2 = CAST(f_char1 AS SIGNED INT),
58836 f_charbig = 'just inserted'
58837 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58839 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58840 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
58841 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
58842 'just inserted' FROM t0_template
58843 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58844 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
58846 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
58847 f_charbig = 'updated by trigger'
58848 WHERE f_int1 = - old.f_int1;
58851 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
58853 # check trigger-8 success: 1
58854 DROP TRIGGER trg_1;
58855 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58856 f_int2 = CAST(f_char1 AS SIGNED INT),
58857 f_charbig = 'just inserted'
58858 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
58860 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58862 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
58863 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
58865 SET new.f_int1 = old.f_int1 + @max_row,
58866 new.f_int2 = old.f_int2 - @max_row,
58867 new.f_charbig = '####updated per update trigger####';
58870 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
58871 f_charbig = '####updated per update statement itself####';
58873 # check trigger-9 success: 1
58874 DROP TRIGGER trg_2;
58875 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58876 f_int2 = CAST(f_char1 AS SIGNED INT),
58877 f_charbig = CONCAT('===',f_char1,'===');
58878 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
58880 SET new.f_int1 = new.f_int1 + @max_row,
58881 new.f_int2 = new.f_int2 - @max_row,
58882 new.f_charbig = '####updated per update trigger####';
58885 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
58886 f_charbig = '####updated per update statement itself####';
58888 # check trigger-10 success: 1
58889 DROP TRIGGER trg_2;
58890 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
58891 f_int2 = CAST(f_char1 AS SIGNED INT),
58892 f_charbig = CONCAT('===',f_char1,'===');
58893 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
58895 SET new.f_int1 = @my_max1 + @counter,
58896 new.f_int2 = @my_min2 - @counter,
58897 new.f_charbig = '####updated per insert trigger####';
58898 SET @counter = @counter + 1;
58901 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
58902 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
58903 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
58904 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
58905 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
58907 DROP TRIGGER trg_3;
58909 # check trigger-11 success: 1
58911 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
58912 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
58913 AND f_charbig = '####updated per insert trigger####';
58914 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
58916 SET new.f_int1 = @my_max1 + @counter,
58917 new.f_int2 = @my_min2 - @counter,
58918 new.f_charbig = '####updated per insert trigger####';
58919 SET @counter = @counter + 1;
58922 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
58923 INSERT INTO t1 (f_char1, f_char2, f_charbig)
58924 SELECT CAST(f_int1 AS CHAR),
58925 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
58926 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
58928 DROP TRIGGER trg_3;
58930 # check trigger-12 success: 1
58932 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
58933 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
58934 AND f_charbig = '####updated per insert trigger####';
58936 Table Op Msg_type Msg_text
58937 test.t1 analyze status OK
58938 CHECK TABLE t1 EXTENDED;
58939 Table Op Msg_type Msg_text
58940 test.t1 check status OK
58941 CHECKSUM TABLE t1 EXTENDED;
58943 test.t1 <some_value>
58945 Table Op Msg_type Msg_text
58946 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
58947 test.t1 optimize status OK
58948 # check layout success: 1
58949 REPAIR TABLE t1 EXTENDED;
58950 Table Op Msg_type Msg_text
58951 test.t1 repair note The storage engine for the table doesn't support repair
58952 # check layout success: 1
58955 # check TRUNCATE success: 1
58956 # check layout success: 1
58957 # End usability test (inc/partition_check.inc)
58964 f_charbig VARCHAR(1000)
58965 , UNIQUE INDEX uidx (f_int2,f_int1)
58967 PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
58968 (PARTITION part1 VALUES LESS THAN (0)
58969 (SUBPARTITION subpart11, SUBPARTITION subpart12),
58970 PARTITION part2 VALUES LESS THAN (5)
58971 (SUBPARTITION subpart21, SUBPARTITION subpart22),
58972 PARTITION part3 VALUES LESS THAN (10)
58973 (SUBPARTITION subpart31, SUBPARTITION subpart32),
58974 PARTITION part4 VALUES LESS THAN (2147483646)
58975 (SUBPARTITION subpart41, SUBPARTITION subpart42));
58976 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
58977 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
58978 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
58979 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
58980 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
58981 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
58982 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
58983 # Start usability test (inc/partition_check.inc)
58985 SHOW CREATE TABLE t1;
58987 t1 CREATE TABLE `t1` (
58988 `f_int1` mediumint(9) DEFAULT NULL,
58989 `f_int2` mediumint(9) DEFAULT NULL,
58990 `f_char1` char(20) DEFAULT NULL,
58991 `f_char2` char(20) DEFAULT NULL,
58992 `f_charbig` varchar(1000) DEFAULT NULL,
58993 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
58994 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
58995 /*!50100 PARTITION BY RANGE (f_int1)
58996 SUBPARTITION BY KEY (f_int2)
58997 (PARTITION part1 VALUES LESS THAN (0)
58998 (SUBPARTITION subpart11 ENGINE = InnoDB,
58999 SUBPARTITION subpart12 ENGINE = InnoDB),
59000 PARTITION part2 VALUES LESS THAN (5)
59001 (SUBPARTITION subpart21 ENGINE = InnoDB,
59002 SUBPARTITION subpart22 ENGINE = InnoDB),
59003 PARTITION part3 VALUES LESS THAN (10)
59004 (SUBPARTITION subpart31 ENGINE = InnoDB,
59005 SUBPARTITION subpart32 ENGINE = InnoDB),
59006 PARTITION part4 VALUES LESS THAN (2147483646)
59007 (SUBPARTITION subpart41 ENGINE = InnoDB,
59008 SUBPARTITION subpart42 ENGINE = InnoDB)) */
59010 # check prerequisites-1 success: 1
59011 # check COUNT(*) success: 1
59012 # check MIN/MAX(f_int1) success: 1
59013 # check MIN/MAX(f_int2) success: 1
59014 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59015 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
59016 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
59017 WHERE f_int1 IN (2,3);
59018 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
59019 # check prerequisites-3 success: 1
59020 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
59021 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59022 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
59023 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
59024 WHERE f_int1 IN (2,3);
59025 DELETE FROM t1 WHERE f_charbig = 'delete me';
59026 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59027 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
59028 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
59029 WHERE f_int1 IN (2,3);
59030 DELETE FROM t1 WHERE f_charbig = 'delete me';
59031 # check read via f_int1 success: 1
59032 # check read via f_int2 success: 1
59034 # check multiple-1 success: 1
59035 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
59037 # check multiple-2 success: 1
59038 INSERT INTO t1 SELECT * FROM t0_template
59039 WHERE MOD(f_int1,3) = 0;
59041 # check multiple-3 success: 1
59042 UPDATE t1 SET f_int1 = f_int1 + @max_row
59043 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
59044 AND @max_row_div2 + @max_row_div4;
59046 # check multiple-4 success: 1
59048 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
59049 AND @max_row_div2 + @max_row_div4 + @max_row;
59051 # check multiple-5 success: 1
59052 SELECT COUNT(*) INTO @try_count FROM t0_template
59053 WHERE MOD(f_int1,3) = 0
59054 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
59055 SELECT COUNT(*) INTO @clash_count
59056 FROM t1 INNER JOIN t0_template USING(f_int1)
59057 WHERE MOD(f_int1,3) = 0
59058 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
59059 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
59061 SET f_int1 = @cur_value , f_int2 = @cur_value,
59062 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
59063 f_charbig = '#SINGLE#';
59065 # check single-1 success: 1
59066 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
59068 SET f_int1 = @cur_value , f_int2 = @cur_value,
59069 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
59070 f_charbig = '#SINGLE#';
59072 # check single-2 success: 1
59073 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
59074 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
59075 UPDATE t1 SET f_int1 = @cur_value2
59076 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
59078 # check single-3 success: 1
59079 SET @cur_value1= -1;
59080 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
59081 UPDATE t1 SET f_int1 = @cur_value1
59082 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
59084 # check single-4 success: 1
59085 SELECT MAX(f_int1) INTO @cur_value FROM t1;
59086 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
59088 # check single-5 success: 1
59089 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
59091 # check single-6 success: 1
59092 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
59094 Warning 1264 Out of range value for column 'f_int1' at row 1
59095 Warning 1264 Out of range value for column 'f_int2' at row 1
59097 # check single-7 success: 1
59098 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
59099 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
59100 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
59101 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
59102 f_charbig = '#NULL#';
59104 SET f_int1 = NULL , f_int2 = -@max_row,
59105 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
59106 f_charbig = '#NULL#';
59107 # check null success: 1
59109 # check null-1 success: 1
59110 UPDATE t1 SET f_int1 = -@max_row
59111 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
59112 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
59114 # check null-2 success: 1
59115 UPDATE t1 SET f_int1 = NULL
59116 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
59117 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
59119 # check null-3 success: 1
59121 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
59122 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
59124 # check null-4 success: 1
59126 WHERE f_int1 = 0 AND f_int2 = 0
59127 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
59128 AND f_charbig = '#NULL#';
59129 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59130 SELECT f_int1, f_int1, '', '', 'was inserted'
59131 FROM t0_template source_tab
59132 WHERE MOD(f_int1,3) = 0
59133 AND f_int1 BETWEEN @max_row_div2 AND @max_row
59135 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
59136 f_int2 = 2 * @max_row + source_tab.f_int1,
59137 f_charbig = 'was updated';
59139 # check unique-1-a success: 1
59141 # check unique-1-b success: 1
59142 DELETE FROM t1 WHERE f_charbig = 'was inserted';
59143 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59144 f_int2 = CAST(f_char1 AS SIGNED INT),
59145 f_charbig = CONCAT('===',f_char1,'===')
59146 WHERE f_charbig = 'was updated';
59147 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59148 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
59149 FROM t0_template source_tab
59150 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
59152 # check replace success: 1
59154 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
59156 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
59157 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
59158 UPDATE t1 SET f_int2 = f_int1,
59159 f_char1 = CAST(f_int1 AS CHAR),
59160 f_char2 = CAST(f_int1 AS CHAR),
59161 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
59162 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
59164 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59165 SELECT f_int1, f_int1, '', '', 'was inserted'
59166 FROM t0_template source_tab
59167 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
59169 # check transactions-1 success: 1
59172 # check transactions-2 success: 1
59175 # check transactions-3 success: 1
59176 DELETE FROM t1 WHERE f_charbig = 'was inserted';
59180 # check transactions-4 success: 1
59181 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59182 SELECT f_int1, f_int1, '', '', 'was inserted'
59183 FROM t0_template source_tab
59184 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
59186 # check transactions-5 success: 1
59189 # check transactions-6 success: 1
59190 # INFO: Storage engine used for t1 seems to be transactional.
59193 # check transactions-7 success: 1
59194 DELETE FROM t1 WHERE f_charbig = 'was inserted';
59196 SET @@session.sql_mode = 'traditional';
59197 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
59198 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59199 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
59200 '', '', 'was inserted' FROM t0_template
59201 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
59202 ERROR 22012: Division by 0
59205 # check transactions-8 success: 1
59206 # INFO: Storage engine used for t1 seems to be able to revert
59207 # changes made by the failing statement.
59208 SET @@session.sql_mode = '';
59210 DELETE FROM t1 WHERE f_charbig = 'was inserted';
59212 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
59214 # check special-1 success: 1
59215 UPDATE t1 SET f_charbig = '';
59217 # check special-2 success: 1
59218 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
59219 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59220 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
59221 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59222 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59223 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59224 'just inserted' FROM t0_template
59225 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59226 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
59228 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59229 f_charbig = 'updated by trigger'
59230 WHERE f_int1 = new.f_int1;
59232 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59233 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
59234 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59236 # check trigger-1 success: 1
59237 DROP TRIGGER trg_1;
59238 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59239 f_int2 = CAST(f_char1 AS SIGNED INT),
59240 f_charbig = 'just inserted'
59241 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59243 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59244 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59245 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59246 'just inserted' FROM t0_template
59247 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59248 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
59250 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59251 f_charbig = 'updated by trigger'
59252 WHERE f_int1 = new.f_int1;
59254 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59255 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
59256 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59258 # check trigger-2 success: 1
59259 DROP TRIGGER trg_1;
59260 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59261 f_int2 = CAST(f_char1 AS SIGNED INT),
59262 f_charbig = 'just inserted'
59263 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59265 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59266 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59267 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59268 'just inserted' FROM t0_template
59269 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59270 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
59272 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59273 f_charbig = 'updated by trigger'
59274 WHERE f_int1 = new.f_int1;
59276 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
59277 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59279 # check trigger-3 success: 1
59280 DROP TRIGGER trg_1;
59281 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59282 f_int2 = CAST(f_char1 AS SIGNED INT),
59283 f_charbig = 'just inserted'
59284 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59286 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59287 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59288 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59289 'just inserted' FROM t0_template
59290 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59291 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
59293 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59294 f_charbig = 'updated by trigger'
59295 WHERE f_int1 = - old.f_int1;
59297 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
59298 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59300 # check trigger-4 success: 1
59301 DROP TRIGGER trg_1;
59302 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59303 f_int2 = CAST(f_char1 AS SIGNED INT),
59304 f_charbig = 'just inserted'
59305 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59307 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59308 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59309 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59310 'just inserted' FROM t0_template
59311 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59312 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
59314 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59315 f_charbig = 'updated by trigger'
59316 WHERE f_int1 = new.f_int1;
59318 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
59319 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59321 # check trigger-5 success: 1
59322 DROP TRIGGER trg_1;
59323 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59324 f_int2 = CAST(f_char1 AS SIGNED INT),
59325 f_charbig = 'just inserted'
59326 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59328 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59329 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59330 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59331 'just inserted' FROM t0_template
59332 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59333 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
59335 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59336 f_charbig = 'updated by trigger'
59337 WHERE f_int1 = - old.f_int1;
59339 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
59340 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59342 # check trigger-6 success: 1
59343 DROP TRIGGER trg_1;
59344 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59345 f_int2 = CAST(f_char1 AS SIGNED INT),
59346 f_charbig = 'just inserted'
59347 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59349 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59350 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59351 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59352 'just inserted' FROM t0_template
59353 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59354 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
59356 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59357 f_charbig = 'updated by trigger'
59358 WHERE f_int1 = - old.f_int1;
59361 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59363 # check trigger-7 success: 1
59364 DROP TRIGGER trg_1;
59365 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59366 f_int2 = CAST(f_char1 AS SIGNED INT),
59367 f_charbig = 'just inserted'
59368 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59370 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59371 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59372 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59373 'just inserted' FROM t0_template
59374 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59375 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
59377 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59378 f_charbig = 'updated by trigger'
59379 WHERE f_int1 = - old.f_int1;
59382 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59384 # check trigger-8 success: 1
59385 DROP TRIGGER trg_1;
59386 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59387 f_int2 = CAST(f_char1 AS SIGNED INT),
59388 f_charbig = 'just inserted'
59389 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59391 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59393 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59394 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
59396 SET new.f_int1 = old.f_int1 + @max_row,
59397 new.f_int2 = old.f_int2 - @max_row,
59398 new.f_charbig = '####updated per update trigger####';
59401 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
59402 f_charbig = '####updated per update statement itself####';
59404 # check trigger-9 success: 1
59405 DROP TRIGGER trg_2;
59406 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59407 f_int2 = CAST(f_char1 AS SIGNED INT),
59408 f_charbig = CONCAT('===',f_char1,'===');
59409 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
59411 SET new.f_int1 = new.f_int1 + @max_row,
59412 new.f_int2 = new.f_int2 - @max_row,
59413 new.f_charbig = '####updated per update trigger####';
59416 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
59417 f_charbig = '####updated per update statement itself####';
59419 # check trigger-10 success: 1
59420 DROP TRIGGER trg_2;
59421 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59422 f_int2 = CAST(f_char1 AS SIGNED INT),
59423 f_charbig = CONCAT('===',f_char1,'===');
59424 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
59426 SET new.f_int1 = @my_max1 + @counter,
59427 new.f_int2 = @my_min2 - @counter,
59428 new.f_charbig = '####updated per insert trigger####';
59429 SET @counter = @counter + 1;
59432 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
59433 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59434 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
59435 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
59436 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
59438 DROP TRIGGER trg_3;
59440 # check trigger-11 success: 1
59442 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
59443 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
59444 AND f_charbig = '####updated per insert trigger####';
59445 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
59447 SET new.f_int1 = @my_max1 + @counter,
59448 new.f_int2 = @my_min2 - @counter,
59449 new.f_charbig = '####updated per insert trigger####';
59450 SET @counter = @counter + 1;
59453 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
59454 INSERT INTO t1 (f_char1, f_char2, f_charbig)
59455 SELECT CAST(f_int1 AS CHAR),
59456 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
59457 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
59459 DROP TRIGGER trg_3;
59461 # check trigger-12 success: 1
59463 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
59464 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
59465 AND f_charbig = '####updated per insert trigger####';
59467 Table Op Msg_type Msg_text
59468 test.t1 analyze status OK
59469 CHECK TABLE t1 EXTENDED;
59470 Table Op Msg_type Msg_text
59471 test.t1 check status OK
59472 CHECKSUM TABLE t1 EXTENDED;
59474 test.t1 <some_value>
59476 Table Op Msg_type Msg_text
59477 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
59478 test.t1 optimize status OK
59479 # check layout success: 1
59480 REPAIR TABLE t1 EXTENDED;
59481 Table Op Msg_type Msg_text
59482 test.t1 repair note The storage engine for the table doesn't support repair
59483 # check layout success: 1
59486 # check TRUNCATE success: 1
59487 # check layout success: 1
59488 # End usability test (inc/partition_check.inc)
59495 f_charbig VARCHAR(1000)
59496 , UNIQUE INDEX uidx (f_int2,f_int1)
59498 PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
59499 (PARTITION part1 VALUES IN (0)
59500 (SUBPARTITION sp11, SUBPARTITION sp12),
59501 PARTITION part2 VALUES IN (1)
59502 (SUBPARTITION sp21, SUBPARTITION sp22),
59503 PARTITION part3 VALUES IN (2)
59504 (SUBPARTITION sp31, SUBPARTITION sp32),
59505 PARTITION part4 VALUES IN (NULL)
59506 (SUBPARTITION sp41, SUBPARTITION sp42));
59507 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59508 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
59509 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
59510 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
59511 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59512 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
59513 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
59514 # Start usability test (inc/partition_check.inc)
59516 SHOW CREATE TABLE t1;
59518 t1 CREATE TABLE `t1` (
59519 `f_int1` mediumint(9) DEFAULT NULL,
59520 `f_int2` mediumint(9) DEFAULT NULL,
59521 `f_char1` char(20) DEFAULT NULL,
59522 `f_char2` char(20) DEFAULT NULL,
59523 `f_charbig` varchar(1000) DEFAULT NULL,
59524 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
59525 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
59526 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
59527 SUBPARTITION BY HASH (f_int2 + 1)
59528 (PARTITION part1 VALUES IN (0)
59529 (SUBPARTITION sp11 ENGINE = InnoDB,
59530 SUBPARTITION sp12 ENGINE = InnoDB),
59531 PARTITION part2 VALUES IN (1)
59532 (SUBPARTITION sp21 ENGINE = InnoDB,
59533 SUBPARTITION sp22 ENGINE = InnoDB),
59534 PARTITION part3 VALUES IN (2)
59535 (SUBPARTITION sp31 ENGINE = InnoDB,
59536 SUBPARTITION sp32 ENGINE = InnoDB),
59537 PARTITION part4 VALUES IN (NULL)
59538 (SUBPARTITION sp41 ENGINE = InnoDB,
59539 SUBPARTITION sp42 ENGINE = InnoDB)) */
59541 # check prerequisites-1 success: 1
59542 # check COUNT(*) success: 1
59543 # check MIN/MAX(f_int1) success: 1
59544 # check MIN/MAX(f_int2) success: 1
59545 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59546 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
59547 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
59548 WHERE f_int1 IN (2,3);
59549 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
59550 # check prerequisites-3 success: 1
59551 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
59552 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59553 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
59554 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
59555 WHERE f_int1 IN (2,3);
59556 DELETE FROM t1 WHERE f_charbig = 'delete me';
59557 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59558 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
59559 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
59560 WHERE f_int1 IN (2,3);
59561 DELETE FROM t1 WHERE f_charbig = 'delete me';
59562 # check read via f_int1 success: 1
59563 # check read via f_int2 success: 1
59565 # check multiple-1 success: 1
59566 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
59568 # check multiple-2 success: 1
59569 INSERT INTO t1 SELECT * FROM t0_template
59570 WHERE MOD(f_int1,3) = 0;
59572 # check multiple-3 success: 1
59573 UPDATE t1 SET f_int1 = f_int1 + @max_row
59574 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
59575 AND @max_row_div2 + @max_row_div4;
59577 # check multiple-4 success: 1
59579 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
59580 AND @max_row_div2 + @max_row_div4 + @max_row;
59582 # check multiple-5 success: 1
59583 SELECT COUNT(*) INTO @try_count FROM t0_template
59584 WHERE MOD(f_int1,3) = 0
59585 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
59586 SELECT COUNT(*) INTO @clash_count
59587 FROM t1 INNER JOIN t0_template USING(f_int1)
59588 WHERE MOD(f_int1,3) = 0
59589 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
59590 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
59592 SET f_int1 = @cur_value , f_int2 = @cur_value,
59593 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
59594 f_charbig = '#SINGLE#';
59596 # check single-1 success: 1
59597 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
59599 SET f_int1 = @cur_value , f_int2 = @cur_value,
59600 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
59601 f_charbig = '#SINGLE#';
59603 # check single-2 success: 1
59604 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
59605 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
59606 UPDATE t1 SET f_int1 = @cur_value2
59607 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
59609 # check single-3 success: 1
59610 SET @cur_value1= -1;
59611 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
59612 UPDATE t1 SET f_int1 = @cur_value1
59613 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
59615 # check single-4 success: 1
59616 SELECT MAX(f_int1) INTO @cur_value FROM t1;
59617 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
59619 # check single-5 success: 1
59620 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
59622 # check single-6 success: 1
59623 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
59625 Warning 1264 Out of range value for column 'f_int1' at row 1
59626 Warning 1264 Out of range value for column 'f_int2' at row 1
59628 # check single-7 success: 1
59629 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
59630 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
59631 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
59632 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
59633 f_charbig = '#NULL#';
59635 SET f_int1 = NULL , f_int2 = -@max_row,
59636 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
59637 f_charbig = '#NULL#';
59638 # check null success: 1
59640 # check null-1 success: 1
59641 UPDATE t1 SET f_int1 = -@max_row
59642 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
59643 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
59645 # check null-2 success: 1
59646 UPDATE t1 SET f_int1 = NULL
59647 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
59648 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
59650 # check null-3 success: 1
59652 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
59653 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
59655 # check null-4 success: 1
59657 WHERE f_int1 = 0 AND f_int2 = 0
59658 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
59659 AND f_charbig = '#NULL#';
59660 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59661 SELECT f_int1, f_int1, '', '', 'was inserted'
59662 FROM t0_template source_tab
59663 WHERE MOD(f_int1,3) = 0
59664 AND f_int1 BETWEEN @max_row_div2 AND @max_row
59666 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
59667 f_int2 = 2 * @max_row + source_tab.f_int1,
59668 f_charbig = 'was updated';
59670 # check unique-1-a success: 1
59672 # check unique-1-b success: 1
59673 DELETE FROM t1 WHERE f_charbig = 'was inserted';
59674 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59675 f_int2 = CAST(f_char1 AS SIGNED INT),
59676 f_charbig = CONCAT('===',f_char1,'===')
59677 WHERE f_charbig = 'was updated';
59678 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59679 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
59680 FROM t0_template source_tab
59681 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
59683 # check replace success: 1
59685 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
59687 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
59688 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
59689 UPDATE t1 SET f_int2 = f_int1,
59690 f_char1 = CAST(f_int1 AS CHAR),
59691 f_char2 = CAST(f_int1 AS CHAR),
59692 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
59693 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
59695 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59696 SELECT f_int1, f_int1, '', '', 'was inserted'
59697 FROM t0_template source_tab
59698 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
59700 # check transactions-1 success: 1
59703 # check transactions-2 success: 1
59706 # check transactions-3 success: 1
59707 DELETE FROM t1 WHERE f_charbig = 'was inserted';
59711 # check transactions-4 success: 1
59712 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59713 SELECT f_int1, f_int1, '', '', 'was inserted'
59714 FROM t0_template source_tab
59715 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
59717 # check transactions-5 success: 1
59720 # check transactions-6 success: 1
59721 # INFO: Storage engine used for t1 seems to be transactional.
59724 # check transactions-7 success: 1
59725 DELETE FROM t1 WHERE f_charbig = 'was inserted';
59727 SET @@session.sql_mode = 'traditional';
59728 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
59729 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59730 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
59731 '', '', 'was inserted' FROM t0_template
59732 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
59733 ERROR 22012: Division by 0
59736 # check transactions-8 success: 1
59737 # INFO: Storage engine used for t1 seems to be able to revert
59738 # changes made by the failing statement.
59739 SET @@session.sql_mode = '';
59741 DELETE FROM t1 WHERE f_charbig = 'was inserted';
59743 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
59745 # check special-1 success: 1
59746 UPDATE t1 SET f_charbig = '';
59748 # check special-2 success: 1
59749 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
59750 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59751 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
59752 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59753 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59754 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59755 'just inserted' FROM t0_template
59756 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59757 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
59759 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59760 f_charbig = 'updated by trigger'
59761 WHERE f_int1 = new.f_int1;
59763 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59764 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
59765 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59767 # check trigger-1 success: 1
59768 DROP TRIGGER trg_1;
59769 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59770 f_int2 = CAST(f_char1 AS SIGNED INT),
59771 f_charbig = 'just inserted'
59772 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59774 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59775 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59776 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59777 'just inserted' FROM t0_template
59778 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59779 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
59781 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59782 f_charbig = 'updated by trigger'
59783 WHERE f_int1 = new.f_int1;
59785 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59786 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
59787 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59789 # check trigger-2 success: 1
59790 DROP TRIGGER trg_1;
59791 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59792 f_int2 = CAST(f_char1 AS SIGNED INT),
59793 f_charbig = 'just inserted'
59794 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59796 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59797 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59798 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59799 'just inserted' FROM t0_template
59800 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59801 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
59803 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59804 f_charbig = 'updated by trigger'
59805 WHERE f_int1 = new.f_int1;
59807 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
59808 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59810 # check trigger-3 success: 1
59811 DROP TRIGGER trg_1;
59812 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59813 f_int2 = CAST(f_char1 AS SIGNED INT),
59814 f_charbig = 'just inserted'
59815 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59817 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59818 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59819 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59820 'just inserted' FROM t0_template
59821 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59822 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
59824 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59825 f_charbig = 'updated by trigger'
59826 WHERE f_int1 = - old.f_int1;
59828 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
59829 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59831 # check trigger-4 success: 1
59832 DROP TRIGGER trg_1;
59833 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59834 f_int2 = CAST(f_char1 AS SIGNED INT),
59835 f_charbig = 'just inserted'
59836 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59838 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59839 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59840 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59841 'just inserted' FROM t0_template
59842 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59843 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
59845 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59846 f_charbig = 'updated by trigger'
59847 WHERE f_int1 = new.f_int1;
59849 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
59850 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59852 # check trigger-5 success: 1
59853 DROP TRIGGER trg_1;
59854 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59855 f_int2 = CAST(f_char1 AS SIGNED INT),
59856 f_charbig = 'just inserted'
59857 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59859 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59860 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59861 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59862 'just inserted' FROM t0_template
59863 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59864 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
59866 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59867 f_charbig = 'updated by trigger'
59868 WHERE f_int1 = - old.f_int1;
59870 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
59871 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59873 # check trigger-6 success: 1
59874 DROP TRIGGER trg_1;
59875 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59876 f_int2 = CAST(f_char1 AS SIGNED INT),
59877 f_charbig = 'just inserted'
59878 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59880 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59881 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59882 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59883 'just inserted' FROM t0_template
59884 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59885 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
59887 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59888 f_charbig = 'updated by trigger'
59889 WHERE f_int1 = - old.f_int1;
59892 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59894 # check trigger-7 success: 1
59895 DROP TRIGGER trg_1;
59896 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59897 f_int2 = CAST(f_char1 AS SIGNED INT),
59898 f_charbig = 'just inserted'
59899 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59901 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59902 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
59903 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
59904 'just inserted' FROM t0_template
59905 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59906 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
59908 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
59909 f_charbig = 'updated by trigger'
59910 WHERE f_int1 = - old.f_int1;
59913 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
59915 # check trigger-8 success: 1
59916 DROP TRIGGER trg_1;
59917 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59918 f_int2 = CAST(f_char1 AS SIGNED INT),
59919 f_charbig = 'just inserted'
59920 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
59922 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59924 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
59925 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
59927 SET new.f_int1 = old.f_int1 + @max_row,
59928 new.f_int2 = old.f_int2 - @max_row,
59929 new.f_charbig = '####updated per update trigger####';
59932 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
59933 f_charbig = '####updated per update statement itself####';
59935 # check trigger-9 success: 1
59936 DROP TRIGGER trg_2;
59937 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59938 f_int2 = CAST(f_char1 AS SIGNED INT),
59939 f_charbig = CONCAT('===',f_char1,'===');
59940 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
59942 SET new.f_int1 = new.f_int1 + @max_row,
59943 new.f_int2 = new.f_int2 - @max_row,
59944 new.f_charbig = '####updated per update trigger####';
59947 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
59948 f_charbig = '####updated per update statement itself####';
59950 # check trigger-10 success: 1
59951 DROP TRIGGER trg_2;
59952 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
59953 f_int2 = CAST(f_char1 AS SIGNED INT),
59954 f_charbig = CONCAT('===',f_char1,'===');
59955 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
59957 SET new.f_int1 = @my_max1 + @counter,
59958 new.f_int2 = @my_min2 - @counter,
59959 new.f_charbig = '####updated per insert trigger####';
59960 SET @counter = @counter + 1;
59963 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
59964 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
59965 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
59966 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
59967 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
59969 DROP TRIGGER trg_3;
59971 # check trigger-11 success: 1
59973 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
59974 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
59975 AND f_charbig = '####updated per insert trigger####';
59976 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
59978 SET new.f_int1 = @my_max1 + @counter,
59979 new.f_int2 = @my_min2 - @counter,
59980 new.f_charbig = '####updated per insert trigger####';
59981 SET @counter = @counter + 1;
59984 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
59985 INSERT INTO t1 (f_char1, f_char2, f_charbig)
59986 SELECT CAST(f_int1 AS CHAR),
59987 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
59988 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
59990 DROP TRIGGER trg_3;
59992 # check trigger-12 success: 1
59994 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
59995 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
59996 AND f_charbig = '####updated per insert trigger####';
59998 Table Op Msg_type Msg_text
59999 test.t1 analyze status OK
60000 CHECK TABLE t1 EXTENDED;
60001 Table Op Msg_type Msg_text
60002 test.t1 check status OK
60003 CHECKSUM TABLE t1 EXTENDED;
60005 test.t1 <some_value>
60007 Table Op Msg_type Msg_text
60008 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
60009 test.t1 optimize status OK
60010 # check layout success: 1
60011 REPAIR TABLE t1 EXTENDED;
60012 Table Op Msg_type Msg_text
60013 test.t1 repair note The storage engine for the table doesn't support repair
60014 # check layout success: 1
60017 # check TRUNCATE success: 1
60018 # check layout success: 1
60019 # End usability test (inc/partition_check.inc)
60026 f_charbig VARCHAR(1000)
60027 , UNIQUE INDEX uidx (f_int2,f_int1)
60029 PARTITION BY LIST(ABS(MOD(f_int1,2)))
60030 SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
60031 (PARTITION part1 VALUES IN (0),
60032 PARTITION part2 VALUES IN (1),
60033 PARTITION part3 VALUES IN (NULL));
60034 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
60035 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
60036 WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
60037 ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT;
60038 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
60039 SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
60040 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
60041 # Start usability test (inc/partition_check.inc)
60043 SHOW CREATE TABLE t1;
60045 t1 CREATE TABLE `t1` (
60046 `f_int1` mediumint(9) DEFAULT NULL,
60047 `f_int2` mediumint(9) DEFAULT NULL,
60048 `f_char1` char(20) DEFAULT NULL,
60049 `f_char2` char(20) DEFAULT NULL,
60050 `f_charbig` varchar(1000) DEFAULT NULL,
60051 UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
60052 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
60053 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
60054 SUBPARTITION BY KEY (f_int2)
60056 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
60057 PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
60058 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
60060 # check prerequisites-1 success: 1
60061 # check COUNT(*) success: 1
60062 # check MIN/MAX(f_int1) success: 1
60063 # check MIN/MAX(f_int2) success: 1
60064 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60065 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
60066 CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
60067 WHERE f_int1 IN (2,3);
60068 ERROR 23000: Duplicate entry '2-2' for key 'uidx'
60069 # check prerequisites-3 success: 1
60070 # INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
60071 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60072 SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
60073 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
60074 WHERE f_int1 IN (2,3);
60075 DELETE FROM t1 WHERE f_charbig = 'delete me';
60076 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60077 SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
60078 CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
60079 WHERE f_int1 IN (2,3);
60080 DELETE FROM t1 WHERE f_charbig = 'delete me';
60081 # check read via f_int1 success: 1
60082 # check read via f_int2 success: 1
60084 # check multiple-1 success: 1
60085 DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
60087 # check multiple-2 success: 1
60088 INSERT INTO t1 SELECT * FROM t0_template
60089 WHERE MOD(f_int1,3) = 0;
60091 # check multiple-3 success: 1
60092 UPDATE t1 SET f_int1 = f_int1 + @max_row
60093 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
60094 AND @max_row_div2 + @max_row_div4;
60096 # check multiple-4 success: 1
60098 WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
60099 AND @max_row_div2 + @max_row_div4 + @max_row;
60101 # check multiple-5 success: 1
60102 SELECT COUNT(*) INTO @try_count FROM t0_template
60103 WHERE MOD(f_int1,3) = 0
60104 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
60105 SELECT COUNT(*) INTO @clash_count
60106 FROM t1 INNER JOIN t0_template USING(f_int1)
60107 WHERE MOD(f_int1,3) = 0
60108 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
60109 SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
60111 SET f_int1 = @cur_value , f_int2 = @cur_value,
60112 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
60113 f_charbig = '#SINGLE#';
60115 # check single-1 success: 1
60116 SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
60118 SET f_int1 = @cur_value , f_int2 = @cur_value,
60119 f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
60120 f_charbig = '#SINGLE#';
60122 # check single-2 success: 1
60123 SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
60124 SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
60125 UPDATE t1 SET f_int1 = @cur_value2
60126 WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
60128 # check single-3 success: 1
60129 SET @cur_value1= -1;
60130 SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
60131 UPDATE t1 SET f_int1 = @cur_value1
60132 WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
60134 # check single-4 success: 1
60135 SELECT MAX(f_int1) INTO @cur_value FROM t1;
60136 DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
60138 # check single-5 success: 1
60139 DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
60141 # check single-6 success: 1
60142 INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
60144 Warning 1264 Out of range value for column 'f_int1' at row 1
60145 Warning 1264 Out of range value for column 'f_int2' at row 1
60147 # check single-7 success: 1
60148 DELETE FROM t1 WHERE f_charbig = '#2147483647##';
60149 DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
60150 INSERT t1 SET f_int1 = 0 , f_int2 = 0,
60151 f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
60152 f_charbig = '#NULL#';
60154 SET f_int1 = NULL , f_int2 = -@max_row,
60155 f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
60156 f_charbig = '#NULL#';
60157 # check null success: 1
60159 # check null-1 success: 1
60160 UPDATE t1 SET f_int1 = -@max_row
60161 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
60162 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
60164 # check null-2 success: 1
60165 UPDATE t1 SET f_int1 = NULL
60166 WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
60167 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
60169 # check null-3 success: 1
60171 WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
60172 AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
60174 # check null-4 success: 1
60176 WHERE f_int1 = 0 AND f_int2 = 0
60177 AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
60178 AND f_charbig = '#NULL#';
60179 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60180 SELECT f_int1, f_int1, '', '', 'was inserted'
60181 FROM t0_template source_tab
60182 WHERE MOD(f_int1,3) = 0
60183 AND f_int1 BETWEEN @max_row_div2 AND @max_row
60185 UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
60186 f_int2 = 2 * @max_row + source_tab.f_int1,
60187 f_charbig = 'was updated';
60189 # check unique-1-a success: 1
60191 # check unique-1-b success: 1
60192 DELETE FROM t1 WHERE f_charbig = 'was inserted';
60193 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60194 f_int2 = CAST(f_char1 AS SIGNED INT),
60195 f_charbig = CONCAT('===',f_char1,'===')
60196 WHERE f_charbig = 'was updated';
60197 REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60198 SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
60199 FROM t0_template source_tab
60200 WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
60202 # check replace success: 1
60204 WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
60206 WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
60207 f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
60208 UPDATE t1 SET f_int2 = f_int1,
60209 f_char1 = CAST(f_int1 AS CHAR),
60210 f_char2 = CAST(f_int1 AS CHAR),
60211 f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
60212 WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
60214 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60215 SELECT f_int1, f_int1, '', '', 'was inserted'
60216 FROM t0_template source_tab
60217 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
60219 # check transactions-1 success: 1
60222 # check transactions-2 success: 1
60225 # check transactions-3 success: 1
60226 DELETE FROM t1 WHERE f_charbig = 'was inserted';
60230 # check transactions-4 success: 1
60231 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60232 SELECT f_int1, f_int1, '', '', 'was inserted'
60233 FROM t0_template source_tab
60234 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
60236 # check transactions-5 success: 1
60239 # check transactions-6 success: 1
60240 # INFO: Storage engine used for t1 seems to be transactional.
60243 # check transactions-7 success: 1
60244 DELETE FROM t1 WHERE f_charbig = 'was inserted';
60246 SET @@session.sql_mode = 'traditional';
60247 SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
60248 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60249 SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
60250 '', '', 'was inserted' FROM t0_template
60251 WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
60252 ERROR 22012: Division by 0
60255 # check transactions-8 success: 1
60256 # INFO: Storage engine used for t1 seems to be able to revert
60257 # changes made by the failing statement.
60258 SET @@session.sql_mode = '';
60260 DELETE FROM t1 WHERE f_charbig = 'was inserted';
60262 UPDATE t1 SET f_charbig = REPEAT('b', 1000);
60264 # check special-1 success: 1
60265 UPDATE t1 SET f_charbig = '';
60267 # check special-2 success: 1
60268 UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
60269 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
60270 SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
60271 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60272 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60273 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60274 'just inserted' FROM t0_template
60275 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60276 CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
60278 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60279 f_charbig = 'updated by trigger'
60280 WHERE f_int1 = new.f_int1;
60282 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60283 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
60284 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60286 # check trigger-1 success: 1
60287 DROP TRIGGER trg_1;
60288 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60289 f_int2 = CAST(f_char1 AS SIGNED INT),
60290 f_charbig = 'just inserted'
60291 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60293 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60294 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60295 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60296 'just inserted' FROM t0_template
60297 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60298 CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
60300 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60301 f_charbig = 'updated by trigger'
60302 WHERE f_int1 = new.f_int1;
60304 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60305 SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
60306 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60308 # check trigger-2 success: 1
60309 DROP TRIGGER trg_1;
60310 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60311 f_int2 = CAST(f_char1 AS SIGNED INT),
60312 f_charbig = 'just inserted'
60313 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60315 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60316 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60317 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60318 'just inserted' FROM t0_template
60319 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60320 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
60322 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60323 f_charbig = 'updated by trigger'
60324 WHERE f_int1 = new.f_int1;
60326 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
60327 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60329 # check trigger-3 success: 1
60330 DROP TRIGGER trg_1;
60331 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60332 f_int2 = CAST(f_char1 AS SIGNED INT),
60333 f_charbig = 'just inserted'
60334 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60336 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60337 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60338 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60339 'just inserted' FROM t0_template
60340 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60341 CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
60343 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60344 f_charbig = 'updated by trigger'
60345 WHERE f_int1 = - old.f_int1;
60347 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
60348 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60350 # check trigger-4 success: 1
60351 DROP TRIGGER trg_1;
60352 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60353 f_int2 = CAST(f_char1 AS SIGNED INT),
60354 f_charbig = 'just inserted'
60355 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60357 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60358 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60359 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60360 'just inserted' FROM t0_template
60361 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60362 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
60364 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60365 f_charbig = 'updated by trigger'
60366 WHERE f_int1 = new.f_int1;
60368 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
60369 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60371 # check trigger-5 success: 1
60372 DROP TRIGGER trg_1;
60373 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60374 f_int2 = CAST(f_char1 AS SIGNED INT),
60375 f_charbig = 'just inserted'
60376 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60378 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60379 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60380 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60381 'just inserted' FROM t0_template
60382 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60383 CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
60385 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60386 f_charbig = 'updated by trigger'
60387 WHERE f_int1 = - old.f_int1;
60389 UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
60390 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60392 # check trigger-6 success: 1
60393 DROP TRIGGER trg_1;
60394 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60395 f_int2 = CAST(f_char1 AS SIGNED INT),
60396 f_charbig = 'just inserted'
60397 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60399 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60400 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60401 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60402 'just inserted' FROM t0_template
60403 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60404 CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
60406 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60407 f_charbig = 'updated by trigger'
60408 WHERE f_int1 = - old.f_int1;
60411 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60413 # check trigger-7 success: 1
60414 DROP TRIGGER trg_1;
60415 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60416 f_int2 = CAST(f_char1 AS SIGNED INT),
60417 f_charbig = 'just inserted'
60418 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60420 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60421 INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
60422 SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
60423 'just inserted' FROM t0_template
60424 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60425 CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
60427 UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
60428 f_charbig = 'updated by trigger'
60429 WHERE f_int1 = - old.f_int1;
60432 WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
60434 # check trigger-8 success: 1
60435 DROP TRIGGER trg_1;
60436 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60437 f_int2 = CAST(f_char1 AS SIGNED INT),
60438 f_charbig = 'just inserted'
60439 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
60441 WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60443 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
60444 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
60446 SET new.f_int1 = old.f_int1 + @max_row,
60447 new.f_int2 = old.f_int2 - @max_row,
60448 new.f_charbig = '####updated per update trigger####';
60451 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
60452 f_charbig = '####updated per update statement itself####';
60454 # check trigger-9 success: 1
60455 DROP TRIGGER trg_2;
60456 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60457 f_int2 = CAST(f_char1 AS SIGNED INT),
60458 f_charbig = CONCAT('===',f_char1,'===');
60459 CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
60461 SET new.f_int1 = new.f_int1 + @max_row,
60462 new.f_int2 = new.f_int2 - @max_row,
60463 new.f_charbig = '####updated per update trigger####';
60466 SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
60467 f_charbig = '####updated per update statement itself####';
60469 # check trigger-10 success: 1
60470 DROP TRIGGER trg_2;
60471 UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
60472 f_int2 = CAST(f_char1 AS SIGNED INT),
60473 f_charbig = CONCAT('===',f_char1,'===');
60474 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
60476 SET new.f_int1 = @my_max1 + @counter,
60477 new.f_int2 = @my_min2 - @counter,
60478 new.f_charbig = '####updated per insert trigger####';
60479 SET @counter = @counter + 1;
60482 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
60483 INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
60484 SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
60485 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
60486 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
60488 DROP TRIGGER trg_3;
60490 # check trigger-11 success: 1
60492 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
60493 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
60494 AND f_charbig = '####updated per insert trigger####';
60495 CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
60497 SET new.f_int1 = @my_max1 + @counter,
60498 new.f_int2 = @my_min2 - @counter,
60499 new.f_charbig = '####updated per insert trigger####';
60500 SET @counter = @counter + 1;
60503 SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
60504 INSERT INTO t1 (f_char1, f_char2, f_charbig)
60505 SELECT CAST(f_int1 AS CHAR),
60506 CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
60507 WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
60509 DROP TRIGGER trg_3;
60511 # check trigger-12 success: 1
60513 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
60514 AND f_int2 <> CAST(f_char1 AS SIGNED INT)
60515 AND f_charbig = '####updated per insert trigger####';
60517 Table Op Msg_type Msg_text
60518 test.t1 analyze status OK
60519 CHECK TABLE t1 EXTENDED;
60520 Table Op Msg_type Msg_text
60521 test.t1 check status OK
60522 CHECKSUM TABLE t1 EXTENDED;
60524 test.t1 <some_value>
60526 Table Op Msg_type Msg_text
60527 test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
60528 test.t1 optimize status OK
60529 # check layout success: 1
60530 REPAIR TABLE t1 EXTENDED;
60531 Table Op Msg_type Msg_text
60532 test.t1 repair note The storage engine for the table doesn't support repair
60533 # check layout success: 1
60536 # check TRUNCATE success: 1
60537 # check layout success: 1
60538 # End usability test (inc/partition_check.inc)
60540 DROP VIEW IF EXISTS v1;
60541 DROP TABLE IF EXISTS t1;
60542 DROP TABLE IF EXISTS t0_aux;
60543 DROP TABLE IF EXISTS t0_definition;
60544 DROP TABLE IF EXISTS t0_template;